4

7 Steps To Making Accurate Software Estimates

 2 years ago
source link: https://www.7pace.com/blog/accurate-software-estimates
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Sign up for 7pace Newsletter

I would like to sign up to receive email updates from 7pace. Protected by 7pace's privacy policy .
Timetracker 5.0

Reporting is here

Follow us

If your software development team struggles to make accurate estimates, you’re not alone!

It’s not unusual to miss the mark and go over budget, even for skilled developers. (Ask us how we know…)

Making accurate estimates is an art that takes years of practice. But you can master this elusive superpower faster if you know how to make informed decisions.

In this article, we’ll discuss why it’s so hard to make accurate estimations and share some from-the-trenches strategies and techniques to help you make better software estimates with fewer headaches.

Why Is It So Hard To Make Accurate Software Estimates?

Front-end developers often face challenges that stem from the lack of detailed technical information.

For example, they have to make estimates based on a set of wireframes with minimal descriptions of the animations or functionalities. They may not even have the specifications for devices and screen sizes.

Some clients and managers assume that certain designs are easy to build because they don’t always have a background in development or are too detached from the process, so they pressure the team to cut down on time and budget.

Meanwhile, back-end developers face a different set of hurdles.

For example, a new team member may miss the big picture or nuances of the business logic. The project may use third-party services or technologies that the team isn’t familiar with. Also, requirements may change as the project progresses.

Moreover, issues crop up just because we’re human…

We often have an idealistic view of our capabilities—how much work we can accomplish within a specific timeframe. We also tend to overlook friction such as back-and-forths with the client and other unexpected disruptions.

Not to mention, many of us have a strong desire to please our clients (who want their projects done yesterday) by telling them what they want to hear. This tendency causes us to over promise and under deliver.

How To Make More Accurate Software Estimates

You must first establish a thorough understanding of the project. Collect as much documentation as possible and communicate with stakeholders to understand their business objectives.

Get a clear idea of the pain points the project aims to solve, the timeline and budget, the main product features, the existing components, the technical stack you have to work with, and the primary use cases for the application.

Then, assemble specialists with the most extensive competence in each respective domain to make estimations. Ideally, they will also be part of the project development team.

The team should include a CTO, senior back-end developer, senior front-end development, and others such as project managers, UX designers, QA specialists, etc. based on the project requirements.

With a good understanding of the project and a team of experts, you can use these 7 techniques to make better software estimates:

Split Project into Phases

Research and analyze the requirements to define the project scope. Consider high-level architecture and infrastructure design, tech stack, wireframes, team structure, and a rough timeline to inform how you’d structure the project.

Then, divide the project into different phases (e.g., discovery, design, development, testing, implementation) with milestones, tasks, subtasks, etc., so specialists from each domain can focus on their parts.

Use Multi-point Estimation

Instead of a single point value, use a range or three-point estimate, such as “low/probable/high” or “low/high/confidence.”

For example, the Program Evaluation and Review Technique (PERT) method helps you calculate a realistic cost estimate as a function of an optimistic case estimate, a pessimistic case estimate, a most-likely case estimate, and the combined probability of each scenario.

Use Multi-point Estimation

 Consider Your Confidence Level

When you establish multiple points for your estimation, weigh each scenario appropriately to counter the tendency of being overly optimistic about your abilities. You have to gauge your confidence level based on facts.

Ask these questions for a reality check: How familiar is the team with this situation, and have they done something similar in the past? Do they have all the information they need? Are there blind spots or unknown factors that require some wiggle room?

Document Your Assumptions

Every estimate is based on assumptions, so you must be clear about these parameters. If you discover that something doesn’t align with an assumption as the project progresses, you can revisit the estimation sooner rather than later to course correct.

For example, when you estimate how long it takes to integrate with a web service, you’d document the assumption that the service is already defined. It will then be available for development and testing cycles, and the client will provide a clean set of test data.

Use Timeboxing For Standard Tasks

Instead of reinventing the wheel, use timeboxing to assign time for common project activities. The technique involves ​​allocating a fixed, maximum amount of time for a task in advance and then completing it within the time frame.

This technique is suitable for project setup activities that don’t vary much from one project to another or knowledge transfer to client development teams, which could stretch out over time.

Incorporate Organizational Friction Cost

Whether you’re working with an internal or external client, your team will need to spend time and effort collaborating with the customer to obtain consensus, draw up requirements, present design, make revisions, complete deployment, etc.

Incorporate these activities into your project plan and block out time for various review and approval processes. Also, communicate the expectations with the client team and document the assumptions (e.g., the turnaround time for client feedback.)

Visualize the Timeline

After each team has determined the total time needed for each task and milestone, you can build a project timeline to visualize how various tasks may be done simultaneously or staggered. You can also set up dependencies to understand how one milestone may impact another.

Gantt charts are one of the most popular methods for visualizing timelines. If you’re using an agile framework, create one task item per feature and ensure that all items in each iteration have a start-to-finish dependency to the testing period for the iteration.

Visualize the Timeline

The Foundation For Making Accurate Software Estimates

Making accurate software estimates is challenging partly because we often fall victim to the planning fallacy—the tendency to underestimate the time it takes to complete a task, even if we have done it before.

To overcome this blind spot, we must root our estimations in data by having accurate information on how long similar tasks took in the past. Therefore, the best way to create well-informed and accurate estimates is to collect historical data about past projects.

Time tracking gives you the foundation to create better estimates for future projects. Not to mention, real-time data can help you measure progress and course-correct immediately to fine-tune your estimates after each sprint.

Here’s the caveat: Just recording time won’t help if you don’t do something about the raw data. You need granular data and the ability to filter the information by task, team member, milestone, etc.

The problem with most time tracking apps is that they’re a tacked-on solution. Developers have to log into a different platform and enter their time after the fact.

The extra work isn’t only cumbersome. The time entries are less accurate and less granular (how many times have you transferred barely-legible scribbles from a napkin to a time reporting tool?), which makes the information less relevant in informing future estimates.

7pace overcomes these issues by tracking time where developers work—right on Azure DevOps and GitHub, without any extra steps.

You can associate time with each work item, and the AI algorithm can provide recommendations if you forget to record your time. You can also run reports in real-time and adjust your estimates as a project progresses.

Try 7pace to see how to take the guesswork out of work and become a superhero in making software estimates.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK