{"id":149,"date":"2011-11-07T07:30:59","date_gmt":"2011-11-07T15:30:59","guid":{"rendered":"http:\/\/zuill.us\/WoodyZuill\/?p=149"},"modified":"2016-04-25T07:11:34","modified_gmt":"2016-04-25T15:11:34","slug":"estimation-is-easy-and-useful-estimate-a-game-of-chess","status":"publish","type":"post","link":"https:\/\/zuill.us\/WoodyZuill\/2011\/11\/07\/estimation-is-easy-and-useful-estimate-a-game-of-chess\/","title":{"rendered":"Estimation is Easy and Useful: Estimate a game of Chess"},"content":{"rendered":"<h3>Estimating Software Development<\/h3>\n<p>Anyone who knows me will know that the title of this post is meant as a bit of a joke.\u00a0\u00a0 For software development, it is my experience that estimating** is rarely useful and always easy.<\/p>\n<p>Well&#8230; a little clarification: \u00a0estimating is NEVER useful but ALWAYS easy the way I have typically seen it done, which uses the WAG* method of providing some numbers that seem plausible and that will allow the decision makers (stakeholders and managers)\u00a0to approve the start or continuance of a project with a clear conscience. That is, when things sour later on they can always blame the developers for giving them inaccurate estimates (and not living up to their &#8220;commitments&#8221;).<\/p>\n<p>And the developers can always blame the &#8220;requirements people&#8221; for giving them unclear, incorrect, or incomplete\u00a0requirements.<\/p>\n<p>And the requirements people can always blame the stakeholders for providing bad direction about what was important and the developers for not &#8220;understanding the requirements&#8221;, and so on.<\/p>\n<p>Regardless of who is part of this process,\u00a0it is one big happy circle of blame that lets us all do the wrong thing and still keep our jobs (not always happy for everyone, actually, and sometimes not everyone will keep their job).<\/p>\n<p>I have simplified it here, but the basic idea is sound.\u00a0 As long as everyone is good at deflecting blame, and everyone is willing to continue on saying we&#8217;ll do it better\u00a0&#8220;next-time&#8221; and\u00a0after only a few people have been fired then everything is fine, right? Well, I don&#8217;t think it&#8217;s fine, of course &#8211; but many organizations seem to operate this way.<\/p>\n<h3>Let&#8217;s estimate a game of chess<\/h3>\n<p>Chess is a game that some of you may have seen.\u00a0 It\u00a0provides a very limited environment with only 6 different and charming pieces that have very limited ways in which they can be used, and there are only two players.\u00a0\u00a0Simple.\u00a0The whole game can be contained in an area of about a square foot or even less, and the complete rules can be written\u00a0on\u00a0the inside of the\u00a0box lid.\u00a0\u00a0 Just like Candy Land, it is very easy to learn and play. Not so easy to win, perhaps &#8211; but that makes it interesting enough to be an engaging game for some.<\/p>\n<h3>So, here is a description of a simple &#8220;project&#8221; and I need your estimate:<\/h3>\n<p>Win a game of chess. Losing is not an option. Tying is not an option.\u00a0 We will only make money if you win.\u00a0 If you don&#8217;t win, the company is at risk, and you will lose your job (and mine).<\/p>\n<p>Also, I have a diagram of a chess game with the exact position of the pieces as required at the end of the game.\u00a0 To make money, it needs to end up just like the diagram.<\/p>\n<p>Oh, one other thing:\u00a0we don&#8217;t know yet who you will playing, but we&#8217;re pretty certain it will be someone who knows how to play the game, and might be pretty good at it.<\/p>\n<p>That&#8217;s it!\u00a0 There are only a few requirements:\u00a0 That you win, and that the board matches the diagram I&#8217;ll give you.\u00a0 Easy!<\/p>\n<p>What I need to know is exactly how much this will cost me.\u00a0 In this situation, cost is the number of moves you&#8217;ll need to meet the requirements.\u00a0 Oh, also, we don&#8217;t have the diagram yet, but we&#8217;ll have it soon.\u00a0 Still, you should be able to estimate it\u00a0because\u00a0it is basically the normal chess end-of-the-game arrangement with pieces here and there and so on, and you have the opponent in a checkmate.<\/p>\n<p>Should be easy to estimate that, right?<\/p>\n<p>Well, I hope you agree this is impossibly\u00a0difficult, or actually: just plain impossible to do a meaningful estimate.\u00a0 First of all, there is not enough information to do a good estimate, and even if we had all the information, there are many variables and a lot of stuff we have no control over. How close do you think your end results would come to the requirements?\u00a0 Would you be willing to stake your job on making a decent estimate on a chess game in this situation?\u00a0 Well, as long as you could blame someone else and promise to &#8220;all do better next time&#8221; you&#8217;ll probably be okay.\u00a0 Or you could be a consultant and be paid and off to your next contract before\u00a0someone actually has to play this game you helped them estimate.<\/p>\n<h3>Getting better at estimating is like pulling teeth<\/h3>\n<p>I hear it over and over:\u00a0 Our estimates were not accurate and we\u00a0had a lot of trouble because of that.\u00a0\u00a0We need to get better at estimating.<\/p>\n<p>It is similar in a way to saying &#8220;My tooth hurt, so we\u00a0pulled it out.\u00a0 Now I can&#8217;t chew as well as I used to.\u00a0 We need to get better at pulling teeth&#8221;.\u00a0\u00a0What is the real problem?\u00a0 Shouldn&#8217;t we work on that instead?\u00a0 Hint: Getting better at pulling teeth is not it.<\/p>\n<p>So what would you do to get better at estimating the game of chess, based on the basic scenario we described above?\u00a0\u00a0 Could you get better at it?\u00a0\u00a0 How good would you have to be before it had real value? Is it worth spending time on getting better at it?\u00a0 What is the real problem.\u00a0 Hint: Getting better at estimates is not\u00a0a solution to anything because having bad estimates it not the real problem.<\/p>\n<h3>My suggestion: Stop That!<\/h3>\n<p>I haven&#8217;t seen much value in estimates.\u00a0 Actually, in the software development work I have done, I can&#8217;t recall any situation\u00a0where estimates** of this sort were of value to the actual job at hand.\u00a0 Someone wanted them, someone saw value in them, and sadly &#8211; important decisions were made based on them.\u00a0 Do you think those were good decisions?\u00a0 People often tell me that &#8220;even though we know the estimates are inaccurate,\u00a0they are\u00a0better than nothing&#8221;.\u00a0 I prefer nothing, if there are better ways.\u00a0 There are better ways.<\/p>\n<p>Almost everyone tells me that estimates** are very important, but\u00a0estimates are often a blind spot hiding something of actual\u00a0importance and value.\u00a0 This almost universal acceptance that estimates are important and useful\u00a0is harmful.\u00a0 A predictive approach such as waterfall itself depends on estimates &#8211; and estimates are how we make the predictions.\u00a0 Don&#8217;t think &#8220;waterfall&#8221; and predictions are\u00a0harmful?\u00a0 You probably should be reading some other blog.<\/p>\n<p>Estimates** of this sort are based on guesses about the time needed to do work we don\u2019t yet understand.\u00a0 Nothing about this gives me confidence that these estimates have value.<\/p>\n<p>It seems I always\u00a0make enemies when I suggest this, but that is not my intention.\u00a0 I want to do effective work on meaningful stuff &#8211; that is my intention.\u00a0 I don&#8217;t want to be spending time on work that has no value,\u00a0causes misdirection and waste, and potentially destroys any chance of being effective.\u00a0 That is painful.\u00a0 There are MUCH BETTER WAYS to approach software development.<\/p>\n<h3>Do you need estimates?<\/h3>\n<p>It could be useful for you and your organization to question your use of estimates and explore new ways to think about your &#8220;need&#8221; for estimates.<\/p>\n<p>One last thing:\u00a0 Do not ask me for an estimate on how long it will take to eliminate estimates from your process.\u00a0 It is too much like a game of chess, only very complicated.<\/p>\n<p>Here is a start at clearing up our thinking.\u00a0 Let&#8217;s do a little thought experiment.<\/p>\n<p>Which would better help if we have decided to eliminate estimates and find a better way in our organization? :<\/p>\n<ul>\n<li>Get rid of all developers<\/li>\n<li>Get rid of all upper management.<\/li>\n<li>Get rid of all upper management and developers<\/li>\n<li>Something else more realistic<\/li>\n<\/ul>\n<p>Who is most insistent that estimates are important?\u00a0 Who do those people answer to? Are they going to fire you for questioning things like estimates? Are they open to scrutinizing the status quo or to examining why we do the things we do?<\/p>\n<p>So what might be better?<\/p>\n<h3>What can we do instead of doing estimates?<\/h3>\n<p>Nothing.\u00a0 Don&#8217;t do estimates.\u00a0 Simple, clean, easy.\u00a0 But that is not the question we should be asking, and that is not what I am suggesting.<\/p>\n<p>The correct question is: since we think that estimates are important, and you say that they are not, how can we develop software without doing estimates?<\/p>\n<p>The answer is&#8230; Well, I suspect no one reads this blog, so that doesn&#8217;t really matter.\u00a0 This is just a clearing house for my thinking and has nothing to do with the reader.\u00a0 However, I am sure to write some stuff someday about ways to get things done without estimates, and I guess some of my earlier posts cover some of this thinking.\u00a0If someone is actually interested and asks for me to cover this, I might get to it sooner.\u00a0 But I am sure you can figure it out without me &#8211; this is truly simple stuff.\u00a0 Read the Agile Manifesto and Agile Principles, and use them to invent better ways.<\/p>\n<p>Another hint: Get good at frequent incremental delivery of useful software.\u00a0 That might\u00a0be worth considering.\u00a0 That takes a LOT of experience and open thinking.<\/p>\n<p>NOTES:<\/p>\n<p>* WAG = Wild Ass Guess.\u00a0 A Wild Ass is a beast that is indigenous to parts of Africa and Asia.\u00a0 A Guess is a guess.\u00a0 Wild asses are about as good at making software estimates as anyone else.<\/p>\n<p>** For the purpose of this article, the sort of estimates I am discussing are the estimates typically asked for on many projects where a list of features or functions are described and people are asked to come up with an approximate cost in time (working time or elapsed time) [sometimes it is phrased as &#8220;cost&#8221;, or &#8220;effort&#8221;] to do the work that will be required to provide the feature(s)\/function(s)\/capability(ies) being requested.<\/p>\n<p>Disclaimer: There are many situations where estimates can be meaningful and useful. \u00a0This article is about situations where I don&#8217;t think they are meaningful or useful.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estimating Software Development Anyone who knows me will know that the title of this post is meant as a bit of a joke.\u00a0\u00a0 For software development, it is my experience that estimating** is rarely useful and always easy. Well&#8230; a little clarification: \u00a0estimating is NEVER useful but ALWAYS easy the way I have typically seen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,21,22,24,4],"tags":[],"class_list":["post-149","post","type-post","status-publish","format-standard","hentry","category-agile-stuff","category-estimating","category-no-estimating","category-noestimates","category-waterfall"],"_links":{"self":[{"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts\/149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":23,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"predecessor-version":[{"id":1062,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts\/149\/revisions\/1062"}],"wp:attachment":[{"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}