Published Sep 3, 2019

SE-Radio Episode 242: Dave Thomas on Innovating Legacy Systems

Dave Thomas delves into the intricacies of legacy systems, highlighting the critical role of innovative microservices and data integration over mere data cleaning to improve organizational data quality, while navigating challenges like effective testing and system reliability to achieve strategic business goals.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Rewriting Risks

    Rewriting legacy systems is fraught with challenges, often leading to more problems than solutions. argues that without proper specifications and tests, accurately rewriting a system is nearly impossible. He emphasizes that rewriting is not equivalent to refactoring, as it often involves adding new functionalities under managerial pressure, complicating the process further 1.

    Rewriting is just a loser's proposition. I mean, it's about as stupid as adding more people to a project.

    ---

    Instead of complete rewrites, Thomas suggests focusing on critical business needs and gradually replacing parts of the system to deliver clear business value 2.

       

    Refactoring Limitations

    Refactoring large legacy systems presents significant limitations, often making innovation a more viable option. points out that refactoring is not always feasible due to the lack of test coverage and the complexity of existing codebases 1. He suggests that deleting and rewriting problematic code can sometimes be more effective than incremental refactoring, especially when dealing with unfamiliar code 3.

    The most important thing you can do is get rid of code.

    ---

    Thomas advocates for understanding the business value chain and targeting innovation at critical bottlenecks to deliver impactful changes 4.

       

    Testing Approaches

    Effective testing strategies are crucial for managing legacy systems, with a focus on end-to-end and acceptance testing over unit tests. argues that acceptance tests provide higher value by testing systems comprehensively, which is what customers ultimately care about 5. He highlights the benefits of model-based testing, such as Quickcheck, which generates numerous tests and reduces false positives, making it a powerful tool for ensuring code reliability 6.

    It's always a good idea to add tests to any kind of system. The important thing is to add tests with values.

    ---

    Thomas also notes that introducing tests may require code changes, but the long-term benefits of improved test coverage outweigh the risks 7.

Related Episodes