The Programmer’s Canon
Mark Mzyk | December 23, 2007
It’s the holidays here in the US, and that means I have time off of work and plenty of time to think. Sitting next to me at this moment is a pile of reading material. I’ve got two issues of Wired, the latest New Yorker and Newsweek, Catch-22, and The Pragmatic Programmer. And of course there’s a laptop opened to blogs and my ever trusty moleskin. That list reveals a ton about me. My love of technology and my love of literature (any kind). That probably helps explain why I have a degree in Computer Science and a degree in English.
In studying English, no matter which niche of English you study, there will be a canon of books you’re expected to read. Just by going to high school in the United States you’ll brush up against the general English canon. It includes the likes of Shakespeare, with such plays as Hamlet and Macbeth, and begrudgingly I’ll admit to Romeo and Juliet being included as well. I like it well enough, but I prefer Hamlet and Macbeth.
Other works in the general English canon: 1984. Heart of Darkness. Moby Dick. Maybe you haven’t read all of it, but you likely read part of it. Don’t forget the ancient Greeks either: the Iliad and the Odyssey. If you start to explore sub-genres of English you’ll discover other canons for those areas. Take 18th Century British Literature for example. That canon includes Pamela, Tristam Shandy, and Joseph Andrews.
These are all the watershed works that define the experience of someone who has chosen to study that area. They give students of English the opportunity to speak a common vocabulary.
With that in mind, what is the canon of the computer scientist, the programmer? Which books provide us with our common vocabulary? Which books should every programmer be expected to read, and if you haven’t you’re scorned by your peers until you do?
I’ve only been in the field a short time, but I thought I’d share the list I’ve developed.
- The Pragmatic Programmer
- Code Complete
- The Agile Manifesto
- Design Patterns (GOF)
- The Mythical Man Month
- Refactoring
Surely there are others? What have I missed, or what on this list shouldn’t be included? It can only be a canon if it is generally agreed upon, and even then, it is never set in stone. A canon wouldn’t be valuable if it couldn’t change and adapt with the times.