Wednesday, December 13, 2006

Three Good Books

This year I've read (or reread) and enjoyed three 'programming' books that I thought were worth pointing out. They didn't pertain directly to any programming language, so they might not be on a lot of people's "I've gotta read this" lists, but myabe they should be. One of them is is from 1999 and the other two have roots that go back well before that.

The first one is The Pragmatic Programmer, by Dave Thomas and Andy Hunt. Even if you've read it before, this is a book well worth (re)reading. Many of the seventy tips (on a convenient Quick Reference Card even), color a lot of today's Ruby community: #11 Don't Repeat Yourself; #17 Program Close to the Problem Domain; #29 Write Code That Writes Code; #46 Test Your Estimates; #47 Refactor Early, Refactor Often; and #62 Test Early, Test Often, Test Automatically; and #66 Find Bugs Once should all be familiar to Ruby programmers. Some of their tips haven't gotten as much play: #4 Don't Live With Broken Windows; #36 Mimiize Coupling Between Modules, and #65 Test State Coverage, Not Code Coverage all deserve more respect and more application.

If you don't own this, get it onto your gift list (or just buy yourself a copy). If you do own it, buy a copy for someone else then go and reread your copy.

Software Conflict 2.0 (published in 2006) is a new edition of Software Conflict: Essays on the art and Science of Software Engineering (pubished in 1990). For this edition, Robert Glass (the original author) wrote new, retrospective essays looking back on each chapter of the original book. The new edition is a great 'jumping of point' for a reader unfamiliar with the classics of the field. Bob covers a huge amount of ground, peering under rocks and behind bushes as he goes. He avoids the meaningless detail of specific architectures, methodologies, and languages and instead deals with the questions that underly them.

Software Creativity 2.0 (another one by Robert Glass), was a late addition to my reading stack this year, but one I couldn't really pass up. I've been entertained and educated as I've read through the updated essays that make up this new edition. I still think the third chapter is my favorite, and especially "In defense of Ad-Hocracy", but there are a number of other great pieces in there.

What books are you reading? And what are you getting out of them?


James H. said...

What else should an eager young developer read? "The Ruby Way, 2nd Edition" is headed my way.

Anonymous said...


My copy of The Ruby Way just came in yesterday, and I like it a lot.

I'd also suggest Refactoring, if you haven't read it. Its emphasis on the low-levels of design and coding is fantastic, and it really hits topics we all should think about, but seldom do.

Practices of an Agile Developer is a great sequel to The Pragmatic Programmer. Same format, also co-authored by Andy Hunt, same quality of the tips.

gnupate said...

I've got a couple more sets of books that I plan on highlighting shortly. I hadn't planned to do a Ruby specific set, but maybe I should throw that on the pile too.

I'm a fan of both The Ruby Way and Refactoring too. I've not read Practices of an agile Developer yet, though I have heard good things about it.

Anonymous said...

Saw this post of your's just now, though it was posted awhile ago ...

Thanks, Pat. Liked this and the following one (3 more good books). Useful ... I'll be checking out some of those books - I already have "The Pragmatic Programmer" and agree that its really good.

Here's one just bought - haven't read much yet, but it looks good (though not Ruby-specific), and may be of interest to those buildng bigger systems:

Software Architecture: Perspectives on an Emerging Discipline (Paperback)

by Mary Shaw and David Garlan.
Mary Shaw is the Alan Perlis Professor in the School of Computer Science at Carnegie-Mellon University.

- Vasudev Ram