Are you demoralized by your legacy system?
Why?
Is it hard to work with? Slow? Buggy? Big? Hard to understand?
Legacy Story
At some point, this legacy system was a green field. The developers were eager to work on it, and it used all the best new tools, technologies, architectures, etc. It became successful. It was good at its job, perhaps even the best in the industry.
Time passes. Functionality grows. Time constraints are levied. Developers come and go. This thing that once was shiny and new is now showing some cracks. Refactoring is desired. The architects request a time allowance to re-architect the system. Re-architecting is started, runs a bit too long, and is cut off.
It is still successful, and the pressure to fix bugs and add new features continues to build.
At some point, the technical debt becomes an anchor. Just like the debt metaphor, you hit a point where all you are doing is paying the interest on the debt, and not paying down the principal. The pressure to keep adding and fixing keeps building. You feel trapped in a vicious, never-ending cycle of cutting corners and not being able to fix things. You become demoralized and dread working on this thing.
Good News
The good news is that people use your application. It is useful. While years ago this news would have caused a party in the office, it receives no fanfare now. In fact it is bemoaned, because any extra use of the application actually breaks things now.
Your application only got into this state because it is used. It is in this state only because it continues to be useful. If this wasn’t the case, the application would have been abandoned years ago.
Rejected
However, we tend to reject that good news. As mentioned before, we bemoan the fact that the system in use. We try to convince ourselves and others that if we could just have some amount of time with no users, we could rewrite the app, and make it better. Well, no, it won’t have the same features, or satisfy the same customers, but it will be better. Better for whom?
How insane! Why would you throw away something that so many depend on, that so many continue to find useful? Sure, the cracks are beginning to affect the structure of the thing. The rust is so bad parts are in danger of falling off. This means perhaps a better focus should go into fixing these issues. Maybe a re-piping to replace the leaky or lead-lined pipes is called for. But don’t just throw it away!
Learn from the lessons of the past. There are years of valuable lessons packed away in that legacy system, waiting for you to bring them into the light.