Ask a hundred people what’s their definition of a “top software developer” and you’ll likely get a hundred different answers. Many definitions may cluster around “someone who can make the computer jump through hoops”, i.e. a technical virtuoso of some sort.
Personally, my definition of a top developer is somewhat different. My definition is someone who:
- Understands people and how they – as e.g. users – might find joy in interacting with software.
- Understands people and how best to get along with them – e.g. in a team, a business – to create “solutions”.
- Understands people and their needs – and how to attend to those needs by e.g. writing software.
- Understands herself or himself – e.g. her or his own biases, tastes, limitations and capabilities.
- Looks to improve themselves and – together with other people – the way their work works.
- Has a broad range of life experiences to draw upon for e.g. inspiration and insight.
- Is widely read and informed – and especially, not just technical books, articles, blogs, etc..
- Is different and thinks different – to the other people around them. A.k.a. Diversity.
- Seeks out and takes ownership wherever and whenever folks’ needs aren’t getting met.
Technical virtuosity, aptitude, coding talent, experience, domain knowledge, numeracy, ability to learn quickly, etc. are all nice-to-haves, but not core to being a “top developer” – at least, from the perspective of e.g. folks paying their wages.
My bottom line: I’d regard someone a “top developer” if they are highly effective in attending to folks’ needs. Although, just the idea of labelling someone “top”, or not, makes me feel uneasy for its implicitjudgmentalism.
“it’s not what you say, or know, or even who you are, it’s what you do that matters.”
I guess my definition is just one amongst that hundred.
The Three Virtues ~ Cf Larry Wall