If one thing unites us as software developers, it must be legacy software. Almost and perhaps everyone in their career will deal with them. Almost everyone I talk to does not like to work on legacy software because legacy software is considered to be outdated and hard-to-change technology. It is hard to change because we do not understand how they work, it is usually not documented, and no proper unit tests exist. Making a small refactor can make the system implode and frustrate us. Wishing we could just write new software with the latest technology as the cool kids do! Another problem is businesses also don’t usually want to invest in changing the system, they are more interested in delivering new functionality. It is providing value, after all! What if you can keep the business running and move away from that legacy?
In this talk, I will provide my set of design heuristics distilled from my experience working with legacy systems. An important aspect of the work I did with the legacy system was approaching the software design with Domain-Driven Design and the legacy strategic patterns described by Eric Evans. I will provide real-life examples of how I and the teams used these patterns to move away from legacy software systems and keep delivering new functionality. You will walk away with the knowledge of where to start your disentanglement journey!