Skip to content

Instantly share code, notes, and snippets.

@robertlisaru
Last active August 30, 2023 23:00
Show Gist options
  • Save robertlisaru/66b648e8682c71954645949e01faf198 to your computer and use it in GitHub Desktop.
Save robertlisaru/66b648e8682c71954645949e01faf198 to your computer and use it in GitHub Desktop.
My fundamental masteries as a software engineer and why I think they are important

🐒 My fundamental masteries as a software engineer and why I think they are important:

masteries graph

What is popular in the tech world changes constantly, but these are some fundamental masteries that I think will always make a software engineer valuable. Here's why:

  • 📖 Base computer science knowledge: You learn new technologies, and adapt more efficiently with a solid base of core knowledge to build upon (algorithms, data structures, network protocols, the operating system, low level mechanisms, binary operations, etc). Formal education in Computer Science is the best way to build this base, in my opinion.
  • 🎯 Common sense and reasoning: It's important to know patterns, clean code, optimizations, and abstractions. But it's more important to know when to apply them. Applying them wrong, or at the wrong time, is often worse than not applying them at all. Performance is good to have, but should we spend half the sprint to make a button a few microseconds faster, while making the code less maintainable in the process? There's always a tradeoff between: performance, clean code (code that looks good in books), maintaiable code (code that's easy to modify when requirements change), delivery time, deadlines, tech debt, and team harmony. Also, common sense suggests we should stop nitpicking, as it degrades team harmony, kills development momentum, and distracts people from the more important problems.
  • 🤝 Communication and teamwork: We are people working with people to build tools for other people. Efficient communication between all the parts involved is mandatory for achieving meaningful results. But it's not always an easy task to find the perfect plan for meetings, presentations, standups, announcements and updates. In a software engineering team there's often at least one person who is not engineering software, but actually engineering people.
  • 💡 Information synthesis and self-learning: Knowing how to know. The skill of gaining skills. Finding information and learning on your own is something you will never stop doing as a software engineer. Take a look at your online search history and you will see that not a single day goes by without you seeking to learn. Therefore it is an important skill to polish, to be able to filter out the irrelevant information while focusing on what you need.
  • 🫶 Passion and enthusiasm: Work is hard sometimes, and we get tired. To be able to do your work with joy is not easy, but is a skill that can be learned. And if you learn to be passionate about your work, it will help you stay sane, and will make you a more enjoyable person to work with.
  • 🦎 Tehnical flexibility and adaptibility: Software engineers need to be flexible enough to adapt to the ever changing world of technology, in order to keep being software engineers. You can sink with your ship, or keep swimming to find a new one.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment