Complex Task Estimation | Handle Uncertainty
Estimate high-uncertainty tasks using timeboxed spikes, reference class forecasting, and wide confidence ranges. GitScrum historical data grounds estimates.
5 min read
Complex tasks with high uncertainty are notoriously difficult to estimate accurately. GitScrum provides task decomposition tools, historical reference data, and effort tracking that help teams break down complexity into manageable pieces and leverage past performance to improve future estimates.
Simple vs Complex Task Estimation
| Simple Task | Complex Task |
|---|---|
| Well-understood requirements | Ambiguous requirements |
| Done this before | First time attempt |
| Isolated work | Many dependencies |
| Single technology | Multiple systems |
| Clear definition of done | Success criteria unclear |
| **Estimate with confidence** | **Estimate with ranges** |
Complex Task Estimation Techniques
TECHNIQUE 1: SPIKE FIRST, ESTIMATE SECOND
Before estimating:
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. Timebox a spike (4-8 hours) β
β 2. Explore the unknown parts β
β 3. Document findings β
β 4. Then estimate with better information β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Example:
"We need to integrate with Payment API X"
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Spike: 4 hours to: β
β β’ Review API documentation β
β β’ Test authentication flow β
β β’ Identify edge cases β
β β’ Assess SDK quality β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
Now estimate: "3-5 days based on spike findings"
Reference Class Forecasting
TECHNIQUE 2: REFERENCE CLASS
Instead of: "How long will THIS take?"
Ask: "How long did SIMILAR things take?"
REFERENCE DATABASE:
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Category Avg Time Range β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β Payment integration 8 days 5-15 days β
β OAuth implementation 5 days 3-8 days β
β Data migration 12 days 7-21 days β
β New API endpoint 2 days 1-4 days β
β Third-party API 6 days 3-12 days β
β Performance fix 4 days 2-10 days β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
APPLICATION:
"New Stripe integration estimate?"
β Reference: Payment integrations average 8 days
β This one: Similar complexity
β Estimate: 8 days (range: 5-12 days)
Three-Point Estimation
TECHNIQUE 3: PERT ESTIMATION
For each complex task, estimate three scenarios:
O = Optimistic (best case, 10% likely)
M = Most Likely (normal case, 80% likely)
L = Pessimistic (worst case, 10% likely)
PERT Estimate = (O + 4M + L) / 6
EXAMPLE:
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Task: Implement SSO with customer's IdP β
β β
β Optimistic (O): 3 days β
β (IdP is standard, good docs, quick IT) β
β β
β Most Likely (M): 7 days β
β (Some config issues, normal back-and-forth) β
β β
β Pessimistic (L): 15 days β
β (Non-standard setup, slow IT, edge cases) β
β β
β PERT = (3 + 4Γ7 + 15) / 6 = 7.67 days β
β Report: "7-8 days, could range 3-15" β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Decomposition
TECHNIQUE 4: BREAK IT DOWN
Complex Task: "Build reporting dashboard"
Level 0 (Too vague to estimate):
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β "Build reporting dashboard" = ??? β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Level 1 (Better):
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. Data pipeline setup 3-5 days β
β 2. Chart components 2-3 days β
β 3. Filtering system 2-4 days β
β 4. Export functionality 1-2 days β
β 5. Performance optimization 2-3 days β
β βββββββββββββββββββββββββββββββββββββββββββ β
β Total: 10-17 days β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Level 2 (Actionable):
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. Data pipeline setup: β
β a. Database queries (1 day) β
β b. Aggregation logic (1-2 days) β
β c. Caching layer (1-2 days) β
β Total: 3-5 days β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Rule: Estimate tasks no larger than 2-3 days
Best Practices
Anti-Patterns
β Single-point estimates for complex work
β Estimating without understanding
β Ignoring historical data
β Not accounting for dependencies
β Pressure to give low estimates
β No re-estimation as scope changes