LearnViz CompSci
Home / Learn / Software Engineering / Software Estimation

Advanced Topic 49 of 50 Software Engineering

Software Estimation

Predicting effort and schedule for development work.

How it works

Software estimation predicts the effort, time and cost needed to build software. Approaches include expert judgment, analogy with past projects, work breakdown structures, story points and relative sizing, planning poker, parametric models such as COCOMO and probabilistic forecasts based on throughput. Estimates are ranges with uncertainty, narrowing as the project learns more, described by the cone of uncertainty.

Step-by-step walkthrough

  1. Break work into small tasks.
  2. Estimate each, ideally with the team.
  3. Estimates are ranges, not promises.
  4. Early estimates have large uncertainty that narrows with progress.
  5. Track velocity and revisit the plan often.

Where it is used

Planning releases, budgeting, staffing, prioritizing the backlog and committing to deadlines all use estimates. Teams improve by tracking actual versus estimated work.

Common pitfall

Estimates are routinely optimistic because of unknowns, forgotten tasks, integration and testing, and the planning fallacy. Treating an estimate as a commitment, or a single number without range, causes conflict. Padding secretly or pressuring teams distorts them. Break work into small pieces, include risks, use historical data, give ranges and re-estimate as knowledge grows.

Where it fits in the course

Software Estimation is topic 49 of 50 in Software Engineering, rated Advanced. It follows Site Reliability Engineering. The next topic is Open Source Practices.

Practice and explore

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Software Engineering quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Software Estimation?
Predicting effort and schedule for development work. It belongs to Software Engineering and is an advanced-level topic.
Where do people use Software Estimation?
Planning releases, budgeting, staffing, prioritizing the backlog and committing to deadlines all use estimates.
What is the most common mistake with Software Estimation?
Estimates are routinely optimistic because of unknowns, forgotten tasks, integration and testing, and the planning fallacy.
What should I learn before this topic?
Start with Site Reliability Engineering, the topic just before it in Software Engineering.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Software Engineering quiz.
Is Software Estimation hard to learn?
It is an Advanced topic. Expect to read the explanation more than once and to connect it with earlier topics. Working through a small example by hand helps most.
How long does it take to learn Software Estimation?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to Software Estimation?
Site Reliability Engineering, Open Source Practices, Chaos Engineering are closely connected. The full list is in the related topics section of this page.
What should I study after Software Estimation?
Continue with Open Source Practices, the next topic in Software Engineering.

Related topics