Xavier's Blog

When in doubt, underpromise and overdeliver

Expectation management is a skill most engineers have to learn at some point.

It can be tempting to promise the moon whenever someone is expecting something from you (especially if you're naturally a people-pleaser ✋).

But this strategy can backfire when it turns out that the job you thought you could do this week actually takes you many weeks.

Many things are outside our control but if this happens frequently it could be a sign that you need to know yourself and manage expectations better. Not doing so can risk eroding trust in your manager and peers.

Luckily with experience this is a solvable problem. I'll share three things that have helped me manage this in my career and hopefully will help you accelerate your learning as well:

  1. If you can't generally sketch out a solution for the problem you're being asked to do in your head or on a piece of paper, you probably can't estimate the effort it will take to do it. Instead, spend a day trying to answer as many questions as you can about it, and ONLY THEN, consider estimating. This type of "question answering" pre-work is often called a "Spike" and I still use it whenever I start bigger projects with many unknowns.
  2. If you have never worked on that kind of problem before, you probably can’t estimate it either. I would encourage you to create a spike when possible and aim for estimating at least 3x of your worst case scenario. Only after you’ve done this problem before, drop that 2x. (Ex: If you think it takes you a few hours, make that a full day, etc.)
  3. If you know how to solve the problem and you've done it before, this is the ideal time to estimate. Still, I would recommend estimating 2x of your worst case scenario. (As an aside, your manager may even add a multiple to THAT, as he's also managing expectations upstream).

Overall, the strategy that has served me the most in this area to underpromise (act conservatively and communicate something will take more time → 2-3x), and overdeliver (surprise with how fast you were able to ship it in 1x). In the best case scenario, you're a speedy developer, in the worst case scenario, you’ve just accomplished what you said you would do. Win-win 🙌.