3 ms·
Very good points. In his book 'working effectively with legacy code' Michael Feathers actually defines 'legacy code' as code without tests. Largely because of r
by cjfd 5y ago
Very good points. In his book 'working effectively with legacy code' Michael Feathers actually defines 'legacy code' as code without tests. Largely because of reasons like you state.
- vbezhenar 5y agoWhat do you think about code being too smart for current team? I encountered that use-case three times in my career. It was C++ program which was written by very bright person, used template magic, boost and stuff. Rest of the team were ordinary C developers. After that person left, they had to rewrite his program, because it took too much time to understand how it works and to fix or improve it. Second case was when someone wrote some helper program with Haskell which happened to be important. Same story, nobody knew Haskell, nobody wanted to invest into learning, so rewrote in node.js. Third story: someone used reactive API with Java (Spring Flux) and again same story: team don't understand it and slowly rewrote it with ordinary blocking API. Does that code counts as legacy?
- hu3 5y agoThis is where Go shines in my opinion. It's really hard to write smart Go code. Sure it is a bit verbose but dam is it easy to understand due to sheer bluntness and lack of magic.
- marquis_andras 5y agoMichael Feathers uses several definitions of legacy code, depending on the situation. In your situation, he defines legacy code as follows. "legacy code is the product of ... when your team turns over faster than your code turns over." [1] 1. https://www.software-engineering-unlocked.com/legacy-code-michael-feathers/ https://www.software-engineering-unlocked.com/legacy-code-mi...
- dotancohen 5y agoThose two definitions just sold the book to me. Thanks.
- dinvlad 5y agoThat's where I borrowed that term as well :-)