Resources, budget, and timeline — your clients need you to provide accurate estimates on all three before taking on a new software project. Underestimate the time and you’ll have clients complaining about missed deadlines. Go over your planned budget and you may not even see your project to completion.
Traditionally, the goal of forecasting solutions has been to eliminate this uncertainty from software development. But, as it turns out, removing uncertainty is an impossible endeavor. Even if you somehow managed to create the perfect development workflow, external factors like sudden market shifts and supply chain issues can still lead to delays and deficits.
So here’s a little secret: The key to software forecasting is not to eliminate uncertainty but to prepare for it.
By collecting historical data on your team’s performance, you can make accurate forecasts for future projects and aid decision-making on your resources, budget, and timeline. You can minimize risk by accounting for variables you would have otherwise missed. This detailed guide for project managers will cover the step-by-step process for using data to create precise and dependable software forecasts.
What Are Software Forecasts?
Software forecasting is the science of making data-driven predictions about the three most important variables in software development: resources, timeline, and budget.
Let’s start by breaking down those three variables:
Resources refer to the assets required — both tangible and intangible — for a development project to succeed. This can include intellectual labor, developmental tools, as well as the raw data that goes into making any new piece of software.
Timeline refers to your project schedule. The schedule is calculated in billable hours and often broken down into different tasks, phases, and iterations.
The budget is an advanced estimation of the amount of funds required to see the software project to completion. It’s influenced by the resources and timeline necessary to complete the entire project.
As with everything else, accurate data is the key to making software forecasts. Without data, your estimates might as well be random and arbitrary.
Software Forecasts: A Step-by-Step Guide
At 7pace, we’re a team of software developers who were tired of all the unpredictability in project management. So, we created a data-driven time-tracking solution complete with our own forecasting model to predict project outcomes. There are several strategies you can implement to take the unreliability out of software forecasting. Today, we’re going to share our approach:
Step 1: Create Your Project Scope
The project scope is a brief outline created as a part of the project management process. It performs the job of documenting your project goals, tasks, and deliverables.
Start by creating a simple ranking system to categorize projects by complexity. You can grade every project as “obvious,” “complicated,” “complex,” or “chaotic.” Then, break down the entire project into smaller components such as tasks, phases, and iterations.
A task could be a single feature you need to develop or a bug you need to fix. Phases consist of multiple tasks grouped into categories such as “design” and “troubleshooting.” Finally, iterations are the different versions that your software solution will be rolled out into.
By breaking down your project into smaller chunks, you’ll be able to forecast the resources needed to complete each stage of the development cycle.
Step 2: Draft a Ballpark Estimate
A ballpark estimate is an initial forecast that you put together based on past experience and informed guesswork. It doesn’t have to be accurate, just as long as it serves the purpose of providing a basic framework for your actual forecast.
Ballpark estimates don’t have to be incredibly detailed. Using the project scope prepared earlier, try to make an overall rough forecast and aim for an accuracy rate of about 25%. This estimate is by no means final, but it helps decision-makers figure out the project’s feasibility and do some initial resource allocation.
You can create your ballpark estimate using a simple spreadsheet. Here are some key metrics you might want to include:
Step 3: Host a Discovery Session
The discovery session is an official meeting where your development team sits down with project stakeholders to discuss a project’s goals, requirements, and bottlenecks. This is your chance to get highly granular about your project stages — developing a proper roadmap and addressing any functional challenges.
The discovery phase is the first crucial part of any software project. Take this opportunity to analyze your project scope with the rest of your team and ask them to offer estimates on the time and resources it would take to complete each task, phase, and iteration. No one knows better than your quality assurance team how long it will take to test the product for bugs, so be sure to approach the people responsible for each task and ask them what they’ll need to get the job done.
Discovery sessions are difficult to host and organize. Without a systemic approach, things can quickly devolve into chaos. Luckily, there are a few gamified techniques that you can use to make the discovery process much smoother:
Planning Poker: Planning poker is the most common technique development teams use to estimate effort in agile projects. With each new turn of the game, the session host reads aloud a project task as participants are asked to guess the amount of effort needed to complete that task using number cards. The turn continues until a consensus is reached, and afterward, the host moves on to a new task.
T-Shirt Sizing: In the t-shirt sizing technique, participants assign a t-shirt size to each task, from Extra Small to XXL. Depending on the purpose of the session, t-shirt sizes can reflect anything from work hours to project complexity. Unlike planning poker — which relies on assigning numbers to each task — t-shirt sizing is a relative estimation technique that can be used to take on more complex ideas.
Bucket System: When the number of tasks involved in a project is too high, development teams can supplement planning poker with the bucket system. Here, the team assigns each task to a numbered bucket instead of using poker cards. The bucket system is much faster than planning poker because the session host doesn’t have to go over each item individually.
Step 4: Use Data to Boost Accuracy
No matter how productive your discovery session is, it’s still based on educated guesses and personal opinions. You need more than that before presenting your final forecast to your client.
There’s only one foolproof way of evolving your forecast accuracy beyond guesswork — historical data.
By relying on analytical data collected from your team’s performance on past projects, you can make more intelligent predictions on how long it would take to complete a new functionality, phase, or iteration. Luckily, there’s a tool that can help you gather performance data on development projects in real-time.
7pace is a time-tracking integration for Azure DevOps, also coming soon to Github. With a native interface and powerful insights to help you improve your software forecasts, 7pace is the only solution you’ll need to manage projects and develop estimates at scale.
Tracking working hours and getting pertinent data on your team’s performance directly inside your preferred development environment is a superpower you’ll never get tired of. Even better, 7pace uses a metric called “pace” to show how well your estimates are evolving versus the actual time it takes to complete a project. Isn’t that neat?
With 7pace, you can use actual data to optimize your software forecasts and measure how accurate they are over time. Use automation to revolutionize the process of planning software development schedules and uncover new ways to enhance your productivity!
Step 5: Form a Project Schedule
Project schedules help your team members stay on track with their deadlines and clearly grasp their individual responsibilities. They can live inside text documents or your dedicated project management tool, such as Monday.com or Asana.
To draft your project schedule, start by uncovering the strategic dependencies for each task based on the project scope. From there, assign roles to clarify the responsibilities of different team members.
Compare the feedback from your discovery session with historical data collected by your time-tracker to set realistic deadlines for your project. It’s also standard practice to add a 20-25% risk buffer on top of your deadlines to account for delays and time-eaters.
Resource forecasting is the process of evaluating the demand and availability of the resources necessary to complete a project.
So what qualifies as a resource? The most vital resource for any software agency is your team of developers. In fact, a vast portion of software projects revolves around managing your current workforce and allocating developers between different tasks. However, resources can also indicate secondary things like your software stack and data source.
In a creative-focused job like software development, the best way to estimate resources is to use employee-level techniques. Since every employee is a separate person with their unique workflow and requirements, the best way to figure out the resources needed is just to ask your team members. That’s what makes the discovery process so important.
Step 7: Develop a Budget Breakdown
According to McKinsey Digital, 66% of software projects suffer from cost overruns. Often, this stems from a lack of ample data to improve forecast accuracy in the planning phase. That’s exactly why you need to properly define your project scope and translate each dependency into specific costs.
You should also create a detailed budget breakdown to allocate funds within your project. Here are some things you might want to include in your budget breakdown:
As with your project schedule, adding a risk buffer to your development budget accounts for sudden and unexpected new expenses. Some agencies even create multiple budgets for optimistic, realistic, and worst-case scenarios.
Why Historical Data Matters in Software Development
Data analytics has applications beyond software forecasting. It provides a foundation for all your business planning and project management decisions, fully transforming the way your development agency runs itself. Need more convincing? Here are a few ways historical data can empower your software agency:
Data enables you to gauge project complexity and anticipate developmental bottlenecks before the fact, assisting in smarter yay-or-nay decisions regarding new projects.
Historical data helps you manage risks by focusing your resources on tasks that are most likely to prove a challenge.
Inversely, this frees up more resources from tasks that are less likely to be challenging, lowering your overall costs and improving the agency’s profitability.
Finally, historical data helps you manage client expectations regarding the quality of your project deliverables. Because you have a clear understanding of your resources, it makes you much less likely to overpromise and underdeliver.
Create More Intelligent Software Forecasts With 7pace
Sound time-tracking data is key to making good software forecasts.
Unfortunately, most time-tracking tools are cumbersome, external-facing, and built to serve the fancy of micromanagers. Software engineers today need a lightweight solution built directly into their development platform and designed to improve productivity rather than keep getting in the way. That’s where 7pace comes in.
Available as an integrated solution for Azure DevOps, Azure Boards, and soon Github, 7pace is a time-tracking tool built by developers and for developers. Our solution has been adapted by engineering teams at Microsoft, American Express, and Xerox — among others.
With key features like invoice management and data intelligence, 7pace does more than just track time. It’s a one-stop solution for all your time management needs, enabling you to allocate resources and analyze performance without leaving your development environment.