Friday, February 11, 2005
Working with Ugly I Mean Legacy Code
I've been spending some of my free time looking through a nasty set of software components. It's about 50K lines of code and was developed with few, if any, unit tests -- or at least none were provided to us by the subcontractor. Think case study for project failure and you've got an idea of what this software looks like. I've been involved with this particular project for a number of years, but never as a developer. Due to more of those case study factors, I never had a clear picture of what the code looked like. Now I'm working through it to figure out changes to push the thing into something closer to reality. Ben Carey was kind enough to point me to a terrific reference for dealing with such a project: Working Effectively with Legacy Code by Michael Feathers. I stayed up waaaay too late a couple nights ago reading most of the book. It's a terrific asset if you've got a monster you're trying to tame. The strength of Feathers' writing is how to approach exploring, understanding, modifying and maintaining legacy code by carefully looking at what portions of the software to wrap up into test driven development methodologies. It's available on Safari Books Online, a great asset if you need online access to books.