legacy code to me is code that is hard to navigate and there is no real urgency to fix it. usually this means there is no core, a complicated dependency graph, and an imbalance of the Iron Triangle. from what I have seen, the best way to combat this is to develop a microservice architecture. you don't need docker or anything, but each aspect/concern of the software needs to be organized into something more manageable. also, the core needs to be something tiny. like an event bus or ioc container. then you can build the next layer of importance on top of that core. eventually you'll have a core, a few layers of abstraction, and business rules. when done right, business rules will feel like an orchestra. otherwise it will feel like a derailed train.
legacy code to me is code that is hard to navigate and there is no real urgency to fix it. usually this means there is no core, a complicated dependency graph, and an imbalance of the Iron Triangle. from what I have seen, the best way to combat this is to develop a microservice architecture. you don't need docker or anything, but each aspect/concern of the software needs to be organized into something more manageable. also, the core needs to be something tiny. like an event bus or ioc container. then you can build the next layer of importance on top of that core. eventually you'll have a core, a few layers of abstraction, and business rules. when done right, business rules will feel like an orchestra. otherwise it will feel like a derailed train.