Quite often clients plan to build new features on top of an old application that had been earlier iteratively developed by a dozen of different developers and you can’t be 100% sure that all of them had a chance to follow style guides or common project codebase organization. That could happen because of a tight deadline or you wasn't sure your idea is going to work and preferred to stick to a cost-effective solution.
Sometimes clients believe that improving existing codebase will consume fewer resources (time and money).
However the more you invest into the application that has not been properly designed for future needs - the more resources it would take to solve issues and the more it would cost to support the app.
Here is a case we had in 2020-2021:
The client had an application built with Ruby on Rails SaaS template and a mix of different 'out-of-the-box' solutions. He requested new features implementation, bug fixing and performance improvements.
The context of this application was:
So we’ve got into a situation where any updates costed too much.
It was not easy for a client to find a development team ready to deal with his app support.
Besides solving business problems developers care about self proficiency and skills improvement and are usually more interested to work on modern and well-organized applications. They would prefer a good example to work on.
So what steps do we suggest?
Conclusion:
If your product has passed idea validation stage and you’re ready to move forward with it then we’d highly recommend to invest also in good codebase, best practices, test coverage, modern tech stack in addition to new features development. If there is still no good codebase then it’s right time to develop it. It will certainly cost less than vast refactoring and debugging in the future.
If you are at the idea validation stage and not sure if you should invest in a product and business development, then it's okay to implement a couple more features as a kludge.
If your MVP was designed as simple as possible, and your developer did not keep in mind further updates, please don't build too much over MVP and don't wait for too long for codebase redesign if you are ready to move forward.