One of the key features of software is the fact that it never stops growing. For each product or service that a company creates there will soon be legacy code. It’s very common to see companies struggling to deal and manage this – and it can quickly have a significant business impact, as companies wrestle to adapt their products to changing market and customer needs.
Why do software systems tend to become obsolete? In our webinar, “The repurposed legacy system” Michael Feathers, Chief Architect at Globant and author of the book “Working effectively with legacy code” illustrates the mechanism of software by comparing a watch and a table. On the one hand, the mechanism of a watch is very complex and has multiple pieces and gears that perfectly match each other. This means it’s a very specialized object that at the end of the day, does one main thing, which is to tell time. On the other hand, when you look at a table, its mechanism is rather simple but it has many uses – you can sit at the table and eat, have a conversation, do some reading or writing.
The clock has a very specialized mechanism but only one use, while the table is undifferentiated in terms of design but has multiple uses.
When we build software, we usually want it to be more multi-use, but it tends to become more specialized like the watch. This is because we have to meet very specific business and technical objectives to provide specific solutions for clients. The reason why companies find themselves in a tight spot when it comes to legacy code is that businesses are never static and customer demands change each day. As a result, software products need to evolve and accommodate to meet business and customer demands. So there is a conflict between those very specialized pieces of code as it’s difficult to reuse them to provide new functionalities and services without causing friction.
Here it’s important to highlight two ideas. Firstly, the concept of innovation for most companies involves the creation of something new. New products mean new code. However, innovation also comes from observing and analyzing what already exists and using its potential to enhance a product or create a new product. It’s essentially a creative process. Also, more code does not necessarily mean good code.
Secondly, often people think about legacy systems in a negative way, like code that is holding them back from modernizing their products. This causes companies to miss the potential of using existing systems to address new needs.
How can companies start using legacy code as an asset to pivot their businesses?
Michael Feathers provides three steps you can follow to use legacy code as a tool to pursue new opportunities in the market:
- Examine existing products. Analyze not only your technical assets but your systems in general. What capabilities and key competencies do you have? What makes this particular capability different from the new one that you need?
- Discern capabilities. Take assets you identified and ask yourself if you can separate them in order to repurpose them for new products or markets.
- Re-purpose. Use your revised legacy software to enter adjacent markets.
Explore in-depth the best practices behind repurposing legacy code and watch here the complete webinar with Michael Feathers.