Software is different from everything else in our world. When we understand its nature and how it needs to change over time, we can find ways to increase the fitness of the code we build so it’s less costly to maintain and extend.
In his book, Working Effectively with Legacy Code, page xvi [Fea04], Michael Feathers asks what we think about when we hear the term “legacy code”:
If you are at all like me, you think of tangled, unintelligible structure, code that you have to change but don’t really understand. You think of sleepless nights trying to add in features that should be easy to add, and you think of demoralization, the sense that everyone on the team is so sick of a codebase that it seems beyond care, the sort of ...