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!