You have certainly heard of those rockstar developers who are 10x and 100x times more powerful and productive than others. What is their secret? What makes a good developer? Well, good or bad is always subjective. Good according to what metric? Taking drugs and damaging property does certainly not make you a rockstar developer. Often the rock star developers are simply 10x or 100x as productive because they use the code of 100 or 1000 other developers in a clever way.

I have been a developer for more than 20 years. During my life as a software developer I have met many kinds of developers. Ordinary people, young students, experienced veterans, etc. The best ones were often immigrants, newcomers, misfits, the round pegs in the square holes that Steve Jobs mentioned. The ones that were passionately curious, loved programming, and relentlessly debugged their programs. Because they had the constant drive to learn something new, and the burning desire to prove that they are something and can do special things.

What is a good developer? The ones that thought they were very good often were only good in a certain aspect they valued more than anything else. Some were obsessed with fast code, others were obsessed with beautiful code. While a certain amount of speed and beauty is certainly useful, obsession is rarely recommendable.  In real life there are always tradeoffs to make. Quality is important, and performance, too. Yet quality is not the same as beauty. And questions remain. How fast is fast enough? How beautiful is beautiful enough? Even your commit messages of the commits to the code repository result in a poem if you collect them, it does not mean that your code will work.

According to Larry Wall, the original author of the Perl programming language, there are three great virtues of a programmer: Laziness, Impatience and Hubris. Unfortunately all of them are more or less antisocial, but useful. A lazy developer will create less code, an impatient fast code, and an arrogant one beautiful code where you can be proud of. If you are one of them, then congratulations, you will probably have major difficulties to get along with others. They will become angry because of your lack of support, your impertinent laziness or arrogant remarks.

Getting along with others is an important ability, too. Applications are always developed by teams. If you are not able to work with others respectfully, then you will not be successful in the long run. Therefore for me a good developer is someone who produces less code, fast code, and beautiful code that works. All of these points are important. And at the same time this person should be humble enough to get along with others. That is not easy. Yet the basic requirements are easy and free: the willingness to learn new things and to explore the latest trends becaues technology is always evolving, and the willing to get along with others because programming always happens in teams.