A phrase commonly heard by people working under managers or project leads is, “what will be the estimated time for completing a feature, software, or project?” It has become standard procedure to use this term, and is also an irritating experience, especially when it comes to estimation without proper preparation or judgment. There is no way to guarantee the estimate for a difficult project because estimation is not an exact science. Commonly, there are quite a lot of variable factors that come into play. In general terms, estimation is a complex subject. Hence, we are going to cover its basics and essentials in this article.
Anyone looking to start their journey into the wide world of estimation is going to encounter some bosses who create an estimated target for their teams. We are going to provide answers that will help in developing a project estimate that’s based on proven principles of estimation and doesn’t rely solely on the judgment. The beginning of this article is only going to cover the schedule, effort, and size of the estimation, while the second part is going to focus on metrics related to the group or organizational projects. Therefore, the first part of this article is going to focus on the challenges faced during estimation, followed by the purpose of the estimation, and the last part is going to cover misconceptions related to estimation.
The challenges or problems in estimation
When you’re estimating any kind of software project, you will be omitting various factors that can affect someone’s overall estimate. Before providing an estimate, you should consider the following:
- Project type and size
The size and type of project will influence the estimation process. You can’t rely solely on past experiences of working on smaller projects for making estimates on large-scale projects. Numerous studies have shown that the amount of effort you put into any project increases with the size, type, and scope of the project. Larger projects need more integration, and therefore, have bigger teams working on them. This impacts total effort, mainly because there is more communication required among team members working on the project. This leads to increased coordination of efforts. All of that will have an impact on the estimated time required to complete the project.
The type of project is also important because any organization that has experience in developing desktop applications will need more time to complete web applications. Therefore, when you are reflecting on historical data or matrices, you must think about the type or scope of the project.
- Level of ambiguity
Every single project out there undergoes various stages of development. These will be present from start to finish; from delivery, testing, development, design, requirements, and towards its inception.
Some requirements will change throughout the course of the development and will be followed by new problems and new parameters. This entire phase will cover the estimated cycle. If you want to figure out a project’s estimate, you shouldn’t do that during the beginning of a project, since the time-frame or estimate isn’t going to be accurate. However, when you compare that estimate to the final stages of the project, you will get a much more holistic estimate.
The level of ambiguity will decrease throughout the course of the project, as the progress is made on it. If you complete another estimate of the project towards the end of the development phase, you will get a much better estimate than the one you made initially.
- Different assumptions
There are other factors you must consider when it comes to the programming language since it will support a bigger eco-system. The amount of community support of the selected language will increase the productivity levels of the development team, which is the case when the time comes to take out an estimate for any project.
When estimating a project, it is imperative that we choose an available developer. This ensures that project engagement isn’t compromised throughout the development phase.
Different approaches and purpose of estimation
There are various types of situations that everyone must consider when it comes to estimating a project. The first instance is when the boss gives you a timeframe after providing a list of requirements or features for the project. You’re asked to provide an estimate to finish all these tasks for completing the project on time. Once you offer the estimate to your boss, they will place this into context for the entire scope of the project.
Once this situation has been dealt with, you can then estimate if you have a time limit. After completing this estimate, you will not be placed under any pressure to finish the project on a deadline. This is an extremely rare occurrence in software development project estimation.
The second instance is where you have a list of features that you must implement, and you’ll be given a deadline to finish the work. In this instance, your focus must be on developing an exact estimate for the features you can provide before any deadline. This instance is where you must focus most of your time in any given situation. There will be times when you will have resources, which can deliver output before a deadline. In this situation, you must learn to negotiate or select various features that can be used for implementation purposes.
You can’t rely completely on the estimation since it doesn’t guarantee if you will complete the project at any given date. All you require are good project management skills, and a good team to meet the estimate and finish the project on time.
Advantages of estimation
Once you have learned the art of estimation, you must develop a framework for completing and controlling the project. You can’t measure the performance of any project during its course. Estimation ensures you have a better allocation of resources. It offers foundational support, so you can develop sound plans. Great estimation offers a solid basis for greater project progress and greater risk management.
What is done in estimation?
Whenever someone is given the task for completing an estimation, there always three factors that are considered, namely:
You can only adopt one out of various techniques to calculate any of these estimates. It is better if you choose multiple techniques for estimation. This helps in providing separate figures for estimation, which will allow you to account for mistakes when something goes wrong during an estimate. When it comes to estimation, the first thing you must consider is the size of the project.
1. Size of the project
The main basis of estimation will revolve around the size of the project. The size will be covered in function points or lines of code (LOC). These are the 2 main units used for calculating the size of any software, and they can’t be used during the start of a project.
Once you have these functional points, you can then begin to estimate the LOC that is needed for integrating function points. For instance, if you use one function point in C#, you will require 50 to 90 lines of code or about 65 lines of code to come up with a median value. You can use other units to gauge the estimation size, which includes the following:
- Number of web pages
- Number of use cases
- Number of stories
Once you have these units, you can easily gauge the size of the project and come up with an estimate.
2. Efforts in the project
The effort exerted in the project will be figured out by calculating the software size. There are various models for computing the effort in a project. You can do that through person-hour, staff-week, or staff-month. The month and week will depend on the policy employed by the company. For instance, if a company has 36 hours every week. When there are more people in a team, you must consider them as well, since they will impact the scheduled timeline.
3. Creating a schedule for the project
Once the estimation has been calculated, you can create a schedule for project completion. There are different techniques and models for estimating the overall schedule for a software development project. You can calculate the schedule in either weeks or months. The main point will be figuring out how much time is compressed by adding more resources. However, in software project estimation, you can’t compress this number to infinite.
To make things clearer and simpler, we will discuss the flow of estimation, which can be charted as the following:
Size ---> Effort ---> Schedule
You can estimate the size of the project based on estimating the effort, and you can gauge the effort required in a project by calculating the schedule.
The different types of techniques used in project estimation
There are 2 main types of techniques used for project estimation, which include various techniques in the primary category, are based on scientific methods like COCOMO. In scientific terms, we have various mathematical equations, and using them will help calculate the schedule and effort required in any project. The second category will be based on the following empirical methods.
There are some techniques that are good for estimation while others are good for sequential. However, all of them are iteration-based on development models. Most of these techniques are meant for use at the beginning of a project, and the latter half is meant for use later in the project. The description of these techniques will depend on the size of the project.
We have only covered the topic of estimation briefly here because there are various challenges that appear during the estimation process. The estimate process used here will help you manage projects better, and you will get better at estimation through personal experience. It is important to remember that estimates can vary and change throughout the course of a project. This is why it is necessary to use separate templates for managing software development estimation projects.