Geek Smithology

March 5, 2006

Reading List – The Pragmatic Programmer

Filed under: Craft of Dev,Reading List by Nathan @ 8:14 pm

The Pragmatic Programmer – From Journeyman to Master
by Andy Hunt and Dave Thomas

Written with wit by two authors who write code for a living and like it, the Pragmatic Programmer is no pedant’s paradise; it’s a plethora of patterns prescribing the path of progress for programmers. A quintessential manual for aspiring problem solvers, almost every good developer has a copy of the Pragmatic Programmer on his bookshelf. The great ones have read it.

A few of the internet wags have proscribed it as mere common sense, but common sense isn’t. So much of the industry stubbornly clings to a promotion ladder that looks something like this

Junior developers will be maintenance bitches until enough disgruntled senior programmers leave out of frustration to make head room for promotions.

The fact is that development is a craft, and would be much better served by a mentor/protégé relationship that demands contextual and meaningful learning. This book makes a pretty good surrogate mentor.

There’s also the rich vocabulary the book brings to bear for the true believers. Broken Windows, Programming by Coincidence, Boiled Frogs, Tracer Bullets – mention any of these terms to a pragmatic practitioner and you’ll get the same look of instant recognition as you do discussing Strategies and States with a devout follower of Design Patterns.

I’ve enjoyed recommending this book to fellow developers, and can’t wait to discuss the ideas with them after their first run-through. You can see the light bulb shining and all the energy that comes with insight. If you don’t have this book, go get it and read it right now – it’s that good and that important.

This is part of the Reading List series.

December 15, 2005

Yes, you still need to read books.

Filed under: Craft of Dev,Reading List by Nathan @ 9:56 pm

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[1], 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:

1. The Pragmatic Programmer

[1] Note that experience isn’t the end-all-be-all either — Kevin Henley said “20 years experience might be one year repeated 20 times.”

Powered by WordPress