After being in the software development for ~8 years (active) I saw a thing or two. For sure I do not know it all but since the beginning I am trying to figure out what makes a great developer?
Is it lines of code, speed of resolving issues, communication, mentoring? What do we do as software engineers anyway?
What we do is simply – solving problems. It is important to remember that! And our skill lies in the efficiency with which we can resolve issues that pop up. Technology you love is merely a tool, a tool that helps us with solutions. Here is an unordered list of some problems we will face during our career:
- How do I help users get the value out of product I work on?
- How can I help customer support or other colleagues that receive feedback from the users be more efficient in their jobs?
- How can I help my company create value (so that I can receive payment for my services)?
- How can I improve efficiency of the engineering team?
- How do we write code so that new person can “hit the ground running”?
- How do we efficiently communicate to people in product roles about challenges and opportunities?
- How do we make sure code we wrote does what we meant it to do?
- How do we do accurate estimations?
- How do we create architectures that are easy to understand, modify and extend?
- How do we make sure our systems are performant and operational at all times?
- How do we approach testing of the systems we work on? How to organize automated tests and how detailed do they need to be?
- How do we write efficient algorithms that solve the right problem?
- How do we make sure we continuously learn and grow?
- How do we review PR in a respectful way while facilitating learning and improvements?
- How do we effectively make trade-offs (security vs. performance vs. fast to market vs. observability vs. code quality vs. …)?
- How do we improve the world we live in during the 40h per week we usually spend with our employers?
- …
As said, these are just some, unordered and they depend on your organization and circumstances.
Still, definition is the same, a great developer is a great problem solver and communicator. To improve our skills we need to learn about new developments in tech world, listen to our users/client/peers and share our mistakes openly and egolessly, over and over again.
PS: Dedicated posts about each of these questions are coming up!