My Hackergotchi

Updated: Never — Philip's Blog

Now featuring regular updates!

Thu, 01 May 2008

00:04 – Programmers don't read books?

Our Microsoftie pal at Coding Horror boldly claims that programmers don't read books. Perhaps this is the case in the fuzzy world Jeff lives in, but my experience is vastly different. Most programmers I know treasure their books and tear through quite a number of them. Some canonical books are also pretty much on every desk or at least in a drawer or on a shelf not far away.

On my own desk at work are currently only two books. Mainly because I've been too lazy to drag any other books to work with me. They are TCP/IP Illustrated volumes 1 and 2. Yes - I have the sources to more than one IP stack at my fingertips, I have manual pages, I have Google but I still find it infinitely more efficient just to open The Book (often to pages or chapters I've memorized) to refresh my memory on whatever detail I happen to need.

Often on my desk too, are Advanced Programming in the UNIX Environment and UNIX Network Programming. Unlike the dry prose of manual pages or the cold (and occasionally twisted) logic of the source code, these tomes explain why. Of course, this is in sharp contrast to the "help, my socket program barfs, what am I doing wrong?"/"Perhaps you need to accept() the occasional connection?" kind of exchanges Google archives by the boatload.

At home on my bookshelf -- among loads of other crap -- I also have some books I would never want to live without.

I agree with Jeff about one thing:

"The best programming books are timeless. They transcend choice of language, IDE, or platform. They do not explain how, but why. If you feel compelled to clean house on your bookshelf every five years, trust me on this, you're buying the wrong programming books."

Most programmers I know subscribe to this statement. I happily do not have many dealings with the other kind of programmer. They kind who doesn't read. The kind who cleans out his bookshelf every five years or who has a stack of programming book pornography to flaunt. This kind of programmer appears not to be so abundant in the Unix or the embedded world.

To conclude, my top 5 - not in any particular order:

  • Code Reading - We spend most of our time reading code. Every trick helps. Good code reading skills are essential to survival in non-trivial software environments. I have blogged about this book before.
  • See MIPS Run - Even if you never touch a MIPS in your life, this book is required reading. It details loads of MIPSisms but also clarifies many generic aspects of hardware/software interfacing. Even way up in userspace with the pointy-clickiests, 'hardware/software interfaces' is what you're doing. Understand your hardware. It helps write better software.
  • The Mythical Man-Month - Yes, this is a programming book. If you do not understand this, go read it again. And again. And again. And hit anyone who tries to pull a Mythical Man-Month on you over the head with it.
  • Beautiful Code - This is a fairly recent book. It has some very nifty ideas in it. Go read it.
  • The C Programming Language - No matter what language you're writing, if it's not C, you must be doing something wrong. ;-) More seriously: C forms the basis of most relevant programming languages and even many irrelevant ones borrow from it heavily.

Get reading!