Posts

Showing posts from August, 2010

Working Effectively with Legacy Code

Image
It's a known fact of life that code bases, if not actively nurtured, deteriorate with time. Maintaining, fixing bugs, extending, creating new features; all exert forces that push a design beyond its original intended boundaries, breaking the envelope of its original frame. Not long after its first release (sometimes, even before it), there's not even a trace of design, there's no conceptual integrity; duplication and needless complexity abound. Understanding and changing such systems is very difficult, technical debt never seems to decline. No position is more dreaded than that of the maintenance programmer. It's certainly not fun to work in these big balls of mud . Debugging sessions can take days, every time a change is required, there's fear that some unrelated functionality might suddenly break. In the book Working Effectively with Legacy Code , author Michael Feathers gives wonderful advice and practical, to-the-point techniques to deal with these quagmi