
If you have ever been involved in the development of custom applications, you are probably familiar with the rather routine process of calculating the cost and timing of the project. And it would be okay if the project was calculated only once, but often potential customers cannot meet the budget, and they start changing the requirements for the product on the fly:
- It is too expensive, what if we do without the function X?
-
* do the calculation * So much.
- It's still expensive, and how much will development cost only for platform Y?
-
* do recalculation * So much.
- Wow, that is, if we give up the platform Y, then we can do not only X but Z too?
-
* regular recalculation * Alas, no.
- Sorry, then let's do without Z, how much will it cost us?
')
Standard ways to simplify calculations, such as setting a fixed cost per day for an employee or company, usually lead to loss of accuracy of results and still do not save us from manual calculations.
But, like any other process, characterized by the words “routine”, “accuracy” and “calculations”, such calculations can most likely be automated. Let's check if this is the case.
Settlement process
First of all, we should determine how the deadlines and cost of projects are generally formed.
Step 1: Task Evaluation
The first thing to do after studying the requirements of the customer is to divide the project into independent functional parts (tasks). For example, if we are evaluating a mobile application for a standard online store, then the division might look something like this:
- Catalog
- Cart and payment orders
- Shop News
- Contacts
After this, the development team makes the determination of temporary labor costs for the implementation of all the listed tasks:
Task
| UI / UX
| Back-end
| Android
| iOS
|
---|
Catalog
| 4 days
| 2 days
| 3 days
| 4 days
|
Cart and payment orders
| 3 days
| 5 days
| 4 days
| 5 days
|
Shop News
| 2 days
| 2 days
| 1 day
| 2 days
|
Contacts
| 1 day
| 2 days
| 2 days
| 3 days
|
Step 2: Calculate project development time
No matter how hard the developers try, their deadline estimates are extremely rarely true. So, first of all, building on the complexity of the project and the experience of the team, we define insurance: the amount of extra time needed to resolve various unforeseen circumstances. Typically, insurance looks like a certain multiplier (percentage) by which the total development time is extended.
Next, we should determine the order of the stages of work execution (workflow). Regardless of the methodology used (agile or waterfall), we need to know in what order our team performs various types of work. In the mobile application example we are considering, the order might look like this:

That is, first, the development of the back end and the user interface is performed independently of each other, and when they are completed, the parallel programming of the application for different platforms begins. After all stages are completed, the project will be considered completed.
Now we have all the necessary information and we can proceed to the calculation of terms:
In the case of Waterfall: we summarize the amount of time for each type of work (UI / UX, Back-end, etc.), add insurance to them, and, taking into account their priority, we find the longest work sequence, which, in fact, represents the total time required for project implementation.
In the case of Agile: taking into account the sequence of work, we determine the time to implement each of the tasks (product catalog, news, etc.), then, by summing them up and adding insurance, we get the deadline for the project.
Step 3: Calculating the cost of project development
The next thing we need to get is the cost of the project, which is usually formed from two types of costs: total monthly expenses (office rent, payment for servers, software licenses, etc.) and salaries of direct project implementers. As for the salaries of management, they are more suited to the first category, since they are a more “passive” item of expenditure, and in some cases they may be optional (for example, if we are talking about a small freelance team).
“Total monthly expenses” are calculated very simply: we divide them by the average number of days in a month and multiply by the number of calendar days required for the project.
The calculation of the costs of executors' salaries depends on the development methodology used:
In the case of Waterfall: for each employee we divide the monthly salary by the average number of working days in a month and multiply the result by the number of working days required for the implementation of the stage of work for which he is responsible; at the end we summarize all the payments.
In the case of Agile: for each employee we divide the salary by the average number of working days in a month and multiply by the number of working days required for the implementation of the entire project, at the end we summarize the results.
Now, knowing the cost of the project (payments to performers + total expenses), we can get the final cost by adding a couple more things to it:
1. Profit: everything is quite simple here, we either add the desired percentage of the project cost, or add the corresponding item to the “total expenses” (if we want to get a fixed monthly income).
2. Taxes: everyone considers them a little differently due to the variety of taxation systems
and ways to avoid them . In some cases, you can consider taxes as a certain averaged percentage of the cost of the project with the included profit.
3. Sales manager's commission: depends on your terms of cooperation, if you pay a percentage of the transaction, then it is a percentage of the amount of the cost, profits and taxes, and if you pay a percentage of the profits, then obviously consider it as a percentage of pledged profits received in the first paragraph.
So, now we have the total cost of the project. But what if the client, hearing the result, asks us: “What if we do without X?”.
Automation of calculations
Is it possible to develop an application that would make such calculations automatically? After reviewing the calculation process, we can now say that yes, it is possible, but not without a couple of nuances. And the first of them is the calculation of the tax part.
Accounting for all possible tax options in the calculations requires not only significant labor costs for the development, but also for the continued support of the formulas up to date. There are several options for solving the problem: either we sacrifice the accuracy of calculations and consider taxes as a certain percentage of the project cost, or we significantly complicate the settlement system by adding the possibility of manual modification.
The next nuance is a way to safely store information about all expenses, salaries and projects of the company. Here, too, there are several possible options:
- Store data on third-party application servers (SaaS). Quick and convenient, but requires trust to the owners of the service.
- We deploy the application on our own servers. This option requires effort to configure and maintain the application, but allows you to independently monitor data security. In addition, you can make the application available only from your own infrastructure, but this deprives you of certain amenities, such as the ability to access settlements from a personal phone outside the office.
- Implementation of the program for calculations in the form of an independent desktop application that stores all data in a local file. This case does not involve any setting of the environment and allows you to independently control the data security, sacrificing the possibility of providing general access to the data.
Nevertheless, despite these problems, the automation of the settlement process is still possible, and it brings several advantages:
- The life of a settlement officer will be a little easier.
- Customers will be able to receive recalculations in a matter of seconds.
- The cost of development will be a little more fair and competitive.
Today there are a very small number of solutions for this type of calculation, and all of them have a rather high threshold of entry due to their monstrosity. In this regard, I would like to ask a question to the Habr audience: how is the calculation performed in your company?