Books are a waste of time. I know all of the basics – all I need is Google when I get stuck.
– Random Bad Coder
I feel sorry for our profession when I hear this, and I hear it often. The road to unmaintainable spaghetti is paved with windows broken by boiling frogs who program by coincidence without tracer bullets. I browse several websites and read many blogs, but they are fleeting: I get some news, maybe a tip. But the flesh on my body of knowledge comes from reading books and writing programs. While trying to describe why, I found a good quote over on Paul Allen‘s blog:
…one of the most important things Iâ€™ve learned in the last 10 years â€” (is) that the best use of my media time is in books. In Love is the Killer App, Tim Sanders argues that 80% of our learning time should be spent in books, since there is such a high concentration of lasting knowledge there.
When I interview developers, I always ask about their favourite technical book. If they say Refactoring or Pragmatic Programmer, I’m encouraged. If they say “VB.NET in 21 Days” or “Java 5 in 24 hours” I try not to flip the bozo bit. If they say The Art of Computer Programming they are probably lying. I stress mastering development as a craft over any other concerns; an important personal maxim is Technology expires; practice does not.
There are two components at play here: attitude and aptitude. Attitude is attacking each problem with all of your energy to find the most elegant solution (without overengineering — remember when YAGNI), and having fun doing it. Aptitude is building up a knowledge portfolio around concepts, not technologies. That way, platform doesn’t matter. If you need to write a little website with Ruby on Rails, or an enterprise system in J2EE, you’ll grok the domain and tools faster than a myopic “guru” in either technology will absorb your craftsmanship. If you can be a craftsman and a guru, you’ll be unstoppable!
Without excellent personnel, even good to excellent processes can only achieve marginal results.
– Capers Jones
Or, more succinctly: people improvement trumps process improvement. You must practice what you read, but an important investment in what Dave Thomas calls your Knowledge Portfolio is to read high quality books (while avoiding low level recipe books) at a comfortable pace (one per month would be outstanding, but 4 a year is better than nothing.)
Assuming that you accept this, unless you’ve been around for awhile you probably want me to make some recommendations. Well you’re in luck, because this piece just so happens to be the introduction to my reading list series. Once a week or so I’m going to recommend a book that has influenced me in some meaningful way. They won’t all be about programming, or even technology in general, but each one is guaranteed to enlighten the open mind.
Books in the series:
 Note that experience isn’t the end-all-be-all either — Kevin Henley said “20 years experience might be one year repeated 20 times.”