What’s a great developer?
An email went around recently asking a few people what they thought constituted a successful developer.
My first thought was: did you mean successful or were really asking what is a great developer – since we all know a few lousy developers that have been very successful right? But that’d be just nit picking…
I trotted off some of my usual pointers eg a great developer will:
- be extremely intelligent
- take the initiative
- have no fear of the unknown
- complete a task (ie not leave it at 90%)
But then I thought about it some more, and I realised I had absolutely no idea what constituted a great developer. We probably know the result they have to achieve (eg a cost-effective, maintainable, efficient solution, etc), but what exactly are the characteristics of the person who achieves that? To me it’s usually been a matter of ‘I can’t tell you what a great developer looks like, but I know one when I see one’.
Luckily I didn’t send the email. Because this morning, reading through my feeds I see that Jeff Atwood has finally written a post worth linking to (ok, that’s a joke – he’s actually one of my favourite writers, but I’ve always wanted to throw in an off hand playing-down of his genius – it’s just my way of not feeling so inferior :-) ).
Anyway, back to Coding Horror. I think he’s caught the essence of what a great developer is: It’s someone who practices.
A few months back Steve Herzberg gave me a great reminder on winning in business. He recounted how business is like playing sport (Steve is a former professional cricketer, so sports metaphors tend to pop up). Just like the cricket team plays a match, you play the game of business. But the teams that win are the teams that practice – and the best teams spend much more time practicing (all those hours in the nets, etc) than they do playing the actual game. The obvious point being, if you are only turning up for the match (ie day to day in the office), but no time practicing after hours, then you won’t be winning too many games.
This applies at all levels, from the Junior developer up to the CEO.
So, great developers (and successful developers) are people who practice. How do you practice? Jeff’s post has a few ideas (and have a glance through the comments on his post – not everyone agrees with him).