{"id":31,"date":"2021-09-16T11:53:00","date_gmt":"2021-09-16T15:53:00","guid":{"rendered":"https:\/\/www.faunbar.com\/rickb\/?p=31"},"modified":"2021-09-16T20:02:55","modified_gmt":"2021-09-17T00:02:55","slug":"realistic-development-ambitions","status":"publish","type":"post","link":"https:\/\/www.faunbar.com\/rickb\/index.php\/2021\/09\/16\/realistic-development-ambitions\/","title":{"rendered":"Realistic development ambitions"},"content":{"rendered":"\n<p>When defining goals for a startup, or outlining requirements for significant new software development, a lot of things pressure us to be too ambitious. A little stress is energizing, but striving toward unrealistic goals is both damaging and wasteful.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pressure<\/h2>\n\n\n\n<p>It\u2019s a proud and noble thing, setting out on the hero\u2019s journey, to slay the dragon or strive against the odds, to dream the impossible dream. As Shaw wrote, \u201call progress depends on the unreasonable man.\u201d\u0094 Steve Blank speaks of \u201ccrazy entrepreneurs\u201d who are hallucinating, yet sometimes are actually visionaries.<\/p>\n\n\n\n<p>So to get going it is necessary to have iffy judgment!<\/p>\n\n\n\n<p>We get off to a rousing start. We don\u2019t want to miss the best ideas, so we solicit and collect all the ideas. It\u2019s perfectly appropriate to gather up and consider every possibly relevant feature, enhancement, performance improvement, what have you. That\u2019s even a little like brainstorming.<\/p>\n\n\n\n<p>Of course nobody wants to see their good ideas shot down, so everybody pushes for their favorite feature to get crammed into the next release. The pressure is exacerbated if the organization has a, ahem, mixed record of getting releases out the door. When releases are few and far between, every stakeholder pushes for their items, believing that the upcoming release might be the only window of opportunity for that great idea or that great customer.<\/p>\n\n\n\n<p>Then if the release date is slipped, especially when there\u2019s a history of slips, it\u2019s taken as a reprieve, a second chance for all those ideas that barely didn\u2019t make the first cut, a chance to crowd more orphans aboard the overloaded, struggling train.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Downfall<\/h2>\n\n\n\n<p>In responding to that pressure, we overpromise. Then when it all hits the fan, we\u2019re forced to underdeliver. Or else we rush heroically, sacrificing our health and our relationships, to squeeze out something precariously undertested and embarrassingly unprofessional. Dang.<\/p>\n\n\n\n<p>Underdelivering damages credibility, both our own within the organization, and the external credibility of the organization itself. It throws into disarray other things that serially depend on it, like maybe a long-lead-time marketing campaign. And it leads us to misdirect or even waste our scarce resources.<\/p>\n\n\n\n<p>What does it mean for something be a requirement for a release? The effect is that everything else in the release, done or not, has to wait until that something is finished. Everything else gets held back, ready or not, impatiently tapping its toes and rattling its fingernails, maybe growing stale, until the last bottleneck slow-poke finally finishes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Slip<\/h2>\n\n\n\n<p>Or maybe there\u2019s a change in the pressure equilibrium. With fixed resources, there is a mutual tradeoff among schedule, scope, and quality. Under irresistible schedule pressure, either scope or quality will suffer.<\/p>\n\n\n\n<p>We can shrink scope by dropping some stuff from the release, unfinished or maybe even almost finished, freeing everything else to ship. Or maybe quality will suffer, if it seems that rushing to ship crap on schedule is better than to ship nothing at all.<\/p>\n\n\n\n<p>Creative goal reduction (dropping late stuff from a release) is actually a tragic thing to have to do. All those resources, effort, planning, energy, were invested in something to not ship? What if resources had been focused on a subset of the goals, getting those out the door that much sooner? True, this can\u2019t always be done \u2014 neither projects nor developers are truly fungible \u2014 and you can\u2019t produce a baby in one month by assigning nine pregnant women to the task.<\/p>\n\n\n\n<p>As far as quality goes, why do we have to choose between shipping something half-assed, or something that\u2019s competently done yet obviously incomplete? Are those really our only options?<\/p>\n\n\n\n<p>We don\u2019t explicitly plan to do things that way, but when it arises naturally out of our plans, we can\u2019t duck the responsibility.<\/p>\n\n\n\n<p>I do have some ideas for one way out, which I&#8217;ll save for a future post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When defining goals for a startup, or outlining requirements for significant new software development, a lot of things pressure us to be too ambitious. A little stress is energizing, but striving toward unrealistic goals is both damaging and wasteful. Pressure It\u2019s a proud and noble thing, setting out on the hero\u2019s journey, to slay the &hellip; <a href=\"https:\/\/www.faunbar.com\/rickb\/index.php\/2021\/09\/16\/realistic-development-ambitions\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Realistic development ambitions&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5],"class_list":["post-31","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-sw-dev"],"_links":{"self":[{"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/posts\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":1,"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":32,"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/posts\/31\/revisions\/32"}],"wp:attachment":[{"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.faunbar.com\/rickb\/index.php\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}