I identify three reasons for the occurrence of such expenses:
New customer requirements. For example, during development, the customer asked to add new functions. Or during the task discussion, the customer did not clearly formulate the task, and reported on some functions already in the process of work.
Increased server load. For example, the client did not immediately report the file size or the number of people the application is designed for. Due to the increased load, additional server capacity will be needed.
Influence of external factors. For example, the application used integration with external services that suddenly turned off. In this case, you will have to look for another service, and the price may be higher. Or the service was free, but became paid - you will have to pay.
Sometimes several factors combine. For example, in one project, the client did not immediately report a large number of simultaneous connections to the service. More memory, more processor threads, and additional data caching were needed. Unplanned optimization led to new expenses.
At what stage can you understand the full cost of development?
The exact amount of all expenses will be known shopify website design only at the end of the project. But an approximate understanding can be obtained earlier. To find out how the price changes, you can use the cone of uncertainty: the more detailed the product is described, the more accurate its assessment.
cone of uncertainty
At the initial stage, the level of uncertainty is high, and accordingly, the cost range is larger - up to a 10-fold spread. The better the requirements, prototype, and design are developed, the smaller the range of the final cost of the work.
Usually the final cost changes by no more than 20% of the initially announced price. There is an exception - if the client adds new functions during development. In this case, it is impossible to predict the final cost.
There was a case when after developing the design and analysis we estimated the cost of the work at 800 thousand rubles. By the end of the development it turned out that the application would have more data than planned. We had to add two functions - the ability to import information and optimize data loading. As a result, the cost of the work increased to 980 thousand rubles.
How to avoid unnecessary expenses
The mistake is to implement everything at once. To avoid unnecessary expenses, you need to prioritize: which functions are really needed, and which may not be useful.
For example, a client wants to receive software usage statistics. The statistics module is expensive, and at the initial stage it is unclear what metrics to study - the number of visits, popular sections of the application, or something else. Such a module is useful for the application owner, but not at the stage of launching the program.
Implementing a feature requires analysis and a clear understanding. For this, we use different prioritization methodologies, including RICE.