Essays
March 6, 2016
More Stuff
1 Estimates
2 The Lost Interview
3 PostgreSQL
4 No Bugs
5 APL for Great Fun
6 Easy Proofs
Book

No Obligation Estimates

You Are Not Obligated to Meet Any Estimate You Don't Make Yourself

Estimates are a way to plan. They are an outer bound, saying, “With 90% accuracy, I can finish this task in X hours or less” (feel free to substitute your desired percentage in the accuracy slot). Done correctly, they are useful.

But Jeff's comic shows how things go wrong:

The manager messed up here. She used estimates to make the programmer work harder, she used blame, she doesn't trust the programmer;[1] all of which guarantees a lousy work relationship. Which comes to the point of this essay: you are not responsible for any estimate you don't make yourself. When a manager takes your estimate and says, “cut that in half;” smile and say, “ok manager, it's your estimate now.”

If you don't want to talk like that to your manager, write down the original estimate because your estimate is the one that matters. There is no way you can meet the manager's deadline.[2] So be prepared, sooner or later an uncomfortable conversation is coming. You can't always fix a lousy manager, but you can be prepared.

This is the power you have. With great power comes great responsibility, so if you make the estimate, try hard to reach it. Pad the estimate with extra time if you need to,[3] but don't lie about how long it will take, and then spend the rest of the time surfing the net (like the guy in that comic might have been trying to do). Your manager will hate you.

Making accurate estimates is part of being professional as a developer[4]. Over time you will get really good at it. Either way, when a manager pressures you to change your estimate, you have no obligation to actually meet their estimate. It's their estimate not yours.

1It is possible that the manager doesn't trust the programmer for good reasons, in which case she needs to help him improve his skill so she can trust him. That's what true leaders do instead of manipulating. Or they fire the person.
2At least, not consistently. You can try the trick of doubling your estimate, but the manager might notice and then say, “do it in 1/4 the time!”
3No one complains too loudly if a progress bar finishes earlier than expected, unless you waste time thereafter playing games.
4Improving your own skill at estimating will be useful because (for example) it will let you choose whether to integrate framework A or framework B. You'll need to estimate how long it will take to integrate each framework. When there are unknowns (because you are working in someone else's code, like in that comic), then remember to add extra time to your estimate. Choose the outer bound. Be professional and take control of your programming.

March 6, 2016
This work is licensed under a Creative Commons Attribution 4.0 International License.
Kate is the best-selling author of
“Zero Bugs and Program Faster”
{"cc_re__cc_re__cc_by_4_0": ["g your own skill at estimating will be useful because (for \nexample) it will let you choose whether to integrate framework A or framework B.\nYou'll need to estimate how long it will take to integrate each framework.\nWhen there are unknowns (because you are working in someone else's code, like\nin that comic), then remember to add extra time to your estimate. Choose the\nouter bound. Be professional and take control of your programming.</div>\n</div> <!-- footnotes -->\n\n\n</div>\n\n\n<div id=\"license\">\n<a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /></a>\n<BR> March 6, 2016<br />This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\">Creative Commons Attribution 4.0 International License</a>.\n</div>\n\n<div id=\"author\"><a href=\"https://twitter.com/ZeroBugsFaster\">Kate</a> is the best-selling author of <BR>\n<a href=\"https://www.amazon.com/dp/0996193308\"><i>\u201cZero Bugs and Program Faster", "cause you are working in someone else's code, like\nin that comic), then remember to add extra time to your estimate. Choose the\nouter bound. Be professional and take control of your programming.</div>\n</div> <!-- footnotes -->\n\n\n</div>\n\n\n<div id=\"license\">\n<a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /></a>\n<BR> March 6, 2016<br />This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\">Creative Commons Attribution 4.0 International License</a>.\n</div>\n\n<div id=\"author\"><a href=\"https://twitter.com/ZeroBugsFaster\">Kate</a> is the best-selling author of <BR>\n<a href=\"https://www.amazon.com/dp/0996193308\"><i>\u201cZero Bugs and Program Faster\u201d</i></a></div>\n\n<a href=\"../updates.rss\"><img src=\"../images/rss.png\" class=\"rss\"></a>\n\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.cre"]}