Code Upcycling: evolving legacy code

Every developer will eventually inherit legacy code that is fragile, difficult to manipulate and hard to test. In such cases the options are pretty simple:

Rewrite everything

Continue as-is

Side-by-side replacement

In rare cases a from-scratch rewrite is justifiable, however, if the code is in production odds are it is either making money, saving money or making your organization run smoother. In such cases a rewrite just isn’t feasible. So if you are convinced that leaving the code alone as-is isn’t an option, then the problem becomes: how do you improve the code incrementally over time?

We will introduce the concept of Code Upcycling and how we are using it to evolve a legacy system. Code Upcycling addresses the following problems:

Code diversity: legacy systems often have older code and outdated APIs mixed in with newer concepts and design patterns. Getting code into a consistent state is key.

Dependency problems: when code can’t be isolated then it can’t be tested. It is important the legacy code becomes testable.

Small teams: if you have a small team they are often involved with related activities like system administration and customer support. You must have a plan that lets the legacy code evolve in a way that doesn’t disrupt other responsibilities.

Thirst for innovation: most times simply updating legacy code to be consistent and testable isn’t enough. Customers and the market often requires you to add new features, too.

Come hear the struggles, setbacks and incomplete nature of evolving legacy code, and how we are addressing this in our Upcycling Journey.

About the speaker

Michael oversees the ongoing development of the GForge platform, while participating in product development, and feature design. Prior to that he was the director of technology at HireAHelper, an ITEE at the state of Iowa (leading teams across the state government), and a team leader at Xerox.