Rob Walling managed to generate a lot of interest in writing Personality Traits of the Best Software Developers. While I vaguely agree with Rob’s points, at some level reading it produces a feeling which I can only compare to finding a fingernail in your sandwich.
On this “perfect developer” profile, strikes me there are a couple of missing points (for starters!). Based on my own flawed view of things…
- Is passionate about what they do. Let’s face it – staring at a monitor for 8+ hours a day ain’t Rock N’ Roll (well for most of us anyway) – at some fundamental level you have to enjoy doing this stuff. Put another way – I’d rather work with a passionate trainee than a bored veteran.
- Has some humility. Being “wrong” is inevitable – you will write code that has bugs, you will produce suboptimal designs and you’re not an expert on everything – how would Linus fare with CSS? If you can’t admit you’re in the wrong, there’s little space to fix problems, learn from mistakes plus you’re probably hard to work with. Inverting this – between binary 0 and 1, there’s no room for ego. The danger, given you’re spending a fair chunk of your life at the keyboard, is your perceived self-worth becomes attached to your ability to hack – an affront to your code becomes a deeply personal attack…
More nit-picking in detail…
Do we really need the military analogy here? Personally I haven’t been repeatedly tortured and I very much doubt whether it would improve my ability to write code. More to the point I don’t find myself able to identify with with Vietnam war veterans and I’m not hoping for medals of honour. But then again I didn’t feel the need to purchase a Rambo survival knife as a teenager either, so perhaps I’m unusual. In general not a fan of analogy when it comes to programming – beyond the superficial, it serves only to trivialise discussion. And I wonder whether there might be be a trend here – The Vietnam of Computer Science makes some very valid points against ORM – just a shame about the first part.
Angered By Sloppy Code
Rob choose to quote this Paul Graham piece;
…people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent.
To my mind, if you can’t see why you’re better at something you’ve spent years studying and practicing, then you’ve failed to spot the glaringly obvious.
Breaking my own rule on analogy, way back when Nigel Short was getting whipped (again) by Garry Kasparov, remember an article (no link) comparing the players personalities – Garry Kasparov; eloquently spoken (in English), able to converse on a wide range of subjects other than chess, from world politics to music, charming – an “all rounder” vs. Nigel “My Life is Chess” Short – as exciting as drying paint. Another comparable duo – Paul Dirac, tending towards one-dimensional vs. Richard Feynman – Physicist and entertainer – able to “do” accessible Physics.
To me the above quote describes the one-dimensional nerd (if such a thing exists) – hopeless in all areas other than their chosen specialty. But there’s a bunch of reasons (or problems) which require multifaceted thinking, from being able to build usuable applications – understanding the user – to simple communication skills; not everyone works in a safe, nerd-only zone – most have to deal with “real people” as well.
On the point in question…
The worst nightmare for a great developer is to see someone else’s software gasping for air while bringing the rest of the system to its knees. It’s downright infuriating. And this isn’t limited to code; it can be bad installation packages, sloppy deployments, or a misspelled column name.
So what’s the response – run down the hall and start yelling at someone? Or point out the problem in a friendly manner, knowing that next week you might be on the receiving end?
Being able to see many shades of grey rather than black and white could be another point to add to the ideal profile. PHP (and security) is a good case in point – what strikes you as a smarter response: screaming PHP sucks or understanding that it’s popular and doing something to improve the situation?
Attention to Detail
Again a shades of grey thing. If you fail to see how your code fits into the bigger picture of your organisation (e.g. a startup where shipping a prototype is essential to next months pay check), no awards for having spent all your time optimizing a single search algorithm, while failing to produce that working demo.
Anyway – this isn’t really meant to criticize Rob (although it’s probably reading that way) – he confesses up front that the points he’s making are an extraction from his own experience…
And the the more I looked at what makes them so good, the more I realized they all share a handful of personality traits. Well, not exactly a handful, more like four.
Trouble is, in these days of blog powered W00t, claiming you have “four points to perfection” is going to get lept on. Reality just doesn’t shape up this way plus what Rob describes is not a reversible equation: if you find someone that fits the profile, it doesn’t mean you’ve got a great developer and I’d dispute that every great coder (if such a thing exists) has these traits.
And what is this Nietzschean obsession with programming greatness anyway? It’s almost as bad as those top ten lists.