I was recently asked if I thought estimating is a valuable skill for a software engineer to develop. This is a deceptively simple question that everybody is quick to affirm. One of my favorite parts of Stripe is that our operating principles are practiced and it’s encouraged, when reasonable, to pause and reason through from first principles. I’m also heavily influenced by the Toyota Production System which tries to tie every action into value for the end user. I reframed the question to “Why are accurate estimates valuable to our users?”
Questioning why estimation is valuable leads to the idea of predictability. It is very important to know that a project is going to be done in 6 weeks from now. Other people should be depending on your work! If you’re working in a vacuum with no consumers what’s the value of your work? Predictability and setting expectations are extremely important and doing it wrong erodes credibility and user excitement.
If the value of estimating well is predictability, then it’s prudent to look at other paths that also deliver predictability. What I find more valuable than strong, accurate estimation skills is the ability to break tasks down into the smallest chunks, shipping early, and being able to measure the user feedback. Shipping early means opportunities to find hidden complexity, fix operational issues, and validate what is built solves real problems.
It doesn’t matter if you’re accurate with your estimates while your user is angry the entire time. Angry or despondent users don’t hang around while you figure out perfect, regardless if you hit the calendar date perfectly.