The Dev Manager lent me the book he's been reading recently , Michael C Feathers' Working Effectively with Legacy Code. The detail is mostly too fine for my coding knowledge and needs but I had a few ideas reinforced and new ones to take away: For Feathers, legacy code is any code without (unit) tests. That's right: code written today can be legacy code. Most software changes seek to hold some or all existing functionality constant and having (good, unit) tests can give a developer reassurance they have achieved that. When code has no tests, or has tests which have dependencies, the degree of reassurance drops and it's natural for a developer to want to avoid touching existing code so as to mitigate the risk of breaking something. This can lead to worse code. Making code testable involves breaking dependencies so that small atomic elements of the logic and structure are can be addressed individually. Feathers doesn't deny the utility of testing at a larger s...