Estimating in software development is one of its most important aspects. There is a lot of controversy on this topic. Some talk about the impossibility of correct estimation, which only harms the developers, while others strongly object to the use of time tracking, on the basis of which estimates are made. And still others agree on the need to estimate hours and tasks but often argue about software development time estimation methods. In this article, we will tell you how time estimation is carried out in our company, why we sincerely believe that without this it is impossible to debug the processes within the team and interaction with the client, and why we are not afraid of tracking.
Time estimation in software engineering is a determination of the number of hours it will take one developer to complete one specific task. These data allow us to assume how much of a budget will need to be invested, how many specialists need to be involved, and how much time will be spent in general to develop a product. Thus, the correct estimation of resources is very important — and it can be a real headache for project managers, unless you choose a method that minimizes subjective judgment, has high prediction accuracy, and meets stakeholder expectations.
Since time tracking helps you track patterns, it allows you to properly allocate resources and communicate with other technical and non-technical teams. Based on the data obtained, you can, for example, analyze what prevents a particular team member from completing the stated number of tasks in a certain period of time. It may be worthwhile to reduce the administrative burden, revise the process of handling unplanned issues, or much more that you can track.
Planning is important not only for team members but also for stakeholders. Estimates are just as important for them so they can understand the timeframes of the product launch and justify the development budget for themselves. And this, in turn, has a direct impact on their business goals and the decision to outsource the project. Clear planning allows you to make the work process transparent and provide customers with status updates, reports on created features, and bug fixes.
Since the cost of a project as a whole is often estimated based on the required development time and hourly rates of specialists, a correct estimate is extremely important for effective work with the client and his expectations. At the same time, based on tracking data, each team member is paid a salary depending on the number of hours worked per month, which is the most transparent method for both the company and its employees.
Tracking and planning help distribute work tasks evenly among different project teams while avoiding the downtime of individual specialists or overloading others. This is the same way to deal with overwork. Metrics also help you better understand when a company might take on a new project or hire new experts.
It is a mistake to believe that the effort estimation and planning can only be done by programmers on the basis of their experience and subjective judgment. Often, this estimate cannot be accurate, because it is impossible to take into account all the details before starting to write the code. Such nuances include purely technical aspects (unforeseen bugs, problems with software, libraries, scalability or architecture, required additional research), administrative aspects (requests not related to programming), and social aspects (illness, vacations, overestimation or underestimation of their capabilities, etc.).
Often, such problems are covered by setting gaps in the estimate to account for unknowns. But it also leads to poor planning. At the same time, engineers continue to follow a conservative plan, missing out on opportunities to optimize their work flow.
Sometimes, developers try to speed up by continuing to work overtime on weekdays and weekends. Without analytics, it is often very difficult to track these overloads. This is a direct path to burnout and deterioration in the quality of work.
Another problem in software engineering task estimation we would like to touch upon is the ambiguous attitude of programmers to time tracking. Some experts say they won't agree to work in teams that use different types of software to track elapsed time and completed tasks. They justify this by the fact that they experience mistrust from their employer and even a kind of surveillance.
In fact, our company views this issue in a completely different way. We believe that a time tracker for a remote outsourcing team is not a tool to track every click of our employees and keep them in the workplace for eight hours straight. This is primarily necessary to improve productivity and optimize our processes. We do not consider it necessary to monitor the screens and open applications of our colleagues. We believe that we need to collect performance analytics for the most accurate planning, and this is the only way it works.
Among the different time estimation techniques in software development, we adhere to one based on a statistical approach.
We created a custom project management system for our internal needs. Timer solves all our management tasks: in it we plan all our project sprints, track time and progress, and generate salary reports and invoices.
To properly plan and estimate tasks, we have built many different functions into Timer. The system allows us to plan several sprints at the same time and track the status of projects.
During the planning phase, we use t-shirt sizes to estimate features. In order to determine how long it will take for new tasks, we use the statistics of previous projects.
We calculate metrics for each individual expert based on the size of the tasks and the specific project. This is very important, since the same person can complete a task of the same size in different projects in a different number of hours.
In addition, we include in the forecast details by type of activity, since usually the work is not limited only to writing code but also includes calls, preparing documentation, and much more. This allows us to correctly estimate the size of the task. And since we carefully collect and analyze statistics on our team, we know how long the next similar task will take. This way, we automatically calculate various metrics such as performance-per-day and performance-per-sprint for each team member.
Accurate task estimation allows us to meet deadlines and commitments and provide realistic plans to our clients.
You can read more about our system in the Projects section:
Timer: Project Management and Time Tracking System
To learn more about how to estimate time for a software project, you can contact us.
Every business faces the choice of developing or purchasing software. In order to decide, you need to understand what is the difference between custom vs. off-the-shelf software.