October 30, 2019

267 words 2 mins read

Let's not rewrite it all

Let's not rewrite it all

Every engineer dreams at some point of rewriting a legacy system. Rewrites introduce bugs, duplicate effort, and delays. Architectural evolution or incremental rewrites can be an alternative, but only if done properly. Michelle Brush explores good and bad patterns for evolving architectures, offering a framework for deciding what approach to take.

Talk Title Let's not rewrite it all
Speakers Michelle Brush (Cerner Corporation)
Conference O’Reilly Software Architecture Conference
Conf Tag Engineering the Future of Software
Location New York, New York
Date April 11-13, 2016
URL Talk Page
Slides Talk Slides

Joel Spolsky argued in 2000 that rewriting code is the single worst strategic mistake a company can make. Sixteen years later, code written when Spolsky made that statement would now be considered legacy and fodder for new rewrite discussions. Legacy code isn’t problematic because it is old. It is problematic because it often lacks testing, good design approaches, and documentation. It feels foreign to us because it’s behind on current technologies, new best practices, and recent architectural patterns. However, embedded in the legacy code is the deep domain knowledge that contributed to the complexity. Rather than rewrite it all, it is usually better to migrate the domain-specific logic to newer and better frameworks and patterns. However, even migrations come with risks. Michelle Brush explores approaches to migrating code to new architectures based on business needs. Michelle explains how to identify the right approach for the codebase by understanding the goals of the project and the complexity of the domain. Michelle also covers architectural evolution failures and successes, pointing out the key aspects that determined the outcome.

comments powered by Disqus