The Heroic Programmer

2007-04-21, , Comments

I recently chanced on a series of articles by Dave Thomas on his approach to writing a book. I first came across Dave Thomas and co-author Andy Hunt when I read “The Pragmatic Programmer: From Journeyman to Master” — a book which I rate as one of the best general programming titles — so I read the articles with interest.

The Hero’s Journey

In the second article Thomas suggests that all good technical books tell the same story, that of the hero’s journey: just as Odysseus had to overcome a sequence of monsters on his way home from the battle of Troy, so the modern reader must undertake a similar voyage. In Thomas’s own words:

The reader joins the book already faced with a major challenge — they need to learn some new technique or technology. They need to make a commitment to follow the path. Along the way, they need to learn stuff, try things, conquering increasingly difficult concepts and challenges. Eventually they graduate; they’ve learned what they came to learn. But they journey doesn’t end there. Like the hero, they then have to come home, bringing back what they learned.

It might seem strange to find anything heroic in, for example, learning how to use an editor however powerful that editor might be, but I agree with Thomas’s point: compelling technical writing should tell a story. Should that story always fit the hero’s journey archetype? I’m less sure 1, but it’s certainly a pattern I’ve often (subconsciously) used myself.

Flawed Heroes

Unlike Odysseus, modern literary heroes are flawed. They don’t have superhuman powers and their story doesn’t always end happily ever after. Modern technical authors understand this. You can’t teach anyone how to program in 21 days and a reader would be right to suspect a book which makes such a claim. The language used in the design patterns literature acknowledges this element of compromise explicitly: a solution to a problem emerges from conflicting forces, and will have consequences.

Similarly “pragmatic” is hardly a quality traditionally associated with heroism, yet it is the prominent word in the title of Thomas and Hunt’s most famous book, and indeed in their publishing business. Software development isn’t really about perfection, it’s about resolving problems and reaching working solutions; and by doing this well, perhaps we too can be heroes.

1 There’s much comedy, pathos and failure to be found in the real world of software development, and even the occasional tragedy — perhaps these stories aren’t appropriate for technical books, but they’re well worth telling. Certainly much software development could be characterised as farce: the repetition of the same old jokes and pratfalls.