What makes a good developer?

(Somebody on Quora asked about “traits that the best programmers seem to have”. Here’s what I said.)

Breadth of understanding. They are not dogmatic. They have used (at least in passing) more than one language, framework, operating system – and understand the strong points of each.

Communication skills. They can explain their decisions. They can write code reviews. They can discuss their code.

Understanding that engineering is about tradeoffs. There is never an absolute “best” answer; there are always many choices each with their own sets of pros and cons.

Pragmatism. They focus on delivering functionality and have a suspicion of “clever” code.

Understanding that most of our work is maintenance. They write code to be read, and they aren’t afraid to refactor when it will make code easier to work with.