Gray's Matter
Justice Gray - North America's favorite metrosexual software consultant

I Wish These People Updated More Than Once a Year



Now that I've gotten that negative review out of my system, it gives me great pleasure to tell you that "Working Effectively With Legacy Code" is to "Applying UML and Patterns" as a massive multiple orgasm is to a swift kick in the genitals.  Sincerely, it's that good.

Common responses I've gotten when I mentioned this book to people:

"You really need to read this book!  It is excellent."
"I really need to read this book! I hear it is excellent."
"I really need to read this book so I can write blog posts claiming all of the ideas inside as my own!"
"Reading Working Effectively with Legacy Code gets me so hot...if only you weren't married" (most members of the opposite sex)
"Reading Working Effectively With Legacy Code gets me so hot...if only you weren't married" (Donald Belcham in quite the awkward moment)

Now, if you're like me, you want to cut through all the hype and get to what really gives the book credibility: the author's physical appearance.  In this arena, Michael Feathers gets a thumbs up for being a total bad-ass - look at this photo and render!

Michael Feathers - bad-assMichael Feathers prepping for a freestyle rap

Arms crossed in the "G's up" pose, L.A. Raiders style jacket, and that pouty scowl all tell us that Michael is ready for either a fight or a freestyle rap at a moment's notice.  It looks like the development community has found the Eminem to James Kovacs' Vanilla Ice!

If for some strange reason you care more about the actual content inside the book, you won't be disappointed either.  "Working Effectively With Legacy Code" reads like a spiritual sequel to "Refactoring", following up on Martin Fowler's guide with more examples and advice on how to get a crazy, mangled code base under some semblance of test.  There's an even larger emphasis on testable code than in Fowler's book, but I suppose that's to be expected from the guy who wrote CppUnit.  Speaking of which, don't let some of the C++ examples scare you off; there are also examples in Java and even one or two in Ruby!  The concepts in this book are useful no matter what the language, although I do think people inheriting a C++ code base might find this book even more beneficial.  I know that I felt a lot more confident about my ability to tame wild code after reading it, and I'm pretty positive you will as well, no matter what code base you're working off; well, maybe not assembly but you get my drift. 

This book is infinitely valuable for *anybody* who works with code they've inherited from others dead and gone, but it's just as useful for anyone doing "greenfield" development.  After all, most of the code you write is eventually going to become someone else's legacy code - this book will help you see ways to ensure your code is testable in the first place and a great way to expand on what you've learned from Fowler's Refactoring.   That being said, I would probably read Refactoring prior to reading this book simply to get more familiar with some of the refactorings that Feathers discusses, and *why* Feathers has such an emphasis on testable code.

As you might imagine, this book has my highest recommendation (5 stars).  This means I would have ridiculously illegal sex with "Working Effectively With Legacy Code" at any opportunity.  Heck, given the content of this book it would likely even help improve my technique*!

* (that is, if it was not already SUPER-AMAZING)
 

Thursday, July 12, 2007 #

7/12/2007 10:53:16 AM (Mountain Daylight Time, UTC-06:00)
That guy looks like Ryan Turner! You should do a side-by-side.
7/12/2007 11:32:18 AM (Mountain Daylight Time, UTC-06:00)
It will be interesting to hear how this compares and contrasts in a 5th grade English class composition way to Refactoring_to_Patterns, also on your list, whose review I expect presently. I've contemplated acquiring both in impulsive moments in the past but have feared reading them would be tantamount to some sort of waking narcolepsy. Now however, once both are reviewed I can either:

A) Choose the winner and snicker with derisive laughter at anyone who dares to mention the loser in polite company.

or

2) Buy neither, instead just regurgitating phrases from the reviews and act as if I've read both. (then snickering with derisive laughter)
7/12/2007 11:38:51 AM (Mountain Daylight Time, UTC-06:00)
Your #2 sounds like how I write these reviews! ;)

7/14/2007 6:07:22 AM (Mountain Daylight Time, UTC-06:00)
Just don't let me catch any of you writing code without tests!


:-)
7/23/2007 6:53:54 AM (Mountain Daylight Time, UTC-06:00)
No worries, Justice doesn't write code! It's not "metro" enough. :)
3/18/2008 4:16:59 AM (Mountain Daylight Time, UTC-06:00)
Totally agree, great book. Chapters 20/21 in particular are superb.
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):