5 Traits of an Excellent Developer (Part 1)
By: Huba Albu
Tags: Testing, Development, Clean Code, Technology, Values

* humble

* good communicator

* deep technical experience

* refactoring skills

Responsible

What does responsible mean in an everchanging software world? I face this question on a day-to-day basis and what I’ve learned is that no matter how optimistic we are, the number of developers is doubled every 5 years. FIVE years. This means that at any point in time half of the developers in the world, -in existence-, have less than 5 years of experience in programming. If we take this statement and combine it with all “modern” thinking CTOs, managers, transformation experts, people who are building teams and expect them to be self-organized,- since Scrum and Agile says so-, they hit a wall sooooooo hard and so soon. How can one expect that a developer who has 1–2–3–4–5 years of experience can be self-organized, can drive and deliver things alone, can have an educated guess how to write good code, can estimate a task, etc? Also, what does good code mean? Testable? Clean? Well-written? Readable?

This is where “responsibility” comes into the picture. Nowadays everybody (at least it is mainstream) tries to organize their work around Agile and Scrum/Kanban, expecting the benefits, but nobody is looking for individuals who have the values to show the way. For me talking about TDD, Agile, Scrum or any domain specific topic spiced with a little architecture and hardware is pointless, until the developers and other stakeholders do not take responsibility.

“At the end of the day one must take ownership and be able to say: I did this, and I am proud.”

To take responsibility, one must be confident and comfortable with the value produced. In the same way that one does not go to a doctor to tell him/her the diagnosis, the relevant people telling developers how to write code are the specialists in coding, who can be colleagues or other developers/teachers, who have experienced the pain of going through the rounds of test-code-refactor-code-validate cycle enough times themselves. You must get your hands dirty. I just can’t imagine a salesperson telling me that I can’t/am not allowed to write tests (unit or any other type) because that is not covered by a contract. My immediate answer is: been there… done it… ain’t good. Also, this is not up for debate. The values held by any developer should dictate writing good code, which implicitly means having tests to have the possibility to refactor and at one point be a friendly legacy code and having some of the benefits of a well written codebase.

Living up to our standards and values makes one responsible. Showing the way, -”This is the way — The Mandalorian”- for others and shaping the future of the company as a team/group makes one responsible. Giving proper explanation and living up to expectations, translating requirements to consumable questions, validating the possibility of the existence of the final software — to me this means being responsible. At the end of the day one must take ownership and say that I did this, and I am proud.

“The number of developers doubles every 5 years”

Conclusion

We can’t walk around in the world even 50 meters without interacting with some sort of software. If you just look around, in the walls there are wires which go to an electric panel, which is programmed. The same wires are connected to a router, which runs software on it. The phone, tablet, pc, they all run operating systems and hundreds of pieces of software, which are programmed by individual[S1] s like me and you. The internet, which makes this article possible, has hundreds of components, switches, gateways, computers, applications controlling the flow of logic.

If we don’t take responsibility in writing the software, we are in big trouble. Finding the right people and educating ourselves and others about the values of software development is more important than selling ourselves for a temporary income.