jbrains.ca
Call us now 1 888 OK-JBRAINS (655-2724)
Call us now 1 888 OK-JBRAINS (655-2724)
You probably have quite a lot of disdain for legacy code, and generally I agree with you. Here, by legacy code, I mean code that we feel afraid to change. We wouldn’t need works like Michael Feathers’ Working Effectively with Legacy Code if we generally felt delight in working with legacy systems. We wouldn’t need events like Legacy Code Retreat if we could manage legacy systems with ease. What silver lining, if any, can we find in legacy systems? I’ve found some.
I interpret a legacy system as a sign of success. If the system didn’t provide value, then we would have scrapped it by now. We depend heavily on it because it does what we need. Truly useless systems don’t become entrenched in the way that these legacy systems do.
We have legacy code because we need to deliver features sooner than we currently do, and having a backlog of work generally fights unemployment better than not having a backlog of work.
The legacy system design probably can’t get much worse, so you probably can’t hurt it. Feel free to experiment, but remember to retain the current system behavior, because you never know who depends on which parts. (Thanks to Lance Purple for reminding me about this.)
Legacy systems tend to have somewhat randomly-distributed cruft, so it probably doesn’t matter where you start trying to rescue it. You probably can’t find the so-called “best place” to start.
Given all this, what worries you so much about your legacy systems? Really. Practise with us at http://www.legacycoderetreat.com.
© 2005 - 2012 J. B. Rainsberger
Pingback: (Agile) Testing