Businesses have important reasons to establish targets independent of software estimates. But the fact that a target is desirable or even mandatory does not necessarily mean that it is achievable.
— Steve McConnell, Software Estimation: Demystifying the Black Art
We need precise language about what we want, what we predict, and what we promise.
McConnell gives us 3 definitions to help us understand what an estimate even is, warning us that it tends to be conflated with two adjacent concepts - targets, and commitments.
Estimate: A prediction of how long a project will take based on available information and past experience.
Target: A business goal describing when stakeholders would like functionality delivered to meet market demands.
Commitment: A promise to deliver specific scope by a specific date, made after considering both estimates and targets.
Strategies for Estimate-Target Mismatches #
How often does sales/management/product establish the target, then solicit engineering for an estimate, having already made a commitment to the customer?
(often. it’s very often.)
Here’s my personal playbook for these situations.
Ask Questions #
- Does this need to be built in the way the customer asked, or can we get there by other means?
- Are there workarounds or hacks?
- Reframe the question in terms of user tasks rather than features
- Can we graft a workflow on top of commodity tools (email, excel)
Reduce Surface Area of Problem #
- Separate out any “wishlist” items
- Scale later
- Batch Jobs and CSV
- Acquire tech debt
- Release incrementally
Change the Parameters #
- Can the customer pitch in on R&D?
- Can we buy instead of build?