Table of Contents
Skilled mans are in short supply everywhere, and the labor market in IT is no exception. Employers here are competing for employees. Salaries are rising offices, are getting better, non-financial motivation takes for granted. A developer’s salary depends on his skills, technical level, experience, and specialization.
If you come across a price below a certain level, you can be sure: either there are nuances about the crew level, or there will be multipliers in the billable hours.
How easy is it to estimate the cost of a software design project?
Software design work includes:
- Requirements analysis, feature design;
- Architecture and interface design;
- Development of documentation and integration plan;
- Coding and assembly;
- Product test;
- Installation, qualification test;
- Maintenance (refactoring, code corrections, versioning support) 30% of the capacity.
The design cycle involves the following points. To provide a developer with an hour of work, a designer should spend about one-third of an hour on requirements engineering; a tester should spend half an hour on testing, and so on. An hour of direct design requires an hour of the more cost.
Developers spend on average 2.4 hours a day maintaining code and 5.6 hours a day developing it. Testers spend 5.6 hours on development. Designers and implementers do all 8 hours a day of their work, leading up to and completing elaboration. High qualification of employees entails a certain level of costs of developing software.
Factors affecting the cost of software
The main factors are the prime software development costing, the presence of assumptions, and extra work.
Cost of a developer’s job
Also to salaries, the price of an IT professional’s services includes:
- Expensive equipment;
- Staff overhead costs;
- Business process overhead: accounting, management, security, automation services, and others.
Existence of assumptions
If companies balance cost per hour, you can send the TOR to the customer and compare the number of hours. What if one team will do faster than the other? Here another nuance will be waiting for you.
A difference of several times the estimate is unlikely to mean that the contractors have priced the same thing. Odds, you are likely seeing different approaches to your wishes with changing risk assumptions.
The customer expects it to be a price for the equal scope of work and the same execution. But it is a choice between implementation A and implementation B. They differ:
- The composition of the work. The result of the task is the performance of the readings or the consideration of the necessary adjustments in the process;
- The number of risks taken into account;
- Presence or absence of unit, integration, api functionality tests.
In contrast to the cost, which is approximately the same for all the contractors, the list of the more work they offer can differ For example, design with automated testing will cost more than without it. Autotests increase the culture of software but also must more time and, increase the check.
At the same time, the customer, of course, has the right to refuse to cover the code with autotests. It’s everyone’s choice: what state should the project be in in a year? Is it acceptable for the team on the client-side to devote large time to fixing bugs because of the rejection of best practices to prevent regression?
Getting the cost of software elaboration right
The most important thing in discussing a project is cost-effectiveness. Very often, we see that there is no connection between profitability and investment. It is not the price of design that is important, but how its result pays off and begins to bring profit.
In other words, the designt product is an asset (generating money), but one looks at its value as a liability (consuming money). Yes, the design product is intangible, but we can compare it to a machine in a manufacturing plant. It doesn’t matter how much the loom costs the factory as long as it pays for itself and runs And it would be a shame if a cheap machine could not cope with its tasks, would slow down the conveyor, stand idle, forever demanding repairs.
The cost of design and the depth of elaboration and planning needs to balance with the potential of the software product, its ROI (return on investment).
Need to to define goals and metrics not technical ones, but business ones. And revise them along with the improvement of the product. Having the ability to reconsider them requires a certain flexibility in approach.
Basic methods for estimating software costs
One of the main parameters included in the cost of software elaboration is labor intensity. These include legal, organizational and technical, economic, or other procedures to estimate the resulting product. Economists have guided in software cost estimation by three main approaches:
- Income approach;
- Market approach;
- Asset-based approach.
The essence of the income approach is to define the expected income from the use of the product, while the comparative method is to compare. The software with similar objects, the cost of which is already known. A product with equal economic, technical, material, and other indicators serves as such an object. A rational buyer would not buy the product more expensive than a similar object equal in utility to the one estimated. The evaluation procedure consists of dividing the program product into elements, which compares in pairs.
The cost approach accounts for the total costs required to replace or reproduce the evaluated product, taking into account its obsolescence. In this case, the cost of developing an exact copy of the object using similar technologies and materials influences the evaluation of its value.
Method of expert evaluations
The method goes on soliciting the opinions of several experts on the cost of developing a software product. The procedure implies the participation of competent specialists who have extensive knowledge in the field of IT. The processing of the experts’ opinions takes place until the final variant has determined. The reliability of the expert evaluation method is pretty high. Thus, the data of a single expert cannot dominate.
Method of analogies
The algorithm deals with cases where a similar product already exists in the field. If previous developments have comparable characteristics to the new project, it is possible to compare the estimated software project cost with the object estimated.
Research and empirical methods
The research differs in the set of factors used for analysis, which includes the calculation formulas. Calculation methods and correction factors, which take as a basis for measuring the parameters and conditions of software development, have a significant influence on the results of the experiments.
This approach aims at estimating the elaboration costs in dynamics. That is quite a lot of factors that influence the expenses in the project elaboration can change It relates to the initial requirements set by the customer, developers’ experience, duration of the implementation process, training needs, etc. Variables embedded in the estimation algorithm allow you to calculate the costs, taking into account the elaboration of some or other indicators.
Functional points method
The method focuses on the so-called “functional points,” which are units measuring the volume of functionality, which the product provides to the user. The parameters include quantitative measures of user inputs/outputs and requests, files, and external interfaces.
The SLIM mathematical model
There is a definite relationship between size, schedule, and labor costs when evaluating software. If the size of the software increases, the labor and design time increases. At the same time, the number of defects also increases. When the size of the product has reduced, the time and labor costs decrease.
It is a statistical method for identifying patterns in data. A graphical network-type model creates to get information. In the design, the vertices describe events that are they are variables. Ribs connect given variables and represent causal relationships between them.
COCOMO (COnstructive COst MOdel)
A constructive cost model specifies a definite algorithm for the relationship between program code size and labor costs. The creator of the model is B. Boehm.
All the proposed methods allow us to classify them according to the approaches to software elaborationt evaluation mentioned above. The table shows the methods used in the mainstream.
Software valuation tips
Signs of fair pricing for an IT contractor:
- Transparency in logging hours and billing;
- The contractor should provide you with all their billing;
- You should have access to reports on each employee’s work at all times. You know what the time has spent on you’re paying.
When an IT company develops a development culture and uses development through testing, or a microservice approach, it spends less time debugging, code refactoring, and other unproductive losses. In the long run, this is beneficial to the customer: the project won’t get bogged down in bug fixing.
A high elaboration culture and the in-house team also mean that the team has interested in improving production processes.
The contractor should show you the entire team (at least present in general chats) so that there are no “dead souls” on the project. The number and qualifications of the developers should match what you see on the invoices for payment.
Main Editor in Hooks.Guide, Embedded Software Engineer.