Legacy code (ie any code users actually use ;) ) is the life and blood of actual value delivery. Warts and all... your life in legacy code is truly navigating the dance between paying off technical debt and delivering new features in a codebase currently serving a userbase. Doing that dance is hard, but fun and rewarding.
Which is why Feathers’ book on the topic spends so much time on testing. Establishing a test suite that allows you to (hopefully) make changes without breaking things, and if you do you find out quickly.
Comments
Working in legacy code
Legacy code (ie any code users actually use ;) ) is the life and blood of actual value delivery. Warts and all... your life in legacy code is truly navigating the dance between paying off technical debt and delivering new features in a codebase currently serving a userbase. Doing that dance is hard, but fun and rewarding.
Legacy code is crystalized knowledge of a problem domain.
Legacy code is Chesteron's fence. It is wise to understand the conditions that caused it to be built before changing it.
Which is why Feathers’ book on the topic spends so much time on testing. Establishing a test suite that allows you to (hopefully) make changes without breaking things, and if you do you find out quickly.