{"id":408,"date":"2013-01-10T10:21:09","date_gmt":"2013-01-10T18:21:09","guid":{"rendered":"http:\/\/zuill.us\/WoodyZuill\/?p=408"},"modified":"2013-04-14T17:15:35","modified_gmt":"2013-04-15T01:15:35","slug":"notes-from-a-conference-session-on-no-estimates-in-software-development","status":"publish","type":"post","link":"https:\/\/zuill.us\/WoodyZuill\/2013\/01\/10\/notes-from-a-conference-session-on-no-estimates-in-software-development\/","title":{"rendered":"Notes From A Conference Session On No Estimates in Software Development"},"content":{"rendered":"<p>I&#8217;ve done 12+ sessions at Agile and Developer &#8220;user groups&#8221;,\u00a0Agile or Dev conferences, college classes, and code\u00a0camps\u00a0where the main topic (or a big component)\u00a0of the session was Estimates in Software Development.<\/p>\n<p>Here are the notes from one such session I facilitated last year at an Open Space event (Agile Open California, North)<\/p>\n<h4>Session Title: Estimates &#8211; Can&#8217;t Live With Them, Can We Live Without Them?<\/h4>\n<p><a href=\"http:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/Estimates_CantLiveWithThem_Proposal.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-417\" title=\"Estimates_CantLiveWithThem_Proposal\" src=\"http:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/Estimates_CantLiveWithThem_Proposal-300x245.jpg\" alt=\"\" width=\"300\" height=\"245\" srcset=\"https:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/Estimates_CantLiveWithThem_Proposal-300x245.jpg 300w, https:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/Estimates_CantLiveWithThem_Proposal.jpg 960w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The title was my own.\u00a0 I&#8217;ve been talking about, and holding sessions on\u00a0this subject for several years, and the previous time I was at this event a couple years earlier I did a session on &#8220;5 Whys on Why we Estimate&#8221;.\u00a0 It was a very contentious session, with almost everyone (except me) feeling estimates are\u00a0important and needed for software development,\u00a0and the problem is just that we&#8217;re no good at it&#8230; so we just need to get better at doing estimates.\u00a0 I don&#8217;t agree (as you probably know).<\/p>\n<p>The &#8220;we just need to get better at it&#8221; argument sounds a lot like what I used to hear in &#8220;post-mortem&#8221; and &#8220;lessons learned&#8221; sessions in waterfall\/phased project environments. A typical &#8220;take-away&#8221; from those sessions were things like this:\u00a0&#8220;We missed our deadlines and had a lot of rework\u00a0because the requirents kept changing, even though we have a change control process in place.\u00a0 We\u00a0need to get better at controlling changes to requirements&#8221;.\u00a0 I hope you see that is very likely a bad conclusion.\u00a0 Essentially, that line of thinking is that &#8220;since control isn&#8217;t working, we need more control.&#8221;<\/p>\n<p>I&#8217;ve\u00a0been suggesting that if we\u00a0keep failing at getting good at\u00a0estimates even though we are working hard at becoming better at doing so (and have been doing so for countless years), then maybe we are expecting estimates to do something for us that just can&#8217;t be done.\u00a0\u00a0 Maybe there are better ways.\u00a0 [Just to be clear, for me &#8211; I feel I have found a much better way and it is Agile Software Developent as presented in the Agile Manifesto (Values and Principles) &#8211; the Agile MVP.]<\/p>\n<p>My position: We need to get to the bottom of what it is we want from estimates and predictions, and find a better way to get to what we really want. [HINT: What we reallly want is Sucessful Software Development Efforts (or something like that, perhaps?)\u00a0.\u00a0 Or, as long as we are wishing, let&#8217;s just wish\u00a0to win\u00a0the Mega Lottery and then spend our day&#8217;s doing something we really enjoy. Like taking hikes or arguing &#8211; whatever you like.]<\/p>\n<h4>Participants:<\/h4>\n<p>There were initially 17 participants.\u00a0 Developers, ScrumMasters, Agile Coaches, Product Managers, etc.\u00a0 Almost everyone had some experience with Agile\/Scrum\/XP\/Lean.\u00a0 A few\u00a0people joined in as the session proceeded, and a few others left.<\/p>\n<h4>Purpose:<\/h4>\n<p>Explore and discuss what\u00a0we\u00a0want out of estimates and the problems we&#8217;re having with estimates.<\/p>\n<p>[NOTE: Everything will be tainted because Woody Zuill is facilitating this session, and he\u00a0leans slightly toward the &#8220;No Estimates&#8221; approach.]<\/p>\n<h4>Process:<\/h4>\n<p>My approach for this session:\u00a0Quickly explain my basic thoughts about the failure of estimates and the purpose of the session, do an information\u00a0gathering exercise.\u00a0 Ask why we feel we need estimates, have the participants write their thoughts on sticky notes, group them, and then discuss.<\/p>\n<h4>Information Gathering: Why do we &#8220;need&#8221; estimates<\/h4>\n<ul>\n<li>We gathered sticky notes to identify &#8220;why we &#8216;need&#8217; estimates and put them on easel\u00a0sheets<\/li>\n<li>We then gathered the notes into groupings.<\/li>\n<li>There were 2 main groupings: Estimates are for planning, and estimates are for manipulating<\/li>\n<li>NOTE: Tne notes below were written by the participants.\u00a0 Some are a bit cryptic. Not to worry, okay?<\/li>\n<\/ul>\n<p><a href=\"http:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/EstimatesAffinityGroupingCropped.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-421\" title=\"EstimatesAffinityGroupingCropped\" src=\"http:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/EstimatesAffinityGroupingCropped-282x300.jpg\" alt=\"\" width=\"282\" height=\"300\" srcset=\"https:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/EstimatesAffinityGroupingCropped-282x300.jpg 282w, https:\/\/zuill.us\/WoodyZuill\/wp-content\/uploads\/2013\/01\/EstimatesAffinityGroupingCropped.jpg 717w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/a><\/p>\n<ul>\n<li>Here are the notes and the groupings:<\/li>\n<\/ul>\n<h3>Affinity Group: Estimates are for Planning<\/h3>\n<ul>\n<li>How many resources do we allocate to do the work<\/li>\n<li>Length of engagement<\/li>\n<li>Costs<\/li>\n<li>To Predict Future Velocity<\/li>\n<li>You need estimates to determine budget<\/li>\n<li>To determine when we&#8217;ll finish<\/li>\n<li>Target implementation time-frame &amp; duration for resource allocation &amp; cost estimates<\/li>\n<li>When to commit to customer delivery<\/li>\n<li>to decide whether or not to do a task<\/li>\n<li>To Determine when a feature will be available<\/li>\n<li>To determine when we&#8217;ll finish<\/li>\n<li>To know when it is done<\/li>\n<li>It drives the business<\/li>\n<li>So we can prioritize<\/li>\n<li>Business needs it for planning<\/li>\n<li>Request funds for work<\/li>\n<li>To help balance the work<\/li>\n<li>Helps in managing resources<\/li>\n<li>Determine if end result is worth the cost<\/li>\n<li>To give the customer prediction &#8211; to meet customer expectations<\/li>\n<li>CEO needs it.<\/li>\n<\/ul>\n<h3>Affinity Group: &#8220;Gaming&#8221; or manipulating the system and related stuff \/ dysfunctions<\/h3>\n<ul>\n<li><strong>NOTE: I am not discussing these things in this post &#8211; sometime soon I&#8217;ll cover this stuff in detail.<\/strong><\/li>\n<li>The keep your job<\/li>\n<li>To give a reason to yell at someone<\/li>\n<li>It&#8217;s &#8220;How we do things&#8221;<\/li>\n<li>Habit<\/li>\n<li>Need to get a programmer fired (setting her up for failure)<\/li>\n<li>To cover your own ass as a developer<\/li>\n<li>To pit people\/teams against each other<\/li>\n<\/ul>\n<h3>Now for the discussion<\/h3>\n<p>After our gathering and grouping exercise, we began discussing what we felt\u00a0this showed us.\u00a0 During the discussion we just &#8220;followed the flow&#8221; as ideas were expressed.<\/p>\n<h4>We observed, as a group, that estimates are mostly for planning and making decisions about what to work on.<\/h4>\n<p>In the discussion, we were in alignment that we &#8220;need&#8221; estimates so we can plan our work, and so we can make decisions about which projects or features to work on.<\/p>\n<h4>After all the effort we put into estimating, we still rarely get things done &#8220;on schedule&#8221; and &#8220;within budget&#8221;.<\/h4>\n<p>Also, we still frequently\u00a0ask (or our managers ask): &#8220;Are we there yet?&#8221;.<\/p>\n<p>Why do we have these problems?\u00a0 We&#8217;ve been doing estimates for years &#8211; shouldn&#8217;t we be great at it by now? Other similar or related things that\u00a0we&#8217;ve seen:<\/p>\n<ul>\n<li>Progress isn&#8217;t visible<\/li>\n<li>We seem to be get more\u00a0behind our schedule no matter what we do<\/li>\n<li>Money is running out and important things are not even close to being done.<\/li>\n<li>Stuff we thought was done turns out to not be.<\/li>\n<\/ul>\n<p>Rarely are the estimates accurate enough to really count on for release dates, costs, etc.<\/p>\n<h4>How do we typically deal with &#8220;over budget&#8221; and &#8220;not on schedule&#8221; issues?<\/h4>\n<ul>\n<li>We end up cutting features<\/li>\n<li>Pushing out deadlines and so on<\/li>\n<li>Hire more people<\/li>\n<li>Blaming each other about whose &#8220;fault&#8221; it is<\/li>\n<li>Agreeing to get &#8220;better&#8221; at gathering requirements and doing estimates &#8220;next time&#8221;<\/li>\n<\/ul>\n<h4>Still, others are dependent on estimates such as marketing, HR, Ops, our customers&#8230; and so on<\/h4>\n<ul>\n<li>Do estimates really provide sufficient information for these folks to get real value?<\/li>\n<li>Or&#8230; are there a lot of decisions made based on faulty estimates???<\/li>\n<\/ul>\n<h4>So, With all these problems, why aren&#8217;t we looking for a better approach? What is wrong with our estimating process? Should we try to get better at it, or&#8230; ?&#8221;<\/h4>\n<p>One reason estimates provide little chance for usefulness:<\/p>\n<ul>\n<li>The Unknowns might invalidate any estimate we make &#8211; estimates by nature contain unknowns<\/li>\n<li>What is 4 x 8 + 7\u00a0 \/ 2 * 83 + unknown?\n<ul>\n<li>The answer UNKNOWN<\/li>\n<li>We can guess, or base our UNKNOWN on similar things.\u00a0 Might work. Might not.<\/li>\n<\/ul>\n<\/li>\n<li>Many important decisions are based on UNKNOWN, but we act as if we &#8220;KNOW&#8221; something<\/li>\n<li>The argument is often made that we just need to &#8220;have some relative estimate&#8230;&#8221;\n<ul>\n<li>It is likely that even this leads to bad decisions<\/li>\n<li>For example, what good is relative decision based on &#8220;This UNKNOWN is bigger than that UNKNOWN?&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>MY CONCLUSION AS PRESENTED:<\/h4>\n<h4>So, if the Estimating process is flawed (and it might be), and getting &#8220;better at it&#8221; hasn&#8217;t worked&#8230; Do we really need estimates?\u00a0 Can we innovate a better way?<\/h4>\n<ul>\n<li>What I am suggesting is that we have to evaluate our dependence on estimates<\/li>\n<li>My own experiences have proven to me that estimates are not always needed.\n<ul>\n<li>I&#8217;ve been working without estimates for over 3 years with good results in corporate, &#8220;internal&#8221; projects<\/li>\n<li>I&#8217;ve had several long term ongoing projects that did not use (or need) estimates &#8211; One of over 4 years on commercial software<\/li>\n<li>I&#8217;ve done contract work with NO ESTIMATES. Many have told me &#8220;customers won&#8217;t do that&#8221;, but there are at least some that will.\n<ul>\n<li>When a customer sees that more &#8220;real&#8221; work gets done and more of the right thing gets done with less &#8220;busy work&#8221; they get on board.<\/li>\n<li>Finding ways to pay a very low cost to prove something works, or doesn&#8217;t work is very attractive to most customers.\u00a0 To me, this is a fundamental benefit of an Agile approach.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>My experiences are not proof that estimates are not needed.\n<ul>\n<li>I am not trying to change the world.\u00a0 I do want MY jobs\/contracts\/customers to get the benefit of doing things in a better way.<\/li>\n<li>I AM trying to invite conversation about this stuff, and encourage us to explore and replace these painful practices in our profession.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>This discussion had more to do with posing the questions than answering them<\/h4>\n<ul>\n<li>It is contextual (as usual)<\/li>\n<li>Lots of organizations feel they need estimates and you must work within the system.\u00a0 Sorry for that &#8211; but I can&#8217;t fix that.<\/li>\n<li>Often, customers will not entertain using a company that does not provide an estimate.\n<ul>\n<li>They want to know what they&#8217;ll get, when they&#8217;ll get it, and how much it will cost.<\/li>\n<li>It is a risky situation for everyone &#8211; and if you are in that world, there are still ways &#8220;sell&#8221; the benefits of finding a better way.<\/li>\n<\/ul>\n<\/li>\n<li>I am suggesting is that we need to do some serious thinking about how to change this reality, and innovate ways to eliminate the dependence on estimates<\/li>\n<\/ul>\n<h4>I am proposing that we need to imagine a different world<\/h4>\n<ul>\n<li>Do some &#8220;thought&#8221; experiments\n<ul>\n<li>IMAGINE:\n<ul>\n<li>What if we were to find that estimates have NO value (zero benefit), should we still do them?\n<ul>\n<li>What would that look like?<\/li>\n<\/ul>\n<\/li>\n<li>What if we were to find that estimates are harmful and are counter-productive?\n<ul>\n<li>What would you do?<\/li>\n<\/ul>\n<\/li>\n<li>What if the were to find out that estimates are fatally TOXIC\n<ul>\n<li>What would we do then?\u00a0 How fast would we need to address this?<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Take some action that will expose the reality about our estimates<\/h4>\n<ul>\n<li>Can we find a way to wean ourselves from estimate dependency?<\/li>\n<li>A few things that have worked for me\n<ul>\n<li>Deliver value quickly and frequently (sound familiar?) &#8211; that is: put small chunks into real use early and often\n<ul>\n<li>Making decisions about &#8220;what to do&#8221; become less important when we can do &#8220;some of this&#8221; then &#8220;some of that&#8221; and see what works (or doesn&#8217;t work)\u00a0quickly and cheaply.<\/li>\n<li>People stop worrying about &#8220;are we there yet&#8221; when interesting (useful) things are continuously happening and being put into real use by real users.\n<ul>\n<li>It&#8217;s like bringing along some new toys and activities to hand to your kids on long trips when they start getting antsy.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Lead your customer\/stakeholders\/whatever to an understanding of what is important to deliver NEXT&#8230;\n<ul>\n<li>&#8230; we only have so much work that can be done right now &#8211; focus on that<\/li>\n<li>&#8230; put all your effort into that<\/li>\n<li>&#8230; and put little time on all else<\/li>\n<\/ul>\n<\/li>\n<li>You can introduce this a little at a time.\n<ul>\n<li>Thinking people who are open to this will slowly come around.\u00a0 Or not.\u00a0 Just depends.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Remember: I am just encouraging discussion.<\/h4>\n<p>What works for me might not make sense to you.\u00a0 Maybe someday it will.\u00a0 When that happens, you will have crossed over into the land of no estimates.\u00a0 Beware.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve done 12+ sessions at Agile and Developer &#8220;user groups&#8221;,\u00a0Agile or Dev conferences, college classes, and code\u00a0camps\u00a0where the main topic (or a big component)\u00a0of the session was Estimates in Software Development. Here are the notes from one such session I facilitated last year at an Open Space event (Agile Open California, North) Session Title: Estimates [&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,4],"tags":[],"class_list":["post-408","post","type-post","status-publish","format-standard","hentry","category-agile-stuff","category-estimating","category-no-estimating","category-waterfall"],"_links":{"self":[{"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts\/408","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=408"}],"version-history":[{"count":20,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts\/408\/revisions"}],"predecessor-version":[{"id":410,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/posts\/408\/revisions\/410"}],"wp:attachment":[{"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/media?parent=408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/categories?post=408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zuill.us\/WoodyZuill\/wp-json\/wp\/v2\/tags?post=408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}