Software engineers are often optimists (which isn’t a bad thing), however a delivery timeline based optimism is unlikely to be accurate. In the worse case it can leave stakeholders feeling frustrated and create a lack of trust in future estimates. The opposite is true as well, building a reputation for doing what you say is the single best way to build trust.
Delivery estimation is a skill and like any other skill it improves with practice. The purpose of this document is to help engineers think through delivery estimates in an effort to provide more accurate estimates to stakeholders.
Why Are Estimates Typically Off?
- Unaccounted Vacation/Sick Days/Holidays.
- Unforeseen Complications / Special Cases / Project Ambiguity.
- Dependencies On a 3rd Party.
- Code Maintenance & Operations.
- Unplanned Administrative Work.
- Unplanned support work, investigations, slack responses, meetings, bug fixes etc.
Estimate Decomposition
There are three factors that should be considered when coming up with an estimate.
- Time
This one is the most intuitive, how long does it take. As optimists we tend to give the best case scenario of how long it will take if everything goes right. - Risk
Risks are things out of your control that could impact project delivery. These can include things like unforeseen challenges or edge cases, or external dependencies and their timelines. - Complexity
Complexity underscores how sensitive the change is, if it will impact a large number of down stream services, has hard requirements for scale or performance, or if it is on the critical path for core business operations.
Pricing Strategies
Pricing Strategies are typically used to determine how much you can sell something for, thinking in terms of notional values. However for our purposes it works equally well to think about your time as a valuable (and scarce) resource.
When if comes to pricing strategies there are two main methods
- Cost Plus
A cost plus strategy looks at how much raw material it took to produce a good or service and then adds (plus) the value of putting them all together.
For example; if I ran a lemonade stand the costs would be the juice, sugar, fresh lemons, etc and the plus would be putting them all together and selling them from a location that is convenient to buyers. - Comparables (aka "Comps")
A comps based strategy looks at similar products on the market and uses that as a baseline for how much you should sell your product for.
For example; If I am a homeowner looking to sell my home I'd like to see what other similar homes around my neighborhood have sold for recently. That would give me a baseline for how much I could ask for.
Putting it All Together
When thinking through an estimate it can often be useful to first think about the "Cost Plus" method. Take a larger project and decompose it into small, manageable parts. Take special not of any sub-tasks that have additional risk or complexity and add a buffer (~30%) to your estimates. Sum up all the sub tasks and now you have your first draft at an estimate.
To validate the estimate look for comparables (both at the top level and the sub-task level). If this number is close to your estimate then you're close to an accurate estimate.