How to Make Accurate Project Estimations
Why Estimation Is an Essential Stage of Any Software Project?
Many outsourcing software projects fail because their project estimate is not reliable. Failure means the developer did not meet the deadline, overran the budget, or did not deliver what was expected. A study conducted by McKinsey found that 66% of software projects have cost overruns. A third of them go beyond the estimated schedule, and almost 20% of them fall short of promised benefits.
Sometimes it seems that the project estimation process can significantly increase the cost of the pre-development phase. But it is crucial to realize: the resources spent at the initial stage of the project are a good investment in the outcome. The more accurate the project estimation, the more customer-satisfying the result will be. That is why a correct estimate is a crucial part of project management procedures, and it is really worth it.
What Is Project Estimation?
Project estimation is the process of calculating and predicting the costs necessary for its successful realization. It is usually handled during the project discovery stage. In software development, estimations imply making predictions regarding the most realistic scale of efforts that should be put into developing a software product. This information allows to determine the amount of money that needs to be invested in the project, the number of specialists who would work on the latter, and, finally, the time required for all that.
Accurate Estimating: A Complicated but Crucial Task
As estimating software development is based upon incomplete, imperfect knowledge and assumptions about the future, they all have uncertainty. There is no such thing as a precise, single-value estimate.
How to do the estimation for a software project properly? If we take software development models into account, the more traditional 'waterfall' approach implies that all the software specifications must be provided upfront before the project estimation process starts. But now, everyone is going agile.
Stakeholders want to begin immediately after preparing brief requirements and then add new features literally on-the-go. MVPs (Minimum Viable Products) are released quickly, feedback is obtained, and improvements are made iteratively. In those conditions, planning and estimating the project can be rather challenging.
So the question we want to answer is, 'How can we cover all those uncertainties and make the project estimation as realistic as possible?' This article will walk you through how we approach the software project estimation process at Upsilon and share some tips that help us make it more accurate and robust.
Key Components of Project Estimation
Every project estimation is a triangle balancing act with three components:
As you adjust one area of the project management triangle to meet project needs, something else must change in order to keep it balanced. For example, when increasing project scope, the cost or the time must increase as well. One more example: if the project's cost decreases, either the scope or time should decrease to balance it out.
The project management triangle is an important part of the project estimation process due to a deep connection between these three elements. Having enough information about two variables, you can easily estimate the third one.
Sometimes two more elements are included: project risk and resources. They are no less important than the triple constraint. Every project comes with risks and to mitigate or take advantage of them, it is a good idea to include a risk management plan when estimating software development.
As for resources, that is one more element that needs to be considered. Resources are staff, vendors, contractors as well as equipment. Smart resource management is essential for successful team collaboration. By identifying what resources are needed and when, teams can reduce delays due to equipment shortages or personnel unavailability. Knowing who has been assigned which task enables leaders to ensure that workloads stay balanced across the board.
Project Estimation Methods
Now when you understand the importance of project estimation and the elements of it, let's proceed and explore the most popular project estimation techniques.
When a client needs to get a project done in an exact amount of time, top-down estimation technique offers the best solution. Utilizing this classic method starts by defining an overarching timeline and then logically breaking it down into progressively more granular phases and tasks – known as Work Breakdown Structure (WBS) – so that all objectives can be met within the allotted timeframe. Top-down estimates provide clients with peace of mind knowing their projects will stay on track for delivery before the deadline.
This is the reverse of the above project estimation method. In it, you estimate each task individually - then combine them for a more precise schedule. Though it takes longer to estimate this way, you'll ultimately get a more accurate estimate of the time needed to complete the project.
The analogous project estimation technique involves comparing your current undertaking with one similar in scope that has already been completed, leveraging past experience for greater precision when resources are limited. By studying variables from previous projects and applying them top-down to estimation calculations, you'll have more data — and accuracy — to rely upon.
Parametric estimation is another powerful estimation method to gather the insights of past projects and incorporate it into current time estimates. By utilizing parametric modeling, managers can more accurately predict timelines for their upcoming venture by adjusting old project data in accordance with any discrepancies between them. This way, it is possible to get more accurate estimates based on the details from a previous project and pro-rating it.
Consultation with experts or those with experience managing the type of project is often the most effortless and reliable method for estimating the project. This technique provides an advantage in its flexibility, allowing estimators to apply it either top-down or bottom-up according to their current objectives, OKRs and KPIs. In cases where usage of experienced personnel does not coincide with your present conditions, those experts' views should still be taken into account — though weighed against other estimation approaches as well.
Project Estimation Process: How We Run It at Upsilon?
Let's look at the whole process of project analysis and estimations at Upsilon: from the moment of figuring out the client's expectations to giving the final project cost estimation.
Creating reliable estimates for software development is a multistage task. At Upsilon, we always start by digging into the client's main challenges to paint a clear picture of their business and development goals. It's important to gather as much information on the future project as possible.
There are two main sources where we get it:
- Online video calls via Skype, Zoom, or Hangouts: we discuss the project in general by asking questions and getting answers;
- Documents and data provided by the client: specifications, mockups, wireframes, use cases, user stories, software specifications, etc.
All of this helps us estimate the cost of building the client's product more precisely. The more information we get our hands on at this stage, the more accurate our project cost estimation will be. Here is a list of things we usually try to clarify at the very beginning:
- What is the pain that you are solving for your customers?
- What are the main features of the product?
- What platforms will the product be based on (web, mobile, back-end)?
- What existing components or parts of the system do you already have?
- Can you describe the main use cases of the new application?
- Can you prioritize the functions of the future product?
- Do you have a specific tech stack that needs to be used for this project?
- What is your expected timeframe for the project?
- What is your expected budget for this project?
Once we are sure that nothing is missing and that we're in line with the client's expectations, we go to the next phase: assembling the team.
Assembling the Right Team
After collecting all the information, we gather professionals who have the most extensive competence in the respective domain. The team responsible for the project estimation is usually composed of senior-level specialists and includes:
- Senior back-end developer;
- Senior front-end developer;
- Other specialists upon request: a project manager, UX/UI designer, QA specialist, technical writer, and others.
In the vast majority of cases, specialists who make the estimation subsequently become a part of a project's web development team. The key criteria for selecting that team's members are:
- Professional expertise: the relevant experience of working with specific technologies and similar projects;
- Ability to start the project as soon as possible;
- Other factors: presence in the client's timezone, full- or part-time employment, language proficiency, etc.
Pro Tip: Assembling the right team is one of the most sensitive questions in software outsourcing. A customer wants to be ensured that the most skilled specialists with relevant expertise will be assigned to the project. That will guarantee the expected quality and hassle-free delivery of the final product. Also, customers want to see 'real faces' not just abstract 'senior front-end developers' in the estimations, in order to understand further whom they are speaking to on the conference call. That is why every project estimate made by Upsilon is accompanied by a document of the CV format with key information about each team member, including his or her:
- Skill matrix
- Project history
- Personal info
Research and Analysis
During this phase, the team members set up a number of meetings to discuss project requirements, exchange their opinions, brainstorm ideas, and try to find answers to vital product development questions. If some details need more clarification, the discussions may alternate with the research sessions. At the end of the Research & Analysis phase, our team provides potential clients with the following deliverables:
- High-level architecture and infrastructure design;
- Recommended tech stack;
- Mockups and wireframes (if not provided by a client);
- Desired breakdown of the team;
- Rough timelines.
Defining Scope and Size of the Project
The next step of our project estimation process is defining the scope of work that covers software requirements and creating an app or website development timeline. At Upsilon, we use the Work Breakdown Structure (WBS), which visualizes each software development stage with related tasks.
To achieve the project's goal, we split it into milestones, which are broken down into tasks, subtasks, etc. We define a milestone as a marker that indicates an achievement or a deliverable, for example, the completion of a large task or reaching a phase in a project. For most of the projects, we figure out the following milestones:
- Discovery phase: documentation analysis, choice of 3rd party software tools, decisions on possible integrations, preparation of wireframes (if not provided by a client), feature prioritization, etc.
- Design phase: collaborative work with a product owner that can include design theme workshops, brand identity design, UX and UI design, prototyping, etc.
- Project setup phase: setting up of infrastructure, deployment of environments, configuring of security, etc.
- Development phase: development of functionality based on user stories (and also tasks grouped into milestones). It can include user authentication, messaging, integrating payment gateways like Stripe, PayPal, or Braintree, mapping, video streaming, reporting, etc.
- Testing phase: functional QA testing, usability testing, user acceptance testing (UAT).
- Delivery phase: transfer of documentation and intellectual property, deployment, and implementation of the solution, including publishing on marketplaces, training, presentation of the product, if necessary, and more.
How does it work in practice? Here you can see an example of how we broke down into milestones and user stories the structure of a health & wellness digital platform.
Another significant question is to decide whether to build a turnkey solution or start from the Minimum Viable Product (MVP). About 80% of startups and SMEs we worked with had an MVP first. This may also be a factor to consider when choosing between outsourcing models. From our experience, we recommend to ignore non-primary functions and focus on MVP development before the finished product, especially if:
- Project requirements are unspecified;
- You're still trying to find product-market fit and validate it;
- Features must be added and tested quickly;
- Budget is limited.
Pro Tip: When defining the scope of the project, it can be very helpful to visualize everything needed to be accomplished, organize tasks into multiple levels, and display these elements graphically. For that purpose, we use the Miro platform. With Miro's help, we develop the project's hierarchical structure that makes it easier to oversee a complex project and make sure every task gets done.
When creating a WBS for a future project, we follow four fundamental principles:
- Hierarchy: every 'child' on the graph has a hierarchical relationship with its parent task.
- 100% rule: every level of the graph must make up 100% of the 'parent' level, and it must have at least two 'child' elements.
- Mutually exclusive elements: every element at each level has to be mutually exclusive - there can't be any overlap between deliverables or work.
- Outcome-oriented: graphic depiction must focus on the outcomes rather than the activities required to produce them.
Project Estimate by PERT Method
After conducting a detailed scope breakdown, we start to create a more accurate project estimate using a PERT (Program Evaluation and Review Technique) method. We calculate a realistic project cost estimation using an optimistic case estimate, a pessimistic case estimate, and a most likely case estimate within this approach. There are different ways of interpreting the numbers depending on how we want to weight potential risks, but in most cases, we use the formula:
(optimistic + pessimistic + (4 x most likely))/6 = expected estimate
Let us consider an example to see how these formulas work. Let us assume we have to calculate the expected travel time it takes to deliver a shipment from point 'A' to point 'B'. There could be 3 different scenarios:
- Optimistic scenario: roads would be free of traffic congestion, and there will be no stopping at traffic signals.
- Pessimistic scenario: there would be severe traffic bottlenecks (may be due to a major accident), or there will be some unscheduled stops (may be due to vehicle breakdown).
- Most likely scenario: there would be normal traffic conditions.
Let us assume that our 3 estimates (optimistic, pessimistic & most likely) were 450 minutes, 2250 minutes, and 900 minutes respectively. Putting these values in the formulas, we get:
Expected travel time = (450 + 2250 + 4 x 900))/6 = 1050 minutes
It essentially means that, in most cases, the expected travel time will take 1050 minutes.
How can it look in a real project estimate? Let us explain how we estimated the task 'Credits (Bank) & Prize claim' by PERT method for a social sports application.
- Optimistic scenario: 7 days (including 7 days for back-end and 6 days for front-end development. Both teams work simultaneously).
- Pessimistic scenario: 14 days (including 14 days for back-end and 12 days for front-end development).
- Most likely scenario: 11 days (including 11 days for back-end and 10 days for front-end development).
- Expected estimate: (7 + 14 + (4 x 11))/6 = 10.83 days
At the output, we get a project estimate which takes into account some uncertainty and risk in tasks. The PERT method can be quite time-consuming, but it can provide a high degree of accuracy. Yet if you need a quick estimate, you may use the MVP cost calculator.
Building a Timeline Chart
After determining the total time needed for each task and milestone, we build the project timeline. We line tasks end-to-end, adjust their lengths to reflect the amount of time allotted, and then add milestones. We turn that all into a solid timeline chart with expected delivery dates provided. It is especially helpful to have such data visualization on projects where several teams work simultaneously on several milestones.
Such a timeline chart shapes the entire project, indicating which tasks are to be completed at which stage and which resources need to be involved along the way. It also allows us to quickly see the proportion of time allocated to each project task or milestone and provides a visual interpretation of how the project will run phase by phase.
Project Cost Estimation
After estimating the number of hours of work required to complete the defined scope, it's time for project cost estimation. We calculate the total project cost by multiplying the number of man-hours (estimated using the PERT method) by the applicable rates. For ease of calculation, let's make the following assumptions:
- One man-hour = work completed in an hour of uninterrupted effort by a specialist
- One day = a standard 8-hour working day
In IT projects, hourly rates range depending on the specialist's professional category, which is defined by his or her job functionality, level of seniority, uniqueness of skills, etc. Of course, it will not cost the same for one hour of a junior programmer as a senior one. Therefore, when estimating the project, we take into account that the multiplication of the cost must be factorized by the hourly rate of each professional category:
Total cost = (RH1 x H1) + … + (RHn x Hn)
In this formula, RH1 is equal to the hourly rate of the professional category #1, and H1 is the total number of hours estimated by the professional category #1.
How does it work in practice? Here you can see the software project cost estimation example:
Based on the numbers above, the total cost of the project will be: 55x180 + 55x150 + 45x60 = $20850. Surely, there are other ways to calculate the cost of the product. As such, the MVP pricing will differ from developing a full-scale solution.
Having put all things together and made our calculations, we share it with the client in person, explaining our project estimation instead of just sending over a number without context. We schedule a meeting and go over the document with them, row by row. It allows us to discuss any questions that may have come up along the way. If it becomes clear that the project isn't doable within the client's limitations, we can also help to prioritize the functionality and start by developing a minimum viable product (MVP) or even a proof of concept (POC). We try to include this kind of out-of-the-box thinking in our project estimation process whenever possible, to add value at every step of our collaboration.
Estimating software development is prone to error. The overall complexity becomes fully visible only at the point of execution. In the conditions of uncertainty and lack of information, there is a temptation to provide lower numbers to outbid the competition. But that doesn't mean that the final price for your product will be lower. It may just mean more stress, more unforeseen costs along the way, and as a result, your dissatisfaction. And this is definitely not how great products are built.
Our goal is to predict as closely as possible. The best way to the best way to be sure of this is to partner with us. Learn more about our project estimation process with a quality at its core, share your thoughts with our developers, and enjoy our transparent communication. Upsilon provides MVP development services for early-stage startups as well as team augmentation and other services for growth-stage businessess. So, don't hesitate to contact us, we will be happy to do our best to make your ideas happen!