Gray's Matter
Justice Gray - North America's favorite metrosexual software consultant
E-mail Justice
Subscribe to this feed
Subscribe to comments
Perennially Popular Posts
How to write a presentation abstract
My grandmother, globalization, and what's wrong with DateTime.Parse
A letter to my Worldvision sponsor child
Development Methodologies for the 21st Century
My grandmother & the difference between strong typing and weak typing
How I am becoming a better developer, part 1 of infinity
Facebook RSS Feeds: How to Write Your Own With C#
The Ten Keys To Happiness
My grandmother and the Global Assembly Cache (And Star Wars)
My grandmother and the difference between processes and threads
How to make a meeting request
Why you should never be an independent consultant
The DasBlog 1.9 AJAX Autosave True Story, Part 2
Other "metro" developers
Ben Scheirman
Bil Simser
D'Arcy Lussier
David Woods
Donald Belcham
Donald Jessop
George Clingerman
James Kovacs
Jason Hunt
Jason Row
Jean-Paul Boodhoo
Jeffrey Palermo
Joey deVilla
John Bristowe
Jonas Avellana
Kyle Baley
Mack Male
Martin Hinselwood
Michael McClenaghan
Mike Duncan
Mike Friesen
Mo Khan
Otyce
RoboSapient
Russell Ball
Scott Hanselman
Scott Reynolds
Steven Rockarts
Tech Embassy
Terry Thibodeau
Tom Opgenorth
Vladimir Levin
The Justice Gray Fan Club
Amazing Mrs. Loquacious
Dr. Teeth
Facedown
Janey Lynne
Maxime Lamy
Ridley Thunder
Stan Woo
Vanilla Con
Wobbly*Bits
I Wish These People Updated More Than Once a Year
Anand Narayan
Jeff Perrin
<< Applying UML and Patterns: They can't all be winners
A fireside chat with Justice Gray >>
A book that everyone needs: Working Effectively With Legacy Code
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!
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
Comments [6]
BookReviews
|
Technical
|
Tracked by:
"How I am becoming a better developer, part 1 of infinity" (Gray's Matter)
[Trackback]
"What I am doing to become a better software developer?" (HMK's Spurious Thought...
[Trackback]
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.
Anand Narayan
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)
Mike Duncan
|
mduncanAT NOSPAMgmail dot com
7/12/2007 11:38:51 AM (Mountain Daylight Time, UTC-06:00)
Your #2 sounds like how I write these reviews! ;)
Justice
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!
:-)
Michael Feathers
|
mfeathersAT NOSPAMmindspring dot com
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. :)
Tom Opgenorth
3/18/2008 4:16:59 AM (Mountain Daylight Time, UTC-06:00)
Totally agree, great book. Chapters 20/21 in particular are superb.
Colin Jack
|
colinjackAT NOSPAMhotmail dot com
Name
E-mail
Home page
Remember Me
Comment (HTML not allowed)
Enter the code shown (prevents robots):
Justice Gray
: a seething cauldron of rampaging masculinity. A fighter! A brother! Your
secret lover
! He's also a software development consultant and the Vice President of the
Edmonton .NET user group
. He also greatly enjoys speaking about himself in the 3rd person.
Gray's Matter Archives
Recent Posts
Controversy clarifications!
The most controversial interview of ALL TIME
Finally! The *winner* of the "What Justice Gray Means to Me" contest
The mystery of D'Arcy Lussier's ASP.NET MVP is solved...
Well, now that's pretty horrifying
MVPs on MVC: "No, we don't have any idea either"
Why I am happy to not be at the MVP Summit
Donald Belcham's cry for help: MS MVPs, your attention is needed
ALT.NET Pursefighting revealed
Test, please ignore!
Change yourself, change the world: a great week 4
Post Categories
BookReviews
Conferences
DasBlog
EDMUG
Goals
HanselmanQuestions
HotDeveloperCorner
ILiveToInform
Leadership
Mac
OtherGrayAreas
Personal
Productivity
Ruby
Suresh
Technical
Transformers
Vancouver
Wii
<
July 2008
>
Sun
Mon
Tue
Wed
Thu
Fri
Sat
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
Sign In