Old applications are inflexible and no longer meet business needs but waiting for a full rewrite comes with its own risk and will cost you precious time. What to do?
Let me know if this sounds familiar: your business has a custom application that started small and, with time, has evolved into a crucial part of your system. “Everything worked” when it was new but the realities of business demanded that new features be added over time and now things are not so smooth anymore: sometimes the application takes a long time to respond, some features are only halfway implemented and there are completely new things you need that the application doesn’t do. All of this is significantly impacting your business.
You have asked for help in making updates to the application and you have been told that your existing code is not in very good shape, that piling more features on top of it is no longer worth it and the whole thing should be rewritten from scratch. Maybe there is little or no documentation for it, or the application was developed with old technology that people don’t want to work with anymore. Maybe the code was initially created by someone who is no longer available and all the new features added throughout the years have also caused lots of issues that you have to live with now and which are preventing your business from growing as much as it could.
You are at a crossroads now and neither option looks particularly enticing. On one hand, you can keep extending the original application like you have been doing until now. After all, it “mostly works” (so why throw it away?) but deep inside you know that even if you can get more features added to it, every time a programmer touches this application, something tends to break. Your business could grow more if the application was more stable and had some badly-needed features to give you a leg up on your competition.
On the other hand, rewriting the application will once and for all solve all these issues you are facing because the new version will be designed with the benefit of all the expertise gained during the time the old system was in use; you have a good idea of what you need and now it should be just a matter of getting it implemented. Unfortunately, the rewrite will take a long time to complete, during which you’re still stuck using the old system that nobody wants to touch and there are some fixes and new features you need that simply cannot wait until the rewrite is completed.
Hi, my name is Javier Molina and I help businesses create and evolve applications with minimum risk and maximum return on investment. During the past 15 years I have worked with great success on countless applications big and small, new projects I started from scratch and existing applications with a long history behind them that had to be enhanced to better support changes in the business.
If you are in a situation like the one I described, where business needs are changing faster than the applications that support them, one approach that tends to have a great rate of success is what I call “Methodical Evolution”. Instead of a big rewrite, which tends to come with a great amount of uncertainty and risk, the old application can be updated a piece at a time, so that your business can continue to operate normally and you can start to see results very early in the process. Everything that already works will keep working; in other words, you can continue to do business with no immediate retraining and no downtime, while your application becomes better and better over time, eventually becoming something completely new. In essence, the idea is to rework the old application piece by piece and turn it into a well-oiled machine in well controlled phases.
If you go with the full rewrite, you will have to wait until it’s done before you receive any benefit from it. It’s like ordering a new car but having to wait for months until it comes out of the factory and you can start enjoying it; until then, you’re stuck with your old one.
Methodical Evolution will start to provide results much sooner in the process. It’s like swapping parts of the car one by one until you have a brand new car, with the advantage that in just a few sessions the car will start driving much more smoothly and even if the final result will still take some time, you don’t have to wait for months. Instead, you can start reaping the benefits early on and in the order that makes the most sense for your situation.
As far as analogies go, however, thinking about applications as cars can only take you so far. When you order a brand new car from the dealership, you have a relatively high assurance that what you’re going to get is what you had in mind. With software, not so much: you probably know by now that there is always a certain amount of risk in every project. Mitigating that risk is, in many cases, worth much more than getting the cheapest solution to the problem. Compare the two approaches:
While the new system is being developed
- The old application remains unmodified, no benefit to the business until the new system is in place
- Releases are provided periodically but they are too incomplete for users to realistically evaluate if the new system meets the target goals
- Because the new application is not tested in depth by users while it’s being developed, surprises are bound to appear at the last minute
- The old application stays in use but its most important shortcomings are addressed first. Immediate return on the investment
- Because new releases are small and incremental, they can be deployed to the live system with little or no risk. Users can start benefitting from the new development efforts at a much faster rate
- Additionally, because the new features are being used from the start, users will provide feedback that keeps everybody on track in terms of how those features should work
Once the new system is ready
- A cutoff date is scheduled and a one-way migration to the new system occurs. If there are problems with the new system, an emergency rollback to the previous application without data loss is normally possible only during a brief period after the change. If critical problems are found days after the migration, it’s hard or impossible to go back to the previous system
- Users will suddenly face an unfamiliar system. Retraining costs are high and upfront, further delaying returns on the investment
- The application has been methodically evolved into a new system with small changes rather than a single monster change. The need for retraining is diminished and has been spread throughout the whole development cycle, making for a much smoother transition
- If a migration is at all necessary, it’s typically easier to make provisions for an ordered rollback in case of emergency. In an ideal world, by the time a new application is deployed, everything has been tested and is known to work 100% but in the real world, it’s always better to be safe than sorry and to have a backup plan in case a showstopper issue is found.
If you have an application that is holding your business back and Methodical Evolution sounds interesting to you, let’s discuss if it is a good fit for your project. I only commit to just a few projects at a time; right now I have availability for a very small number of new clients and if you are one of those few, I want to make sure you achieve the best possible results in your project. I do not accept all projects, only after we both determine that we are a good fit for each other will we move forward.
See what other satisfied clients have to say about my work (unedited testimonials, references available on request):
For 5 years Javier Molina has been our Superman! His leadership, vast knowledge, expertise, attention to detail and rapid response are unparalleled. Looking for the Best? You found him.
Javier’s work and professionalism were excellent. I would highly recommend him to anyone. Several projects, I had an idea in mind and after discussing the project with him he had a better way to accomplish the goal and get the project completed
Javier has proven reliable, dedicated and inventive. A true pro who we hope to have the pleasure of working with again and again
Fill in the form below and let’s schedule a no-obligation call to see where your business is at and what we can do together to help it grow.
Yes, I want to know more about Methodical Evolution for my business application
(Looking to create a brand new web or mobile application instead? I can also help with that, fill in the form and I’ll get in touch.)
Is Methodical Evolution the best approach for all applications? No. Here are some situations in which you may want go ahead with a full rewrite instead. Although every application and business is different, in general terms, a full rewrite can be a perfectly valid approach if:
- The problem application is used infrequently
- There are very few users
- The problems caused by the application are not impacting the growth of the business in any meaningful way
- The business has a high tolerance for risk (i.e. early stage startups)
When is Methodical Evolution a good fit?
- Heavily used applications
- Applications providing core business functions
- Businesses and departments where risk mitigation and the additional certainty of a Methodical approach is valuable enough to justify the increased cost
- Functioning applications that cannot be reasonably extended to support new business requirements
- Applications initially without a mobile component that now need to be made available on mobile devices
In any of those cases, even if the total dollar amount of a Methodical Evolution project is higher than a simple rewrite, many companies and departments will find that the reduced project risk more than offsets the cost.
Re: [company won an Award of Excellence in the software field]
Hacker, Troubleshooter, Software Engineer Extraordinaire
We would like to thank you for your contributions that made this Award possible:
- You solved critical issues for our clients especially around [product].
- You helped establish a reputation for technical competence in every project that you were involved with.
- You have given us the confidence to take on challenging projects – programming languages and environments do not matter to you.
- You architected, designed and developed the mobile component of [product].
Please accept [monetary amount] as a small token of our appreciation. We look forward to your continued support to take our company to the next level.
It’s time to restore your faith in software. My clients are happy with the value I provide and with how their businesses grow once the true power of software is put to use. If you would like your business to benefit too, fill in the form below. There are only a few spots available and when somebody else takes them, I won’t be able to accept any other project for some time. I commit to delivering the very best results possible for my clients and they tend to like my work so much that I end up working with some of them continuously for years.
Yes, I want to know more about Methodical Evolution for my business application
Looking to create a brand new web or mobile application instead? I can also help with that, fill in the form and I’ll get in touch.