Programmer’s Bookshelf

Jeff Atwood has long maintained an “Essential Reading” list of books for developers. I’ve been chugging my way along it dutifully, and as I continue to do so, I remain stunned that he hasn’t mentioned the most important development book I have yet read.

UPDATE: He’s mentioned it before, just not added it to the list. He includes it along with another excellent book by Weinberg in his post “Leading by Example.” Plus he one-ups me by including the timeless R. Lee Ermey. Damn!

Dale Carnegie’s How to Win Friends and Influence People is an incredibly great read. If you’ve never opened it, I know what you’re probably thinking after reading that title - it’s either awfully Machiavellian or awfully self-help sappy. I’ve recommended this book a bazillion times, and I hear that kind of response almost every time.

You’d be wrong on both accounts though. Once you start reading the book, it becomes clear that Carnegie really is interested in making you a nicer person. That’s pretty much his whole “win friends” philosophy in a nutshell: be nice and be considerate. That’s what he’s saying when he tells you to smile, or when he tells you to be genuinely interested in other people.

What about influencing people? There again, Carnegie writes from that same place, from trying to make people better human beings. His methods of “influencing” include such sinister motives as “Avoid arguments” and “Praise every improvement.” It’s all great, seemingly common-sense advice that I never would have realized but for his book.

So if this is great, general advice, why developers in particular then?

There’s a plethora of stereotypes about us nerds, almost all of them true. For instance, the development team here at the office recently went out for lunch, and a bystander saw this horde and said “You guys must be tech people, no one else dresses for work like they’re heading out to play softball.” Sure enough, we were all decked out in shorts and ironic and/or shabby t-shirts. No argument there.

But while that stereotype is true and mostly harmless, the popular notion of the socially awkward developer is just as true but much more harmful. That’s where this book comes in, because no matter how good a programmer you are, no one will care if you can’t communicate effectively. This book helps defeat that whole spectrum of developer awkwardness, including such favorites as:

  • I am clearly so much smarter than you; there’s nearly no point in trying to explain myself. (The most common developer quirk that I’ve seen)
  • Ugh, let’s get this over with quickly because I just need X from you.
  • I want to make sure you understand me, so I will never stop talking. (my personal demon)
  • I don’t quite know what I want to say or how I want to say it, so I will never stop talking. (Also extremely common)
  • I’m going to sound dumb, so I’d rather not talk.

While I’m phrasing this in terms of conversation, Carnegie’s advice applies in nearly all forms of communication. There’s not a single email I start without considering how I can start it with something immediately relevant to the audience’s interest. “In order to complete that webpage you requested, I need to know XYZ” is so much better at getting a quick response than “I need to know XYZ.”

Unless you are such a staggering genius that you are paid to go away and think of things, your ideas and your needs are only as valid as they can be communicated. So if you haven’t read this one yet, I challenge you not to pick up something useful from this book and not to get your paltry eight dollars’ worth from it.