What Makes You a Good Developer
Recently I was asked to write a letter of recommendation to a software developer in which there was a simple question that made me think hard. It was about the strongest quality of the candidate. Like, "name his best quality, and only one". Such a trivial question formulated a problem of the most important criterion of a developer.
Of course, the question is moot and everyone has their own opinion on this matter. Or, maybe, somebody doesn't have any yet, but they are often ready to argue with the existing ones and explain why you are wrong. That's why I will list several views heard from my colleagues before giving my own opinion in this regard. Clearly, I agree with far from all these opinions, but I am sure that behind each of them there is a compelling story from personal experience. Some of these stories are easy to guess, other ones I would be happy to listen to, and some of them can be only explained to a psychologist with dolls. So, here're these versions.
Surprisingly, I've got variants which included one of "the seven sins" of a candidate or their derivatives. All the seven deadly sins are: sociability, activity, hard working, determination, quick learning, diligence and stress resistance. The list can be extended with many other buzzwords all recruiters hate seeing on a resume. Undoubtedly, none of these deadly sins can be the most important criterion of a good developer. As well as any technical skills or specific knowledge, like "substantive knowledge of "A" library in "B" language" or "perfect understanding and adhering to HIPAA-standards". Of course, all these characteristics are very important, but they will never be the main criterion.
Some try to think outside the box and suggest laziness as a significant quality of a good developer. Like, a lazy programmer does everything right from the first time not to redo the work again later. But laziness can not be considered such a decisive quality, so as all of us are lazy by definition and everybody always strives to save energy and time at least on a subconscious level.
Many interviewees tried to find such a quality, that would be fundamental for all the other traits. The basis for the rest of qualities could be, for example, curiosity and perseverance. Like in a computer RPG, where there is a hierarchy of skills and talents developed consistently, and development of derivative skills depends on the initial qualities (or the only quality) of the character. However, in real life such an unambiguous hierarchy is difficult to build, if not impossible.
Some variants I got were not qualities per se, but abstract immeasurable concepts. Like "sense of beauty", "vision for the future", "desire to understand", "writing clean code", and "ability to solve tasks". Indeed, a good developer has a sense of beauty, writes code that is easy to support and can deal with problems. You know, if the developer is good, then he is good, yes.
Two opinions deserve special attention. Despite the irony, I really liked the following answer: «Knowing when to put off the keyboard and go to bed is one of the best skills you can get as an engineer». Another great criterion is the quality of questions asked by the developer. Questions should detect flaws or shortcomings and be able to change your opinion with new data obtained.
All right, it seems that I have already gone too far with intrigue and pathos on this main criterion. I definitely do not pretend to turn your worldview, but maybe this will make you look more closely at your colleagues and think who of them meets your criterion and whom you consider an awesome developer regardless of their work experience.
So, now about my view on this matter. Let's emphasize once again that there is no single primary characteristic, on which all the others depend and that could predetermine all the further developer's behaviour and success. Like, curiosity, learning ability or ability to express their thoughts clearly. Whatever essential feature you choose, there can always be another negative trait that neutralizes all positive effect. So called "antidote" or "inhibitor". That's why we should not try to find a main parent quality that "rules them all". We are looking for such a characteristic that, if it is present, then a developer is very likely to be a cool developer. Perhaps, we should pay attention primarily to it during job interviews. But this is not exactly.
In my opinion, the most important characteristic of a developer is an ability to deduction. A good developer should be able to instinctively make correct guess if he does not know exactly, draw conclusions with incomplete data and ask the right questions to get the necessary information. To be Sherlock Holmes, if you wish.
Share your thoughts on this matter! What criteria do you use when recruiting people to your team? Which one is the most important in your opinion?
Riter development team