How much software costs to build: what is the budget for developing an application
We publish a translation of the material by Alexander Savchenko, an employee of Django Stars. He tells how to estimate the cost of creating mobile applications, taking into account both direct and indirect cost items.
Determining the cost of developing a specific application is an important task for both the company and the programmer who works independently. Immediately it should be said that 100% accuracy is unlikely to be achieved, but this review will help to get closer to the maximum correctness of the estimate.
Skillbox recommends: Practical course "Mobile Developer PRO" .
We remind: for all readers of "Habr" - a discount of 10,000 rubles when recording for any Skillbox course on the promotional code "Habr".
You evaluate not the lines of code, but the product as a whole.
When I talk about developing an application, I mean the project as a single system, not individual lines of code. Accordingly, its implementation includes architecture, communications, testing, quality assessment and all that is usually included in this process.
In addition to direct costs (the time that is spent solely on the work on the application), there are indirect costs that are not always taken into account:
- In addition to development, you will need to test the application, analyze it, and be ready for a marketing campaign, if necessary. In addition, there are always different types of unforeseen expenses, as discussed below.
- Analysis of the viability of the idea and methods of its implementation. What initially seems like a cool idea can be difficult to implement in practice. In addition, you should definitely evaluate the competitiveness of your application: if there are a lot of analogues, you may need to think again and decide whether to put your idea into practice.
- Pitching ideas to investors. Investors are only interested in one thing - whether the project will be able to make money. Even if the concept is interesting, but there is no argument in the form of a business plan or prototype, then investors are unlikely to support you. It is necessary to estimate the possible income and costs, based on these realities.
- Teamwork. Quality applications are made possible through collaboration between different team members, each of whom is an expert in their field.
You also need to take into account such important things as:
- Communications. To reconcile consumables, you should always keep abreast of the workflow. And that means constant communication with other members of your team. They, among other things, should have a good understanding of what they are working on and know the nuances of the project positioning.
- Planning and brainstorming. Fresh ideas are always good, but, unfortunately, no one can guarantee that a regular brainstorming session will give answers to all questions and help to work further.
- Additional tasks. During the development you can get new ideas and suggestions. Some of them will require the use of additional time and labor resources.
Consider implicit factors
The main problem in estimating the cost of creating an application is that at the beginning of the journey we do not know what difficulties we will have to face. This is especially true for ideas that no one has yet implemented.
In order to assess most of the known factors that influence the development process and its cost, it is necessary to conduct an analysis, and it should also include an assumption about the emergence in the course of the work of new problems and tasks, as mentioned above.
Factors can be divided into three categories:
- Everything that is exactly known at the moment - for example, the need to register a domain, rent a hosting with certain characteristics, etc.
- Factors that are still unknown, but their appearance can be predicted - for example, the transfer of the deadline or technical work on the server.
- Factors that are unknown and difficult to predict.
Step by Step Assessment of Development Cost
User stories and tasks of developers
At this stage, it is necessary to describe the functionality of the system from the point of view of different user groups. This, roughly speaking, is the documentation of external product development requirements. In addition, you need to distribute tasks for the implementation of these functions for individual developers.
We specify the scope of work.
Initially, we need to formulate a clear vision of the application’s work and ensure that all project participants understand this vision. It is also necessary that each team member know their role in the development of our web application.
The frontend developer must know which browser versions to support, whether a mobile version is needed, etc. The backend specialist should understand what features the administrator will have, the “guest” user, whether integration with other systems is necessary. Similarly, the architect, interface designer, business analyst, and other team members should know the nuances of the tasks that are important to them.
Estimation of the time for the implementation of each task
After the entire development process is divided into separate tasks for specific team members, we proceed to the calculation of the time frame for the implementation of each of these tasks. It is desirable to provide an optimistic term, normal and pessimistic - that is, such when problems arise and the deadline fails.
It may look like this: it takes 10 days to develop a traffic management system in an optimal situation; really - somewhere 20 days; if problems arise, then a month. Still need to take into account the correction factor, which is about 95%.
Calculating Task Execution Time Based on 95% Correction Factor
The illustrations show an example of calculating the execution time of individual tasks. For “Traffic Management” it is 33 days, and deviations from the estimated dates are possible.
What if the web application score is too high or low
If you don’t like the end result too much, that is, the price of the application turns out to be too high or low (in the latter case it may be that there is simply no point in working for such a sum), try the cost estimate again.
If the application turns out to be too inexpensive, consider how many people participate in its creation, whether all the steps and tasks have been taken into account.
If, on the contrary, it turns out a lot, look for more budget solutions, reduce the number of team members involved in the project, set some other priorities.
As a conclusion, I would say that when estimating the cost of creating a web application, it is necessary to take into account all the details, including known and unknown factors that may influence the development process.
The miscalculation allows the team to understand the scope of work and minimize risks. The main rule - do not rush, and be careful with your desires.