In complex software systems, estimation is the process of surfacing and resolving underlying assumptions. While traditional methods rely on single-point "expert" opinions, high-density practitioner environments utilize probabilistic models to manage uncertainty.
Planning Poker mitigates Anchoring Bias by requiring simultaneous reveal of estimates using the Fibonacci sequence (1, 2, 3, 5, 8, 13, 21).
The Program Evaluation and Review Technique (PERT) uses a weighted average to account for the "long tail" of software risks.
For every task, gather three values:
Expected Value (E):
Standard Deviation (\sigma):
Why it works: Unlike a simple average, PERT weights the "Most Likely" case and recognizes that the risk (P) is often much further fromMthan the opportunity (O).---
Monte Carlo simulations replace deterministic "deadlines" with a probability distribution of completion dates.
Instead of saying "The project will take 10 weeks," we run 10,000 simulations where each run samples from:
def run_simulation(backlog_range, velocity_dist, runs=10000):
results = []
for _ in range(runs):
total_scope = random.sample(backlog_range)
current_velocity = random.sample(velocity_dist)
weeks_to_finish = total_scope / current_velocity
results.append(weeks_to_finish)
# Analyze the 85th and 95th percentiles
p85 = percentile(results, 85)
p95 = percentile(results, 95)
return p85, p95
Use this schema to capture the raw inputs for a forecasting model.
{
"milestone": "Identity_Provider_Migration",
"estimation_method": "PERT_Weighted",
"items": [
{
"task": "OAuth2_Schema_Design",
"optimistic": 3,
"most_likely": 5,
"pessimistic": 13,
"pert_e": 6.0,
"pert_std": 1.66
},
{
"task": "Legacy_Data_Cleanup",
"optimistic": 5,
"most_likely": 13,
"pessimistic": 40,
"pert_e": 16.1,
"pert_std": 5.83
}
],
"confidence_interval": "P85",
"projected_velocity_range": [20, 35]
}