Today, we are talking about the Project Estimation. Do you know that over 66% of projects overrun costs? In this article, we will describe a software estimation process that helps to avoid overspending. On our channel, we share thoughts on recent developments in the tech industry, follow us not to miss new articles.
Why Do We Need Software Estimation?
Estimates provide value to both clients and providers. So, clients get information about the time required to complete the project and the approximate project budget.
For the provider, estimation helps to organize work and set deadlines, define the optimal number of developers and calculate planning metrics.
Having nearly 10 years experience in estimating software projects, we are excited to share some ideas.
Software Project Estimation Process
1. Define a Project’s Complexity
Before starting any work define your project’s complexity to understand the team capacity, risks that can influence the project’s duration and a best fit methodology to use.
2. Add a Risk Buffer
Add a risk buffer of up to 20% of the overall project time to avoid common risks, such as issues that are hard to foresee new technologies you will have to implement miscommunications inside a team, etc.
3. “Time Eaters”
We advise adding at least 20% of a project’s time to cover various “time eaters”, such as talking to Solution Architect, PMs and colleagues, reviewing the code, conducting research, etc.
4. Predict the Team Capacity
Well, after you have identified all team members, create a table that displays their roles, responsibilities and the estimated time they’re going to spend on their part of the project.
5. Write User Stories
They give the development team a vision of how a certain feature should work and look like and for more information about the best practices of how to write user stories.
6. Break each story down into a series of tasks
Each one has an estimate of story points. Story points are units of measure used to estimate the effort required to implement a piece of work. A nice way to assign story points to tasks you are going to perform is to use the planning poker. For that:
- Give a set of poker cards to each team member.
- Name the task and let each team member choose one card.
- Let team members explain why they have chosen that number particularly for story points.
Don’t forget that only those who are responsible for completing tasks can vote for story points.
7. Calculate the Project Duration
Last but not least is to combine all the knowledge you have gained and to split the whole project into sprints. Gathering the findings of the steps from above, you’ll get the formula:
Duration of the project = Overall task time estimation (which is E) + E*Risk buffer + E*time eaters.
5 Common Project Estimation Techniques
1. Top-down Estimate
According to this approach, you first estimate high level chunks of the feature and then decompose them progressively into smaller chunks as you get more details.
2. Bottom-up Estimate
Here, each task is estimated individually and then those estimates are rolled up to give the higher level numbers. You will receive more accurate results than the top-down method but it requires more time.
3. Analogous Estimating
It is used if your current project is similar to past ones. You can take the data from previous work and extrapolate it to provide your estimates for the new project.
4. Parametric Estimate
It auto calculates estimates using detailed data from previous activities. It is a quick and accurate method but needs robust data to feed it.
5. Three-Point Estimating
It calculates the average of an optimistic, most likely and pessimistic estimate of the work. This is often known as the PERT:
- Program
- Evaluation
- Review
- Technique
Useful Tools to Track Estimation
Among the most common tools we define:
- Jira with its multiple functions
- Trello for project management and task tracking
- Asana that allows organizing all the details of your work
- Google sheets and MS Excel which are good for calculation purposes.
This article was prepared by the EZtek team. We provide Software development, UI/UX design and Testing services to top brands worldwide.