I somehow got into thinking about this topic recently. There are, I’m sure, a number of lists of essential software readings for the software professional. These include books like Code Complete, The Mythical Man Month and The Art of Computer Programming. A quick search found me this lovely link listing (gulp) a hundred books. I’ve read only ten of them.
However, my pet grouse against fellow programmers is their singular vanity about how unique their profession is. (It’s my profession too, but I don’t have such illusions). Us programmers are like other humans(!) in many ways and the life lessons one learns (often the hard way) are similar.
Keeping that in mind, I present my list of essential non-software books for a software professional. This is a fairly personal list, but these are books that have shaped my thinking and beliefs over the years, and I think they’d make a great addition to the thinking software professional’s library.
Surely you’re joking, Mr. Feynman! - I think this should be essential reading for everyone, and not just engineers. It captures the playfulness and never-ending curiosity that Feynman brought to his profession and life. I’ve written at length on this book here.
Better - Atul Gawande is a very rare kind of writer: he manages to write about complicated topics (medicine, surgery, US healthcare policy) in a way that’s accessible and illuminating. Of the three books he’s written, Better remains my favorite. Gawande writes about performance in the medical profession from his vantage point as a surgeon and physician. Yet, he beautifully links the specific to the general, drawing out conclusions that are applicable to any person who’s trying to do better at her chosen profession/vocation. Again, a general read I’d recommend to anyone.
Outliers – Malcolm Gladwell gets a lot of flak, rightly or wrongly for his sometimes provocative theses. The Tipping Point was widely well-received when it came out and has been questioned since. I myself am a bit of fence-sitter on that book and I disliked his second effort, Blink. However, Outliers seemed to me like a much better work overall. In denying ‘genius’ as a pat explanation for all success, Gladwell gives a lot of credit to a combination of immense hard work and plain dumb luck.
I find his conclusions reassuring and daunting. 10,000 hours at anything, even something you love seems like a lot of work. But when I’ve seen senior engineers at work knock a task out the park while I’m still processing it, it’s encouraging to think that with enough conscious hard work, I can aspire to that kind of expertise.
The Last Lecture – I cheat here, in that this is not a book. I found the video of Randy Pausch’s last lecture a much more satisfying view, and the book was mostly a rehash of a lot of the material with some supporting material and detail. The original Last Lecture (more here), was pretty much perfect. It’s just over an hour, and if you haven’t, watch it already!
Again, like Feynman’s book, it combines a certain audacity of thinking with playfulness and a sense of humor. Importantly, it’s a healthy dose of perspective on what truly matters.
On Writing – Writing well is a craft software professionals ignore at their own peril. Writing cogently to make a point or to explain tough concepts is an art (see: Atul Gawande) and is an important part of professional growth. Stephen King does a great job of explaining his craft in this heart-warming book. Part memoir and part-how-to, it’s an entertaining and illuminating read.
This list is pretty basic and I leave out other books that I love, focusing more on books that I feel matter in a professional context. List-making exercises are ongoing, and I have this one from a few years back. That list too will see additions (including a couple from up here), and yes, I now own over 140 books. Book acquisitiveness is a habit that I can’t help.