A common source of frustration for developers, regardless of experience level, is time estimation and management. The ability to accurately estimate and manage projects is a crucial skill in an industry notorious for budget and schedule overruns. In fact, one study states that nearly 66% of software projects exceed their allotted estimates! Time estimation is certainly a challenge, but the solutions are simpler than you might think.
Here are 9 tips to help you and your team start making better predictions for the time needed to complete a project. Your CTO will thank you for putting these tips into practice. Let’s get started!
Begin with the end in mind. The first step to any project should be planning. By developing a habit of carefully planning your project, you’ll become much more comfortable with what it takes to actually complete it, while also keeping specific teams accountable for their work.
When you’re planning a project, you should consider when you need the project done by, the requirements needed (i.e. technologies, features, implementation, etc.), and the overall management of the project.
The fact is, this is a very valuable skill that can be learned. Let’s discuss one easy way you can begin engaging with time estimation in the next tip.
To Summarize: Do spend time planning and making thoughtful estimations, even if you are an experienced developer.
Each person works differently, but it can be challenging to perceive your own work ethic and style. Tracking your hours and building a timesheet of data will enable you to learn about your work style and empower you to make more accurate estimates in the future.
Start collecting data that compares estimated hours relative to actual hours of work. You can then divide the estimated hours with your actual time to create a velocity—a concrete number that represents your ability to estimate and complete a task accordingly. The closer your velocity is to 1.0, the more accurate your estimation was. This data is a powerful tool for a variety of reasons:
- It speeds up the time estimation process in the long run
- It reveals weak spots in your expertise or skill
- It offers tangible proof of improvement or growth.
For a more detailed breakdown of this strategy, see Joel Sposky’s article, Evidence Based Scheduling.
Tip: If you are struggling with your initial estimations, begin by testing and documenting a few tasks that you can already accomplish well. Break it down into smaller steps, and estimate the completion time for each one. Once you finish it, compare your hypothesized estimate with the actual time. If your estimate is accurate, repeat this process with a more complex task. As you test your work, you’ll develop a sense of your estimation capacities, and you can start building charted data.
To Summarize: Get involved with the time estimation process by tracking and charting your work and estimates. This is the only way to better manage time estimations, and it will empower you as a worker!
Time management and time estimation are not just about numbers, however, particularly if you are working on a team. The key to effective time management is good communication at all levels: between team members, between workers and managers, between clients and freelancers. Communicative work relationships speed up the time estimation process and clarify individual responsibilities. You will come to better understand each other’s work process and styles, which will ease the collaborative and managerial operations.
Careful word choice will also prevent miscommunication errors. In Steve McConnel’s book Software Estimation: Demystifying the Black Art, he clarifies the distinction between an estimate and a target. An estimate represents the time required to implement certain features, while a target defines the number of features that can be accomplished by a specified date. It is easy for these terms to be used interchangeably, which can lead to miscommunication about the tasks or goals at hand. So, when you are managing time estimations, this distinction will clarify your expectations and expectations of others.
It is also effective to maintain smaller group sizes when working on a team. The larger the team, the more vulnerable it is to communication errors and overlap. Studies show that teams sized between 5-7 people are most effective. If the team is larger, consider organizing members into smaller sub-groups.
To Summarize: Communication will save your project.
Many people assume that they can estimate a project based on days or even weeks of work. Instead, a more effective method is to break down your schedule by the number of tasks required for completion, which can then individually be measured in hours. This also offers you a more tangible and specific overview of the work that you will be doing, and you are less likely to forget important steps along the way.
The total number of hours or tasks required for completion depends on the project in question and the experience of the developer. Generally, if a project totals to more than 16 hours, you may need to readjust by building a team or disseminating the work to others.
Measuring estimates by smaller tasks also prevents the problem of overestimation. This is sometimes referred to as Parkinson’s law, which asserts that work expands to fill the allocated time for completion. In other words, if you allot an entire day of work for a particular task, you will likely spend the entire day working on the task, even if it could have been completed in only a few hours. If you break down a problem or project by smaller subtasks, it is harder to overestimate the time necessary for completion since you are measuring individual tasks rather than vague goals.
To Summarize: There are many benefits to breaking down a project by smaller tasks rather than estimating based on the ultimate project outcome.
When unexpected problems or bugs emerge, resolve them immediately and charge the time it took you to fix that problem to the original task you were working on. This will help you better track how long it took you to complete the code in its entirety.
While working on a project or task, you must leave extra time in your estimates for unexpected changes. A time estimate should account for all the little things that eventually add up to an overrun. Consider changes in your productivity levels, bug fixes, coffee breaks, time starting up the computer, interruptions, etc. Remember, there is much more to completing a project than the actual time spent at the computer.
It is up the developer to create their own estimate based on their own work ethic and experience. Being persuaded by others to alter that time, including project managers, employers, or fellow team members, may result in an inaccurate estimation. Trust your gut and experience!
There are many different approaches to time estimation and management. The strategy that you use might differ depending on the complexity of the project at hand, the number of requirements, the size of the team, etc. Different strategies of time estimation accommodate these factors in various ways, so it is useful to consider which method will best suit your unique needs. Keep in mind that a better method may differ from the one that you are accustomed to using.
Let’s break down a few common approaches to managing time estimations that you may want to consider.
Many teams and companies implement the Scrum framework for determining and managing time estimations. The Scrum framework is utilized in many of the methods of estimation provided below. Generally, Scrum teams do not work in a top- down fashion, where a manager assigns work to a team member; rather, the Scrum framework asserts that the whole team is responsible for the project, which reorients the focus onto the group’s collective work required rather than individual effort. Scrum teams break down their projects into small tasks that are measured in relative units rather than absolute ones. This approach reduces risk and overestimation.
For more information about the Scrum framework, check out the Scrum Guide.
Break down the project into requirements and assign each a time estimate based on: 1) the complexity of the requirement, and 2) the experience of the developer who will complete that task. Add up each component for a final time estimate.
Pros: This approach is useful if you are working on projects that are familiar to you. It is easier to estimate each component if you generally know what to expect.
Cons: This approach is not as suited for large projects which can take a significant amount of time to estimate. It also does not inherently account for differing work processes of team members.
This approach uses time estimation data gathered by a worker or a team from previous, similar projects to estimate the time required for a new project. In other words, a team, company, or worker must track a repository of time estimations from previous projects. You can then adapt those estimations in comparison with the current project and determine a probable time estimation.
Pros: This process saves time and is tailored to the unique work processes of the team in question.
Cons: It takes a while to develop and is always in flux as the team adapts to changes.
This process enables a team to arrive at a collective, group consensus about time estimation based on questionnaires provided to a panel of experts. These experts will respond to a series of questions, and their responses are aggregated, adapted, and modified based on group response. There is also adapted version of this method called the Wideband delphi, which you can learn about here.
Pros: This process enables people to express concern or opinion anonymously, and it accommodates the needs of a large group.
Cons: It is not as useful for small groups or for people who have limited knowledge of a particular topic.
This method is an adaption of the Wideband delphi method from above. Similarly, it is a group consensus-based approach to managing time estimations. It uses a special deck of cards based on the Fibonacci sequence to do so. Members of the team will play a numbered card face-down, and then the number is discussed as a possible time estimate for a task. Many people favor this approach as it combines three estimation methods into one: disaggregation, analogy, and expert opinion.
Pros: This method can prevent a group from cognitive biases, such as anchoring.
Cons: Similar issues to traditional estimation.
To Summarize: There are many different approaches to time estimations, and they each tailor to different needs, work styles, group sizes, etc. Explore different methods to learn the most effective approach for your unique needs. Don’t be convinced that an overly prescriptive approach to time estimation is necessarily better!
Using the right project management software will empower you and your team to stick to your goals. Just as different estimation techniques differ depending on the project in question, so do the management programs, which address needs differently. Are you looking for a program that implements Gantt Charts? Try Zoho Projects. Do you need a tool that enables visual aids? Trello might be a useful tool. Here’s a list of a few others that are worth exploring: Wrike, Pivotal Tracker, JIRA, YouTrack. Basecamp, Asana, and Redmine. An article published on Medium provides an excellent breakdown of many of these programs.
To Summarize: There are dozens of tools designed for time estimation and project management. Once you find a time estimating technique that best suits you and your team, consider using one of these tools to keep you on track and in communication!
Know your project well.
- Time estimates will be easier if you approach your project holistically. Consider the people involved, the time of year (work ethic is impacted by holidays, school schedules, weather, etc), overarching goals, the scope of the work, task complexity, skill levels etc.
Break your project down into smaller parts.
- Divide complex projects into detailed tasks.
Get engaged with time estimation and management
- Become a better time estimator by tracking and testing your skills. The process makes your life easier to manage in the long run.
Try new ways of managing time estimation.
- Don’t get stuck in old ways of time estimation that may be slowing you down. Try new methods that may be more effective for your and your team.
What methods or tips do you have for time estimation?