The Agile Angel was reading an excellent blog the other day
http://blogs.atlassian.com/developer/2009/06/pair_programming_is_kryptonite.html
about the virtues of pair programming. Its a good piece of writing. However, somewhat predictably, several of those who commented on it went to some lengths to describe why pair programming was not suitable for them and other ‘Superhero’ developers. (yes Mr. Perez, she’s aiming this at you)
What a load of pish.
By way of a slight biographical diversion, pair programming was the main reason for the Angel’s Agile epiphany. She can still recall the day when, quite unexpectedly, a colleague furnished her with a copy of Extreme Programming Explained (1st Edition). As she turned the pages she began to salivate at the potential contained within this little book. It was as if all her doubts had been confirmed. It validated her uneasiness about the way software was currently being built and offerer her exciting strategies for change which resonated immediately and dramatically.
She devoured the text. And immediately re-read it.
What struck her most amongst all the suggested practices was Pair Programming. As she read about it suddenly it seemed so obvious, so logical. Why hadn’t she thought about it before?* This was truly radical. This could change the face of software development.
She could now see a healthy, life-affirming way to write code. She would no longer have to spend lonely hour after hour scratching her head, doubting her decisions, staring into space looking for answers. Instead this would be replaced by a truly intellectual dialogue between fellow professionals who would strive together to create wonderful software.
Looking around her office at the assembled, unwashed, geeks-for-a-living she could see there might be a few problems adopting this technique, but she hoped that in time when this practice was widely accepted that it would gradually change the nature of the stereotypical developer for the better. The ultra-geeks with their lack of personal skills and often similar lack of personal hygiene would give way to a new breed of software professionals who were erudite, charming, thoughtful and wise. Something like the gentlemen scholars of the Victorian age, she fancied.
She sat back in her chair and dreamed her dreams.
Unfortunately reality bit and of all the practices that XP espoused it seems that Pair Programming was the one that was destined to be the most contentious. It did not get universally accepted and still to this day it is the one practice that she finds hardest to introduce to any team. So called Super Heroes actually seem to despise it and yet it is the very technique designed to get the best out of them and their team.
Alas therefore her dreams of software erudition have not yet come to pass and every day her interest in development diminishes and contempt for her profession grows. But still she hopes, and waits. And as she waits so she feels she must combat the nonsense of the Superhero developer head-on whenever she sees it, lest Pair Programming shrivel and die.
To begin with the Angel would like to suggest a few characteristics that the so-called Superhero programmers tends to possess.
They consider themselves superior to their colleagues.
They tend to suffer from programming eccentricities such as needing to work in the middle of the night.
They are almost always their own judge of competence.
They think working with other no-super heroes is detrimental to their performance.
They overvalue their contribution in real terms.
And thus they dislike Pair Programming.
These Superheroes are very dangerous in the Angel’s opinion and notice how similar they are to the Twonk!
They consider themselves superior to their co-workers and in fact the Angel does not disagree that this might be the case but it is almost always meaningless. There are many, many Twonks in the workplace. Twonks against whom you may well compare very favourably. But this does not make you a Superhero. She reminds these would be caped crusaders that they need to look at the the sample-size from which they came. Excelling in comparison to Twonks means only that you are probably not a Twonk and even then there is no guarantee. Anyone can be a big fish when the pond is small or shallow enough.
More importantly ‘Superhero’ programmer is not a title you can bestow on yourself. It must come from the judgement of your betters. As she noted previously the adulation of Twonks is meaningless. They are not in a position, due to their own limitations, to know whether you truly are a superstar. You need people who are better than you to correctly assess whether you might belong among them and your organisation needs to be doing things considerably better than the competition for your achievements to mean anything.
If there is one characteristic that the Angel thinks all real Superheroes possess (especially the kind with capes) it is that they exist to help others. Therefore to dislike working with and helping your less gifted colleagues is a sure indication you are not among the Superhero classes. She agrees you could be talented but because you are not putting your powers at the disposal of the weak, you are in fact a Super Villain! You would rather rule supreme than lend others a helping hand.
And what of your so called Heroic contribution anyway? The Angel would like to point out the somewhat obvious fact that the vast majority of all software development is nothing new. She reckons that more then 99% of all new code written today is simply an instance of something that’s been done a thousand times before. There are limited opportunities for super-powered-code so how much contribution do they really think they are making? What’s the point of having the strength of a thousand men if all you are doing is carrying the shopping?
Software is actually, to paraphrase many poker writers, primarily a game of mistakes. What most companies need is not super heroic code (how many companies are really breaking the boundaries of software development?) but rather simple, straightforward, error free produce. It matters very little whether the super hero produces his** code with few errors if everyone else is introducing them by the dozen. Pair Programming helps eliminate defects. It is a safety guard and a very effective form of review. If you are a Super Hero then surely you are at your most effective when preventing others from bringing harm to codebase?
And finally the Angel needs to point out that even if the so-called Superhero is talented and can produce pretty impressive code (and lets face it it would have to be super humanely good wouldn’t it), unless they are prepared to embrace things like Pair Programming then they are overrating their contribution and missing the point of commercial software development because very few companies can get by on the amount of work a few Super Heroes can produce. Similarly, finding an army of such caped crusaders is a luxury most cannot afford. Therefore companies are always going to employ many more ‘normies’ than heroes. If these Super Heroes really understood commerce then they would quickly realise that the most important contribution they can make it to teach. Having one or two heroes may boost the team a little, but having a whole team of people learning from the Hero leads to far, far greater gains. Who knows, maybe even the creation of more Superheroes.
The Angel can think of few more effective ways to teach and to generate knowledge than Pair Programming. If you really are a Super Hero then pairing should be at the core of your beliefs. If it isn’t you are surely a Super Villain (or just a common criminal) as your only concern is to keep power for yourself.
She knows there are programmers who are real Superheroes out there because she has been lucky enough to pair with some. But they would be too humble to say so of course..
Peace.
*Its interesting to note that the very best ideas usually seem obvious with hindsight.
**And note how few self-proclaimed super heroes are women