Tasking developers with creating detailed estimates is a waste of time (2020)
For myself, I have found that the more detailed an estimate, the more detailed an &quot;up front&quot; plan. This is a classic pattern, and techniques like Waterfall and TDD rely on it. It&#x27;s an extremely good way to get the costs and plan formalized (critical, in many organizations). Further, with TDD, this allows a very detailed and complete test matrix to be established, so the end quality can be quite high.<p>I worked this way for most of my career. One of the big reasons, is that I spent a lot of my career, writing software in support of hardware devices, and coordinating parallel development efforts was crucial. Lots of critical paths.<p>Also, hardware people tend to be <i>very</i> &quot;waterfall-y,&quot; so I was often never given a choice.<p>As a result, we learned to give fairly accurate estimates, for pretty long-term projects.<p>The main problem with this approach, is that it delivers yesterday&#x27;s technology, tomorrow. By the time the project is released, no one wants it. Also, it&#x27;s quite possible to deliver features and algorithms that aren&#x27;t useful, inherently flawed, or actually detrimental to the user&#x27;s workflow.<p>Once it has been written into the lists, it is set in stone; even if it is found to be a mistake.<p>After leaving my last job, I started experimenting with more flexible development methodologies. I think I&#x27;ve had some success[0]-[4], but the scope of the projects has been <i>much</i> more humble than my previous works (out of necessity).<p>In the project that I&#x27;m developing now, there has been almost no &quot;up front&quot; plan at all, and no set schedule. I&#x27;ve been working on the frontend app (a native Swift iOS app) for over a year. The backend is a couple of servers that I wrote years ago. One has since become a standalone open-source initiative, run by a different team[5], and the other was one that I made as &quot;practice,&quot; several years ago[6].<p>In developing the frontend, I created a TestFlight-ready app, almost immediately (I made my first TestFlight release about a month after I started coding). This has been a &quot;running prototype,&quot; ever since. The entire team gets releases, quite quickly, and gives feedback and testing. Additionally, the app is continuously being vetted by Apple, so we are unlikely to have the &quot;App Store Approval Brick Wall&quot; problem.<p>This has allowed the specification to &quot;morph,&quot; throughout the life of the project. I have actually thrown away months&#x27; worth of code, as we have decided to pivot direction, many times, throughout the lifecycle.<p>We&#x27;re all <i>very</i> happy with where it&#x27;s at, now. We are in the home stretch (but we still have at least a couple more months of work on the frontend app). It is almost entirely different from the original, unworkable, &quot;idea man&quot; concepts, that were presented to me, over a year ago.<p>I&#x27;ve also been doing this for free. I can&#x27;t imagine any company that wanted to make money, doing it this way. I would have been forced to deliver a crap hack, six months ago.<p>[0] <a href="https:&#x2F;&#x2F;littlegreenviper.com&#x2F;miscellany&#x2F;thats-not-what-ships-are-built-for&#x2F;" rel="nofollow">https:&#x2F;&#x2F;littlegreenviper.com&#x2F;miscellany&#x2F;thats-not-what-ships...</a><p>[1] <a href="https:&#x2F;&#x2F;littlegreenviper.com&#x2F;miscellany&#x2F;forensic-design-documentation" rel="nofollow">https:&#x2F;&#x2F;littlegreenviper.com&#x2F;miscellany&#x2F;forensic-design-docu...</a><p>[2] <a href="https:&#x2F;&#x2F;littlegreenviper.com&#x2F;various&#x2F;evolutionary-design-specification&#x2F;" rel="nofollow">https:&#x2F;&#x2F;littlegreenviper.com&#x2F;various&#x2F;evolutionary-design-spe...</a><p>[3] <a href="https:&#x2F;&#x2F;littlegreenviper.com&#x2F;various&#x2F;concrete-galoshes&#x2F;" rel="nofollow">https:&#x2F;&#x2F;littlegreenviper.com&#x2F;various&#x2F;concrete-galoshes&#x2F;</a><p>[4] <a href="https:&#x2F;&#x2F;littlegreenviper.com&#x2F;various&#x2F;testing-harness-vs-unit&#x2F;" rel="nofollow">https:&#x2F;&#x2F;littlegreenviper.com&#x2F;various&#x2F;testing-harness-vs-unit...</a><p>[5] <a href="https:&#x2F;&#x2F;bmlt.app" rel="nofollow">https:&#x2F;&#x2F;bmlt.app</a><p>[6] <a href="https:&#x2F;&#x2F;riftvalleysoftware.com&#x2F;work&#x2F;open-source-projects&#x2F;#baobab" rel="nofollow">https:&#x2F;&#x2F;riftvalleysoftware.com&#x2F;work&#x2F;open-source-projects&#x2F;#ba...</a>