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.
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:
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 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. With this come increased coordination 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.
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.
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.
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 an 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.
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.
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:
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.
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.
I wanted to personally thank you for your hard work on this. Working with CodeIT turned out to be a really pleasant experience for us.
Since the beginning, your team seemed to be really well structured and everyone understood its role and responsibilities.
Also, the quality of the work CodeIt delivered was exactly what we expected it to be.
This really facilitated our daily work and help us to keep the client happy.
I hope this first experience working together help us to build a long-term partnership.
I posted this project and within minutes guys from CodeIT bid on the project. I asked a few questions through Skype to feel confident that they could do the job. I felt comfortable with the knowledge and skills and accepted their offer. I am usually hesitant to hire from offshore. Not because of the work quality but, usually the language barrier and working hours. Guys from CodeIT was available during NY working hours and after pre-screening on Skype, I could tell they know English well.
CodeIT has been working for us for one and a half years. We are ending the project now because it is complete. CodeIT built our platform from scratch and also provided further development and support for the rest of the contract. They are very strong in several areas: back-end development (specialising in Zend Framework); front-end development; server administration; project management. Their project managers speak excellent English and are courteous and professional. Their developers are fast and skilled, and up to date with the latest technologies. Their expertise helped us to build a highly reliable website which can serve a heavy load of traffic. Finally, they are all very nice people, and I cannot recommend them highly enough.
Collaboration with CodeIT gave my business great prospects for its expansion and scaling. Together with CodeIT professionals, we grew our product line from three to fourteen products within only one year. I can rely on these guys to get a high-quality product on time.
This was our first project, and I am so happy that it had a smooth run and a successful resolution.
I sincerely hope that this is just the first step in our long and mutually amiable partnership.
Thank you CodeIT team for being so thorough and professional.
This was the biggest project I’ve made so far and CodeIT helped me and our company through it in a perfect way.
Working with one very skilled project manager and multiple developers and testers with him made our project fly in a very short period of time, and with a super high quality!
I have worked with CodeIT for over a year now on a complex application development project and they have been excellent. They have been flexible with scaling resources up and down as I’ve needed it, their project managers have been extremely responsive and I hear from them every day and never have to wonder where they are as I have with past outsourcing projects. Highly recommended if you’re considering outsourcing software development.
Feel free to contact us. We will answer all your questions and provide you with fast and thorough feedback.