Any program, no matter how good it is, will eventually require updates. There will come a day when it becomes clear: either a significant overhaul is needed, or an entirely new program must be created.
If you’ve worked on a somewhat substantial project, you’ve likely encountered this question: what’s better, easier, and more cost-effective—refining an existing program or starting anew from scratch?
Let’s figure it out
However, providing a straightforward answer to this question is quite challenging. It’s highly dependent on the specific circumstances. Let’s consider a couple of scenarios:
- No Access to the Source Code: This is the simplest scenario. When you don’t have access to the source code, there’s no choice but to create a new program from scratch.
- Source Code Available, but Poor or No Documentation: Freelancers often face this situation.
For the first scenario, the path forward is clear. However, in the second scenario, there are several factors to consider. The decision should depend on the program’s complexity, functionality, and the client’s requirements.
If the program is sufficiently complex and reasonably aligned with the client’s needs, it’s generally better to refine the existing program than to create a new one.
There are known experiments where development of a new program began simultaneously with refining the old one. The goal was to catch up with the capabilities of the old program and assess the cost and time involved. Surprisingly, even with new programming approaches, the new version failed to surpass the old one. This is understandable since the old program continued to evolve.
However, there are situations where starting from scratch is still preferable to refining an existing program. Here are some reasons:
- Outdated Version: The old version is so outdated that maintaining it no longer makes sense.
- Obsolete Development Environment: The old version was developed in an environment or programming language that’s no longer supported or popular, making it increasingly difficult to find specialized programmers.
- Lack of Compatibility: The development environment (programming language) used for the old program doesn’t support new technologies required for the new version, or implementation would be extremely complex.
- Different Platforms: The program needs to be adapted for a different operating system or web-based environment.
- Significant Enhancements: If substantial improvements are required, such as performance or security enhancements.
For instance, it’s unlikely to be worthwhile to refine programs written in Turbo Pascal or BASIC, even if they are functional and meet the client’s requirements. In such cases, it’s better to consider developing a new solution or, even better, searching for existing ones.