<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Bad Software Advice]]></title><description><![CDATA[Learn from the wrong]]></description><link>https://badsoftwareadvice.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!9puF!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03700c23-4e63-456c-8273-ba6ae8915e6f_500x500.png</url><title>Bad Software Advice</title><link>https://badsoftwareadvice.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 16 Aug 2026 21:11:27 GMT</lastBuildDate><atom:link href="https://badsoftwareadvice.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[David Tate]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[badsoftwareadvice@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[badsoftwareadvice@substack.com]]></itunes:email><itunes:name><![CDATA[David Tate]]></itunes:name></itunes:owner><itunes:author><![CDATA[David Tate]]></itunes:author><googleplay:owner><![CDATA[badsoftwareadvice@substack.com]]></googleplay:owner><googleplay:email><![CDATA[badsoftwareadvice@substack.com]]></googleplay:email><googleplay:author><![CDATA[David Tate]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A quick note to the AI-skeptical software developers]]></title><description><![CDATA[With all due respect]]></description><link>https://badsoftwareadvice.substack.com/p/a-quick-note-to-the-ai-skeptical</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/a-quick-note-to-the-ai-skeptical</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 06 Apr 2026 10:32:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aqUR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<ul><li><p>If your AI tooling experience wasn&#8217;t in the last 3 months,</p></li><li><p>If your experience with LLMs and chabots is just ChatGPT, </p></li><li><p>If while using it, you tried to trip it up, succeded, and then said &#8220;SEE?!&#8221; and stopped using it,</p></li><li><p>If you tried to get it to do your <em>whole</em> job, and not to help you with your current task,</p></li><li><p>If you feel like you are too smart to replace, because only you know the system,</p></li><li><p>If you have only used direct models to code and not tools like Cursor or Claude Code with the models,</p></li><li><p>If you then took months off after concluding that it was garbage,</p></li><li><p>If you have a background anxiety about the whole thing that is driving the behaviors above, then:</p></li></ul><p>Give it another go. Try a better, more recent tool. Give it subtasks. Give it complex things that you aren&#8217;t sure it can figure out<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, and when it surprises you, feel the feelings, but then be optimistic. Read what others are doing<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, and what they feel about it.</p><p>Keep learning.</p><p>Don&#8217;t turn it off.</p><p>Don&#8217;t run from it.</p><p>Try again.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aqUR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aqUR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aqUR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aqUR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aqUR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aqUR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4194894,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/192518886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aqUR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aqUR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aqUR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aqUR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dd572c-9542-43ec-a77b-efbcaab8f88f_4000x3000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Like asking it for 5 reasons your code is failing in a debugging scenario, or asking it to document your entire repository for a new developer, or asking it to search for bugs in your code without any other guidance, etc.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>A start to help, but there are many others:</p><ul><li><p><a href="https://bigmachine.io/articles/claude/let-go-let-claude/?ref=notes-from-an-imposter-programmer-newsletter">Let Go Let Claude</a></p></li><li><p><a href="https://neilkakkar.com/productive-with-claude-code.html">How I&#8217;m Productive with Claude Code</a></p></li><li><p><a href="https://standupforme.app/blog/some-uncomfortable-truths-about-ai-coding-agents/">Some uncomfortable truths about AI coding agents</a></p></li><li><p><a href="https://aicode.swerdlow.dev/">Be intentional about how AI changes your codebase.</a></p></li><li><p><a href="https://quint-lang.org/posts/llm_era">Reliable Software in the LLM Era</a><br><a href="https://davidbau.com/archives/2025/12/16/vibe_coding.html">Vibe Coding</a></p></li><li><p><a href="https://fly.io/blog/everyone-write-an-agent/">You Should Write An Agent</a></p></li><li><p><a href="https://boristane.com/blog/how-i-use-claude-code/">How I Use Claude Code</a></p></li><li><p><a href="https://simonwillison.net/2025/Dec/18/code-proven-to-work/">Your job is to deliver code you have proven to work</a></p></li><li><p><a href="https://antirez.com/news/154">Coding with LLMs in the summer of 2025 (an update)</a></p></li><li><p><a href="https://sjer.red/blog/2026/built-with-ai/">Things I&#8217;ve Done with AI</a></p></li><li><p><a href="https://www.fast.ai/posts/2026-01-28-dark-flow/">Breaking the Spell of Vibe Coding</a></p></li><li><p><a href="https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/">How to effectively write quality code with AI</a></p></li><li><p><a href="https://www.claudecodecamp.com/p/i-m-building-agents-that-run-while-i-sleep">I&#8217;m Building Agents That Run While I Sleep</a></p></li></ul></div></div>]]></content:encoded></item><item><title><![CDATA[Good news - all of your current skills translate well into the AI development era. Except one.]]></title><description><![CDATA[Check yourself, before or equal to you wrecking yourself]]></description><link>https://badsoftwareadvice.substack.com/p/good-news-all-of-your-current-skills</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/good-news-all-of-your-current-skills</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 30 Mar 2026 13:04:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!q7zR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You are a senior developer with decades of experience. Depending on how plugged in you are to the latest AI developments, a year ago or a few months ago you thought you were one of only a few people who could write a 20K lines of code complex system, launch it, and keep it running. You studied various technical manuals and knew useful trivia useless outside your field, and you did this for years.</p><p>Guess what. The AI models have also read those books, and can pull them into their context as needed. They are also actively out-reading you. They can generate code very quickly, creating large systems in a way that you didn&#8217;t. </p><p>Sure, they make a lot of mistakes, and vibe-coding an unstructured 20K LOC is a Very Bad Idea. They need to be guided and taught, and you need to serve as the architect and product manager to keep it on track to meet implicit and explicit requirements. There are times when it will act just like a junior developer, and all your skills in mentorship will pay off. There are times it will generate very slow code, and your years of experience tuning will be very valuable. In many ways these coding tools are serve as a mech suit for someone like you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q7zR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q7zR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q7zR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q7zR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q7zR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q7zR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg" width="1456" height="2184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1226036,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/192517154?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q7zR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q7zR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q7zR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q7zR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ddda0-bade-443a-84eb-abfb06368925_3984x5976.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The bugs are that way, let&#8217;s crush them together.</figcaption></figure></div><p>While many of your skills carry forward, there are some that don&#8217;t, and only one that really matters. Attitude. Because although they are a mech suit for you, they are also a tool for non-programmers.</p><p>Your whole life you have been told and it has been reinforced that software engineering is a high art and a difficult science that you are therefore <a href="https://badsoftwareadvice.substack.com/p/how-to-treat-programming-with-illogical">very special.</a> Some of us having taken this to heart more than others. But we have all been treated with special handling by product managers, QA staff, and other members of our team because Only We Can Change the Code.</p><p>And now that isn&#8217;t quite true anymore, is it?</p><p>Much like doctors are taught within a culture where they are viewed all very powerful, better even, than their coworkers, programming has the same sin. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yqxp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yqxp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 424w, https://substackcdn.com/image/fetch/$s_!yqxp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 848w, https://substackcdn.com/image/fetch/$s_!yqxp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 1272w, https://substackcdn.com/image/fetch/$s_!yqxp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yqxp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png" width="690" height="454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:454,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33160,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/192517154?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yqxp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 424w, https://substackcdn.com/image/fetch/$s_!yqxp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 848w, https://substackcdn.com/image/fetch/$s_!yqxp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 1272w, https://substackcdn.com/image/fetch/$s_!yqxp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73005ad1-ec80-445e-8332-89c07d1347fb_690x454.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The I&#8217;m-special attitude is dangerous, professionally and <a href="https://blog.davidtate.org/what-is-on-the-line-with-culture-at-work/">personally</a>. These tools should enable product managers to build clickable prototypes quickly and easily, and help QA analyze the code looking for bugs in a new way. We can&#8217;t be gatekeepers of this, we need to instead help them turn these efforts into what we always do - shippable, supportable high-quality systems. Without the attitude.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[There are two systems. Which one are you working on?]]></title><description><![CDATA["I don't know, let me ask the product manager"]]></description><link>https://badsoftwareadvice.substack.com/p/there-are-two-systems-which-one-are</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/there-are-two-systems-which-one-are</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Wed, 25 Mar 2026 14:07:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Y_u0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y_u0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y_u0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y_u0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y_u0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y_u0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y_u0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg" width="1200" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:229109,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/190945368?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y_u0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y_u0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y_u0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y_u0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84ac4ec8-1a85-47eb-b98f-cb24ebca3795_1200x900.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><em><strong>system</strong></em>: <em>a set of things working together as parts of a mechanism or an interconnecting network.</em></p><p>Software developers work on systems. For example, if you work for a a loan approval company which determines if a person should be offered a loan, you work on the code that takes in credit history and runs a series of rules to determine if a person should be offered a loan and if so at what rate.</p><p>Your job is to make the system work, make it work correctly, and make it work quickly. You spend most days working on one of those things - support, bugs, production incidents are making it work, adding new features is making it work correctly, and any scaling or performance work is making it work quickly. This involves a lot of complexity as each of these three tasks can also break the system or interact with another attribute. For example, adding features can slow down a system, fixing bugs can accidentally make the system no longer work, and of course making a system faster can make it no longer work correctly.</p><p>This system lives within a larger system which is how people interact with it. This greater system includes loan officers, the customer, the support team that field questions, etc. The greater system includes your competitors, other tools that your customers use, the market, and many other things that are interconnected with your small technical system.</p><p>What system are you really working on?</p><h4>That&#8217;s Not My Job</h4><p>Traditionally, computer programmers had a clear answer to this question which is, um, I&#8217;m working on the system that the computer works on, because I&#8217;m a computer programmer and I don&#8217;t understand all the nuance of the greater system. That&#8217;s not my job, my job is the technical system.</p><p>And for the most part you would be correct. But, a misunderstanding of the greater system can make you build the wrong system:</p><ul><li><p>make it work: it can literally be the wrong system - nobody cares about it.</p></li><li><p>make it work corectly: it can work to spec, but the spec be wrong, not make sense to the user, or behave incorrectly given context.</p></li><li><p>make it work quickly: you can tune the heck out of a part of the system nobody cares about, while not addressing something that is the real bottleneck.</p></li></ul><p>Traditionally, understanding the greater system was the role of the product manager, or &#8220;the business&#8221;. It was somebody else&#8217;s job to do this, not your problem.</p><h4>Cost of development</h4><p>The cost of development is lowering with the AI winter ending. Computer programmer&#8217;s jobs are shifting from being the only ones that can understand and code to being managers of tools and agents that can code very quickly. Our jobs are shifting from making something from nothing to be judges of whether or not something has been done correctly by an agent.</p><p>And this means that we need to understand the technical system, and the greater system. We are moving &#8220;up stack&#8221; so to speak, and becoming higher level builders.</p><p>It is a wise investment to spend time learning the greater system.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to determine the urgency of a task]]></title><description><![CDATA[If you just talked about it, then it must be urgent, but maybe not important]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-determine-the-urgency-of-a</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-determine-the-urgency-of-a</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 25 Aug 2025 12:09:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gnvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everything you have ever worked on is urgent. This is why you work most days and why they are paying you.</p><p><strong>urgent</strong></p><p><em>adjective</em></p><ol><li><p><em>(of a state or situation) requiring immediate action or attention.</em></p></li><li><p><em>(of action or an event) done or arranged in response to a pressing or critical situation.</em></p></li><li><p><em>(of a person or their manner) earnest and persistent in response to a pressing situation.</em></p><p></p></li></ol><p>Most of your work is 1 or 2, and you need to be a person who is urgent in the third sense. You need to be <em>perceived to be</em> a #3.</p><p>Typically, the ticketing system will provide clues on how urgent something is, but normally, your company has a scale that protects the recording and accountability<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> of a decision, so the priority system is something non-sensical like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gnvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gnvm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gnvm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gnvm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gnvm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gnvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:494159,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153805560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gnvm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gnvm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gnvm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gnvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F537dec18-ae2d-43c3-8777-286d0bec4439_2880x1920.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Super High Critical</strong></em> - you are expected not to eat or sleep until it is fixed. Updates must be provided every 15 minutes so that people who don&#8217;t understand what is happening know what is happening. Your parents are <em><strong>mad</strong></em>.</p><p><em><strong>Critical</strong></em> - Someone is actively yelling at someone else about this, and updates must be provided frequently. You can eat and got to the bathroom on a typical schedule. You parents aren&#8217;t mad, they are <em><strong>disappointed</strong></em>.</p><p><em><strong>High</strong></em> - This used to be critical, but was changed to High once a week passed, the yelling stopped, or new louder yelling started. This is the majority of work.</p><p><em><strong>Medium</strong></em> - This will never be worked on, and contains 1% of all known tickets. This is where product managers put tickets that nobody seems to understand, but they are afraid to cancel or close. This is where cards from a previous administration go to retire.</p><p><em><strong>Low</strong></em> - this shouldn&#8217;t have even been recorded and will be either not brought into the next ticketing system when it migrates, or closed to help KPIs as part of an audit 3 months before layoffs. In a poorly run technical organization, this is a synonym for the <a href="https://badsoftwareadvice.substack.com/p/how-to-use-the-term-technical-debt">tech debt queue</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dXqU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dXqU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dXqU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dXqU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dXqU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dXqU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:932969,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153805560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dXqU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dXqU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dXqU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dXqU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2834692-b9e1-48af-b419-914211b01fd6_5472x3648.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>How to Make Sure You Work on Top Priority Cards</h4><p>For all the same reasons, it is&nbsp;<a href="https://badsoftwareadvice.substack.com/p/how-to-build-the-wrong-product-semi">hard to figure out which product to build</a>&nbsp;and to determine the urgency of tasks competing for time. But luckily, you are but a small cog in this enormous machine that produces software for cat moms, and you can just ask your boss what your top priority is.</p><p>Here&#8217;s the thing, though: you don&#8217;t have just one boss. Nobody does. Sure, sure, there is one person who tells you that you didn&#8217;t get a raise this year because of how pro-dog you were on social media and how you were late on a few key&nbsp;<a href="https://badsoftwareadvice.substack.com/p/how-to-understand-deadlines-as-a">deadlines</a>, but I mean the people&nbsp;you report to are never singular.</p><p>For example, your boss has a boss. Sometimes, their priorities override what your boss just told you to do. Sometimes, the boss of the boss of the boss shifts what everyone is working on. You also have other non-work bosses, like your family or your cat at home. It&#8217;s the age-old tale: you work your hands to the bone to make a cat blogging platform successful and <em>forget to raise <strong>your</strong> cat</em>. And you have an internal boss, with brains and ideas and stuff, and sometimes you feel that there are better things you could be working on.</p><h4>How to Handle Constantly Changing Priorities</h4><p>So here are a few techniques to handle this:</p><ul><li><p>At work, ask your official boss what they think your priorities are. Do this every few weeks. Get them to edit a shared to-do list, product backlog, or some other sneaky in-writing format.</p></li><li><p>Keep track of everything that you were told to work on. If something was an emergency and now it is less of an emergency but you know it will be an emergency again soon - the smoldering items - keep track of this as well.</p></li><li><p>Rarely express your opinion on their view of priorities. Save any disagreement for when you really don&#8217;t agree. Be agreeable to change: <em>We are done with that large boat you wanted - oh planes need to land on it too? Ok, we will retrofit it as an aircraft carrier, no problem! We embrace change!!. </em>This is quite difficult to do without <a href="https://badsoftwareadvice.substack.com/p/how-to-understand-deadlines-as-a">building a prejudice towards the other roles in your organization</a>, but it is possible. Just think to yourself: man, there must be a lot of details I don&#8217;t know about for them to decide in some meeting at the last minute that planes should land on this freaking boat.</p></li><li><p>When you have a really good idea, pitch it to your boss after you have fleshed it out a bit. Since you have been so agreeable in the past, your voicing of a strong opinion now means more (maybe).</p></li></ul><h4>How to Communicate That You Are Aware of the Priority of Something</h4><p>You might have been led to believe that keeping calm in a tense situation is a strength, but this can backfire. If the CEO, CTO, VP of Software Development, Product Manager, Staff Engineer over Scary Changes, Head of Risk, and Executive Chef are all on a production incident with you, and you act casual, you will be viewed as NotSerious, NotProfessional, and NotToBeTrusted, and they might add the Head of HR to the call. Instead, you need to use the fact that people&#8217;s nervous systems work in packs to communicate that you get it.</p><p>Start the call by FREAKING OUT. Then, calm down and solve the problem. Normally freaking out works in short bursts, because it shows that you are aware of the consequences, and gives a voice to what others are feeling. When you calm down, you show great levels of control and emotional intelligence. Even if you are faking it:</p><p>BAD EXAMPLE</p><p>(joins production call, <a href="https://youtu.be/KQ6zr6kCPj8?si=79hfR89O9wT46e1N&amp;t=201">Party Rockin</a> is on in the background)</p><p>YOU: &#8220;Whattup&#8221;</p><p>INCIDENT MANAGER: &#8220;The system is completely down, and nobody can login&#8221;</p><p>YOU: &#8220;Again? OK&#8230;. I guess I can take a look&#8221;</p><p></p><div><hr></div><p>GOOD EXAMPLE</p><p>(joins production call, <a href="https://youtu.be/KQ6zr6kCPj8?si=79hfR89O9wT46e1N&amp;t=201">Party Rockin </a>is on in the background)</p><p>YOU: &#8220;What&#8217;s up&#8221;</p><p>INCIDENT MANAGER: &#8220;The system is completely down, and nobody can login&#8221;</p><p>YOU: </p><p><em>screaming</em> &#8220;OH NO PLEASE NO&#8221;</p><p>(sound of music being turned off, glass breaking, and a cat maybe being kicked) </p><p><em>more screaming</em> &#8220;THIS IS AWFUL, LET&#8217;S FIX IT, WITH GOD AS OUR WITNESS&#8221;</p><p><em>more calmly</em> &#8220;Ok, let&#8217;s start by looking at the logs and gathering more information.&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><a href="https://aworkinglibrary.com/writing/accountability-sinks">Accountability Sink</a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[How to build everything yourself]]></title><description><![CDATA[Not Invented Here == Wet Garbage]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-build-everything-yourself</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-build-everything-yourself</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 11 Aug 2025 00:04:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Tn07!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you heard that the Excel team has their own C compiler? Or that Amazon has their <a href="https://aws.amazon.com/amazon-linux-2/?amazon-linux-whats-new.sort-by=item.additionalFields.postDateTime&amp;amazon-linux-whats-new.sort-order=desc">own version of Linux</a>? How about Dropbox <a href="https://www.trgdatacenters.com/resource/dropbox-left-the-cloud-in-2015-and-never-went-back/">building their own cloud infrastructure</a> and moving off of AWS S3?</p><p>These lessons probably apply to your cat mom blogging platform because they are <em><strong>best practices</strong></em>. I mean, the people you work with are <em>so smart</em><strong>, </strong>and they get bored really easily. In tech you need to keep the smartest people busy, and working at your company instead of going to a competitor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tn07!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tn07!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tn07!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tn07!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tn07!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tn07!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg" width="1456" height="2184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6841018,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/143310000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Tn07!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tn07!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tn07!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tn07!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea0dd8e-2eca-4578-a503-4a96d647366b_3456x5184.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Build it yourself, you have plenty of time</h4><p>One of the beautiful things about software teams is that even if it takes 10 people to build the first version of an application, it takes 10 people to maintain the second version. It is pretty amazing, and very different than how, say, highways are built. Imagine if the entire construction crew just stood around near highways, ready to fix huge sinkholes that we all expected to appear.</p><p>Sometimes, if you let this dynamic play out, you will be on the 8th version of a piece of software and there are still 10 developers<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, somehow. Nobody says it outloud, but you run out of things to do. Not that anybody is aware of it, but it happens. Everybody is happy and the new critical features just slow down and you start nitpicking. It starts out slow and low risk - maybe you make a Visual Studio Code extension that helps you with some custom code generation in your particular project. Then you look at the vscode extension library and think - it would be nicer if&#8230;. </p><h4>The Absence of Cash Rules Everything Around Me</h4><p>Next thing you know you are writing TerryScript, which compiles down to ECMA, but only via TerryStudioPlus, which is a custom editor with specific features like JIRA and Slack integration for your particular project, so that you can attach the requirements you received via Slack messages into the comments of the code. In addition, everyone is using a house font that is specifically recognized by the compiler.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> </p><p>And then suddenly you can&#8217;t keep any developers. You can hire super smart ones, and you have a group of super smart ones - I mean one of them built their own language! And another one built their own editor! And they hate each other, just a little bit.</p><p>But every time you hire someone new, the pattern is the same: they are very excited by how hard the interview is (some of that extra time was spent coming up with a great interview process), are excited to learn about all the new custom tech, but they leave right at 8 months. Everytime.</p><h4>Keep Growing, Always Be Hiring</h4><p>Why are you hiring anyway? There's still&nbsp;<em>a lot</em> to do. The application works great and the developer experience is fantastic, but the application crashes - Segmentation Terry&#8217;s Fault<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, the team has t-shirts that they think are so funny - after lunch everyday when everyone logs back in. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NHDF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NHDF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NHDF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NHDF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NHDF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NHDF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg" width="1456" height="1988" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1988,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3115633,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/143310000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NHDF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NHDF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NHDF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NHDF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09299a0b-b844-4c51-bf6f-3f8419f0874e_4576x6248.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo from Terry&#8217;s archives - Terry adjusts the espresso machine to get his morning coffee.</figcaption></figure></div><p>Terry said something about garbage collection, and his desk is a freaking mess so that sounds right but you aren&#8217;t sure what it has to do with anything and you have already talked to the custodians and they still refuse to go into Terry&#8217;s office. You have been told that we are weeks away from a real fix for the &#8220;daily system siesta&#8221; as the users call it. Terry just needs to finish the new version of the runtime, which is compatible with Version 3 of TerryScript, which he says is <em>really close</em>. But only Terry can work on that, so I guess the reason you are hiring is that the business thinks that it takes 10 people to run the team and you only have 9, so you are just trying to find someone to fill the team out. And somebody has to write and maintain The Restarter, which is the watcher program that restarts the primary program when it crashes. The restarter doesn&#8217;t work if the primary program crashes explorer.exe, but that&#8217;s just a Windows thing which will be fixed once Terry&#8217;s friend Tim finishes up Timdows 98 which is due any minute now.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zdFk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zdFk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zdFk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zdFk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zdFk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zdFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg" width="1456" height="968" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:968,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1022444,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/143310000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zdFk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zdFk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zdFk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zdFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9aca58-33e0-4a5a-afc7-7560772a30e5_3008x2000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Or 20, or 30.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>How does a specific _font_ get passed to a compiler? By the custom linter, of course, which translates certain symbols into longer plaintext versions of them. Or something - ask Terry.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>They also have these shirts that say &#8220;The Knights who say <a href="https://en.wikipedia.org/wiki/Not_invented_here">NIH</a>&#8221; which you don&#8217;t understand.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The term "technical debt" is wrong]]></title><description><![CDATA[How to actually get important work done, without name-calling]]></description><link>https://badsoftwareadvice.substack.com/p/the-term-technical-debt-is-bad-and</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/the-term-technical-debt-is-bad-and</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 21 Jul 2025 01:12:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!11Et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://badsoftwareadvice.substack.com/p/how-to-use-the-term-technical-debt">Tech debt</a> means multiple things to multiple people. I wish the term had never been invented. I imagine it has been re-invented a thousand times in conversations like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!11Et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!11Et!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 424w, https://substackcdn.com/image/fetch/$s_!11Et!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 848w, https://substackcdn.com/image/fetch/$s_!11Et!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!11Et!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!11Et!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg" width="1456" height="1075" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1075,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1020302,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/162973996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!11Et!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 424w, https://substackcdn.com/image/fetch/$s_!11Et!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 848w, https://substackcdn.com/image/fetch/$s_!11Et!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!11Et!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b6c5e56-c07c-4228-9326-2ad538aa2be5_4251x3138.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>DEVELOPER</strong>: We need to go back and fix our architecture</em></p><p><em><strong>FOUNDER</strong>: Architecture? like a building? But we have a 1.0 shipped and making money</em></p><p><em><strong>DEVELOPER</strong>:Yeah, but we aren&#8217;t going to be able to ship version 2.0 in this state, it will take so long and will likely not work.</em></p><p><em><strong>FOUNDER</strong>: But you said you knew how to build things well; your whole thing when we hired you was that you build things the right way once.</em></p><p><em><strong>DEVELOPER</strong>:That doesn&#8217;t sound like me. Anyway, yeah, well I didn&#8217;t expect all these constraints to be thrown at me like they did; it was really hard to ship something for the long-term, when it needs to work in the short-term, and we didn&#8217;t know everything yet.</em></p><p><em><strong>FOUNDER:</strong> So again, why do you need to rebuild everything?</em></p><p><em><strong>DEVELOPER</strong>:We don&#8217;t, not everything, its just that our system is writing checks that it can&#8217;t cash&#8230;... You know when you overextend yourself and then have to calm down and rest? Like when you go into debt?</em></p><p><em><strong>FOUNDER:</strong> Oh yeah, I know about that. I have 4 mortgages on my house, it is how we got money to hire you for the Version 1.0.</em></p><p><em><strong>DEVELOPER</strong>:Yeah, well its like that - we need to pay off some of the debt.</em></p><p><em><strong>FOUNDER:</strong> OK, I guess.</em></p><h4>Technical Debt Projects Do Not Get Love</h4><p>If you separate technical debt from other work, then you have narrowed your chance of ever actually working on it. </p><p>This picture does a better job explaining part of the dynamic:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a2D9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a2D9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 424w, https://substackcdn.com/image/fetch/$s_!a2D9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 848w, https://substackcdn.com/image/fetch/$s_!a2D9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 1272w, https://substackcdn.com/image/fetch/$s_!a2D9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a2D9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png" width="657" height="507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:507,&quot;width&quot;:657,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:590643,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/162973996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!a2D9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 424w, https://substackcdn.com/image/fetch/$s_!a2D9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 848w, https://substackcdn.com/image/fetch/$s_!a2D9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 1272w, https://substackcdn.com/image/fetch/$s_!a2D9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b8ba9e-7f46-4d99-932d-b8bf629bfd9b_657x507.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>The Problem with Technical Debt</h4><p>There are other, more complex, reasons that technical debt projects won&#8217;t get worked on. </p><p>First, let&#8217;s be clear, projects that are:</p><ul><li><p>well-understood</p></li><li><p>have executive sponsorship</p></li><li><p>can be justified with a business case</p></li><li><p>come from a customer</p></li></ul><p>Have a higher chance of being worked on versus projects without those attributes. Technical debt projects don&#8217;t meet these criteria often because they:</p><ul><li><p>make it look like you didn&#8217;t do a good job building things</p></li><li><p>can be hard to explain, and it has to be explained by developers</p></li><li><p>start out as grassroots by the people with the most low-level knowledge of how the code works (programmers, support)</p></li><li><p>are confusing, because to product management they feel constant:</p><ul><li><p>a bad developer always wants to upgrade the system to a newer, more attractive technology , for selfish reasons - work is more interesting and it might be better for <a href="https://badsoftwareadvice.substack.com/p/commentary-how-to-be-really-bad-at">your career</a></p></li><li><p>a good developer always wants to upgrade the system, for valid reasons locally that might not be valid globally (i.e. the system <em>would</em> run better if rewritten in Rust, but it doesn&#8217;t make sense for the business to spend the money to do so)</p></li></ul></li><li><p>are not started by customers <em>explicitly<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></em></p></li></ul><p>Add all these factors together, and you&#8217;ll find that &#8220;technical debt projects&#8221; have a harder time getting started and completed.</p><h4>Technical &#8220;Debt&#8221;</h4><p>The term technical debt is a failure of imagination. Sure, it is an accurate way to describe something that happens from time to time:</p><p>You:</p><ul><li><p>don&#8217;t have time to do it the <a href="https://badsoftwareadvice.substack.com/p/how-to-get-into-developer-heaven">Right Way</a></p></li><li><p>need to ship something quickly</p></li><li><p>build something that works for now, with the <em><strong>present</strong></em> knowledge that it isn&#8217;t the best solution for the future</p></li><li><p>were exactly right about the future, so when it arrives you now need to go build it the way you wanted to in the first place</p></li></ul><p>The problem is that once the future arrives, <strong>in hindsight</strong>, most technical decisions look like technical debt. This is why people call a payroll system that has generated hundreds of millions of dollars in revenue for decades a legacy system, riddled with technical debt. </p><p>These are more common situations:</p><p>You:</p><ul><li><p>don&#8217;t have time to understand the problem</p></li><li><p>need to ship something quickly</p></li><li><p>build something that works OK now</p></li><li><p>the future arrives and it needs a better solution</p></li></ul><p>You:</p><ul><li><p>understand the problem well</p></li><li><p>need to ship something</p></li><li><p>build something that works well now</p></li><li><p>the future arrives and it needs a better solution</p></li></ul><p>You:</p><ul><li><p>understand the problem sorta-kinda-maybe</p></li><li><p>need to ship something</p></li><li><p>build something you aren&#8217;t sure is going to work (like a startup&#8217;s product)</p></li><li><p>it works enough for the future to arrive</p></li><li><p>the future arrives and it needs a better solution</p></li></ul><p>In all cases, <em><strong>in hindsight</strong></em>, the problem and solution seem obvious and like you made an intentional debt decision in the past. Or someone did. But guess what: they didn&#8217;t.</p><h4>The World Around Your System is Changing</h4><p><em>&#8220;the future arrives and it needs a better solution&#8221; </em>can be a long list of things:</p><ul><li><p>it is now harder to find good COBOL programmers</p></li><li><p>it is cost prohibitive to host it the way it was built, or find people to keep it running</p></li><li><p>it is no longer legal to run the system the way we do, or for it to make the decisions in the way it does</p></li><li><p>the system does not scale - it worked great, then worked fine for awhile, then OK for awhile, then we fixed something, but now there is visible smoke coming out of the back during business hours</p></li><li><p>the system works well for one domain, but the business wants it to work for another domain</p></li><li><p>One of the system&#8217;s big assumptions is wrong:</p><ul><li><p>Years can be represented in two digits</p></li><li><p>Flights only depart from their gate once</p></li><li><p>Daylight Savings Time always starts around spring and continues until fall</p></li><li><p>Cars only having one engine at a time</p></li><li><p>A street number in an address will never be 0<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p></li></ul></li><li><p>The vendor of one of the technologies has raised their prices so much that you have to rebuild without them or go out of business and change your identity</p></li><li><p>One of the key open-source components you rely on has a maintainer that wishes to afford a reasonable lifestyle that includes not being able to see her kitchen from her bathroom</p></li><li><p>etc. (this list is essentially infinite)</p></li></ul><h4>Some uplifting metaphors</h4><p>Think of it this way: every relationship in your life is actively decaying. If you don&#8217;t make an effort to spend time with your wife or you kids or your friends, they drift away. Everyone you stop calling drifts away faster. You are losing everyone that you don&#8217;t fight not to lose. Would you call this relationship <em><strong>debt</strong></em>?</p><p>If you own a home, the house is decaying around you and trying to kill or bankrupt you. You need to spend money on simple things like new paint and cleaning, but also on large things like replacing plumbing, resealing your deck, and fixing the driveway where the tree roots have pushed it up. Is this <em><strong>debt</strong></em>?</p><p>Likewise, all computer systems are decaying, becoming more irrelevant and less functional as the world around them changes or what is required of them shifts, drifts, expands, or contracts. </p><p>This isn&#8217;t <em><strong>debt</strong></em>, its entropy.</p><p>Your fight is not with debt, it is with chaos. Just like you need to be making an effort towards the relationships that matter in your life and fixing things in your house, you need to constantly be making an effort to keep your systems working as conditions change. <em><strong>This should be part of your normal backlog, and not a separate thing.</strong></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/p/the-term-technical-debt-is-bad-and?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/p/the-term-technical-debt-is-bad-and?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h4>Technical Debt Leadership</h4><p>As technical leaders, we need to treat technical debt as a part of ongoing work, and not separate from it. By isolating it we bring a spotlight to something that is just a reality in our field, and a bit hard to explain to those slightly outside it. <em><strong>You need to constantly upgrade your infrastructure and architecture for the future, with a clear understanding of the present needs</strong></em>. That&#8217;s it, that is all there is. And this has better ways of being explained than &#8220;technical debt&#8221;. <br></p><p>Some examples:</p><ul><li><p>When you estimate building Version 2.0, you include changes to frameworks and infrastructure that are actively causing issues or will in the near future.</p></li><li><p>We need to use this new framework because its hard to make changes now, and we need to be able to derisk the components breaking each other, and we need to ship faster. </p></li><li><p>As part of a new project to add features, we need to upgrade our infrastructure to handle the 30% estimated new customers that this feature will bring in, without increasing hosting costs. </p></li><li><p>When we fix this bug, we should work on the design to ferret out the assumption that caused this bug, not just fix this instance.</p></li></ul><p>And when you need big things (like a weekend away with your family or a new central air conditional unit) they should be tied to business goals not treated as a separate technical debt project. </p><p>Sometimes you need to express this as an <em>objectives that are always true. </em>The justification of these changes is not always new-new functionality, its just keeping on as you are now:</p><ul><li><p><em><strong>Have a happy marriage</strong></em>: I&#8217;d like to continue to be married, so let&#8217;s spend some more time together.</p></li><li><p><em><strong>Live in a safe home</strong></em>: I&#8217;d like to sit at the dining room table and not have rain get on me this winter, so let&#8217;s fix the roof now.</p></li><li><p><em><strong>Have a system that can be changed</strong></em>: Changing the system for one new business rule should not risk breaking other parts of the system.</p></li><li><p><em><strong>Having a system that customers can depend on</strong></em>: If our reliability decreases another 10% we will lose customers and reputation.</p></li></ul><p>You aren&#8217;t paying down a debt, you did not take on debt. You built things the best you could with what you knew and could do then, and now you need to improve the system with what you know now, to support your business goals. That&#8217;s it.</p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Or are <em><strong>demanded</strong></em> by customers, much much too late.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>These are not imaginary examples</p></div></div>]]></content:encoded></item><item><title><![CDATA[How to apply best practices]]></title><description><![CDATA[What works at Google should work in your garage, probably]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-apply-best-practices</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-apply-best-practices</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 30 Jun 2025 12:09:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fkxg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We grow up imitating those that are bigger than us. We want to be a grown-up, so we walked and talked like our parents. If we are raised by people who sing, we probably sing. If we are raised by wolves, we probably bark and bite. </p><p>You might think that we outgrow biting, but it is still in us and can be manipulated.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This is called the &#8220;aspirational model&#8221; and is the foundation of a lot of advertising. Remember where it says in the bible: <em>I wish I was a little bit taller, a baller, I wish I had a girl who looked good I would call her<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></em></p><p>We <em><strong>aspire</strong></em> to be better: <em>to direct one's hopes or ambitions towards achieving something. </em>Advertisers tap into this when they show us commercials of people who look like professional athletes taking weight loss medicine or people who look like bicycles riding Pelotons, and the implicit message is &#8220;if you buy this your life can be like mine is&#8221;. Every car commercial says: if you drive <strong>this car</strong>, then you will park it in an impressive house full of all your dreams come true with fridges with eggnog in June and pantries stocked with all the types of Skittles, and video game consoles with all the versions of Megaman<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> which you can play when you get tired of playing basketball in a full indoor gym with a stereo system playing Outkast 24/7.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fkxg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fkxg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fkxg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fkxg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fkxg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fkxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2254259,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/158804063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fkxg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fkxg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fkxg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fkxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abffabd-a68f-43a2-8fa9-4f0f567b7e79_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No car commercial shows regular people driving them, with creaky knees and large heads straining to get out after parking at an Applebee&#8217;s on all-you-can-eat-ribs-night.</p><p>Something this low-level is hard to not carry around with you, so it is effective in getting you to jump at work as well. But at work you might look up to different people. You might want to do what some tech influencer does, or someone that just gave a talk at that tech conference that work sent you to last year. And your company might be made up of people who wished that they worked at Google. If they worked at Google, then they could tell their mom and dad that they work at Google, and then they could tell their friends that their offspring works at Google and somehow things would be OK with you, on the inside.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jgur!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jgur!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 424w, https://substackcdn.com/image/fetch/$s_!jgur!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 848w, https://substackcdn.com/image/fetch/$s_!jgur!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 1272w, https://substackcdn.com/image/fetch/$s_!jgur!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jgur!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png" width="631" height="218" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:218,&quot;width&quot;:631,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190455,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/158804063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jgur!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 424w, https://substackcdn.com/image/fetch/$s_!jgur!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 848w, https://substackcdn.com/image/fetch/$s_!jgur!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 1272w, https://substackcdn.com/image/fetch/$s_!jgur!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c58f4e-1e56-4719-98ad-991a4934b1d6_631x218.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">Torso of a famous tech influencer. Following his advice leads to spending $10,000 a year on laptops.</figcaption></figure></div><h4>Best Practices</h4><p>So anyway, this is what best practices are, at their worst. They are a series of commercials by people to try to get you to do the Right Thing, in a way in which they profit. At best, they are a series of helpful tips from craftsmen and craftswomen<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> that help you learn your chosen profession.</p><p>Speaking of craft, sometimes craftspeople like to use their own tools, and they like to pull the right tool for the job out. This doesn&#8217;t apply to software. For example, you might have heard about Kubernetes, which is a very strong name for a system that coordinates large groups of machines to do what you want them to do. Think of it as a conductor of an army of paper shredders. </p><p>You might think - man you would need to be a really big company to need a way to manage a lot of machines that shred paper. This is wrong. Its a best practice. I mean you probably don&#8217;t need a murdered-out gun metal black BMW M3 to drive to your ex-girlfriends&#8217;s house, but don&#8217;t you sort of want to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sAq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sAq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 424w, https://substackcdn.com/image/fetch/$s_!8sAq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 848w, https://substackcdn.com/image/fetch/$s_!8sAq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 1272w, https://substackcdn.com/image/fetch/$s_!8sAq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png" width="891" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:891,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:674439,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/158804063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8sAq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 424w, https://substackcdn.com/image/fetch/$s_!8sAq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 848w, https://substackcdn.com/image/fetch/$s_!8sAq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 1272w, https://substackcdn.com/image/fetch/$s_!8sAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49898dd1-2b1b-4179-b4f6-8be8bad3ea3a_891x574.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This trunk can hold a lot of Skittles.</figcaption></figure></div><p>Kubernetes is actually right for everyone, because it is the <a href="https://badsoftwareadvice.substack.com/p/how-to-get-into-developer-heaven?">right way to do things</a>, from the beginning. If you deploy it at your startup, you will be cool, and you can tell your mom and dad (before the startup goes out of business) that you might not be working at Google, but you are doing what they do by <a href="https://cloud.google.com/kubernetes-engine">deploying 65,000 clusters at scale using AI</a>. Sure, the clusters are basically drones that drop money into paper shredders, but it is a best practice.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This might not be the translation you have, does yours say Skee-Lo on the front</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Substitute what you care about here, these are made up examples don&#8217;t pay attention to them and instead look at <a href="https://en.wikipedia.org/wiki/List_of_Skittles_products">my most visited bookmark</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>and <a href="https://en.wikipedia.org/wiki/Kraftwerk">Kraftwerk</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Bad Software Advice: Three Interesting Links #7]]></title><description><![CDATA[WARNING: This edition contains: Artificial Intelligence Hype, punctuation]]></description><link>https://badsoftwareadvice.substack.com/p/bad-software-advice-three-interesting-e65</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/bad-software-advice-three-interesting-e65</guid><pubDate>Mon, 09 Jun 2025 14:42:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c4G3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c4G3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c4G3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c4G3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg" width="673" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:673,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67889,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c4G3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Interesting Links</h4><p>I have been trying to study AI along with four other things, so today&#8217;s links are focused on AI:</p><p><a href="https://addyo.substack.com/p/the-prompt-engineering-playbook-for">The Prompt Engineering Playbook for Programmers</a> - coming from <a href="https://addyosmani.com/">Addy</a>, this is something to pay attention to even more closely. It matches my experience using Claude on a recent project.</p><p><a href="https://fly.io/blog/youre-all-nuts/">My AI Skeptic Friends Are All Nuts</a> - a nice shot, chaser with the last link.</p><p><a href="https://kvlly.com/">Kelly Vaughn</a>, a worthwhile person to follow in general, has started working at Zapier, and posted their AI competency matrix:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wZlw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wZlw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wZlw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wZlw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wZlw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wZlw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg" width="1456" height="965" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:965,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315515,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153840006?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wZlw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wZlw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wZlw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wZlw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02743d99-a3be-4413-816a-731c29fe9324_2048x1358.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Also: Apple&#8217;s widely-discussed and infrequently read recent paper: <a href="https://machinelearning.apple.com/research/illusion-of-thinking">The Illusion of Thinking</a></p><h3>Misc</h3><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:161177330,&quot;url&quot;:&quot;https://betterthanrandom.substack.com/p/if-you-are-useful-it-doesnt-mean&quot;,&quot;publication_id&quot;:3532886,&quot;embedding_publication_id&quot;:null,&quot;publication_name&quot;:&quot;Better than Random&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa519b85d-e63a-42af-aa06-9d5fef01d612_1200x1200.jpeg&quot;,&quot;title&quot;:&quot;If you are useful, it doesn&#8217;t mean you are valued&quot;,&quot;truncated_body_text&quot;:&quot;As you progress in your career, understanding the difference between being useful and being valued is very important. At first glance, they might look similar because the signals you get are more or less the same: a promotion, a higher than expected bonus, a special stock award. This is why it&#8217;s important to dig deeper an&#8230;&quot;,&quot;date&quot;:&quot;2025-06-02T06:51:14.332Z&quot;,&quot;like_count&quot;:82,&quot;comment_count&quot;:8,&quot;bylines&quot;:[{&quot;id&quot;:300086031,&quot;name&quot;:&quot;Better than Random&quot;,&quot;handle&quot;:&quot;betterthanrandom&quot;,&quot;previous_name&quot;:&quot;Better Than Random&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a519b85d-e63a-42af-aa06-9d5fef01d612_1200x1200.jpeg&quot;,&quot;bio&quot;:&quot;Written by a seasoned data leader, focused on data, analytics, AI/ML and engineering, I share practical strategies and lessons from the trenches to help you build systems and teams that outperform chance.&quot;,&quot;profile_set_up_at&quot;:&quot;2024-12-15T16:02:12.865Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-01-19T17:19:35.391Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:3601627,&quot;user_id&quot;:300086031,&quot;publication_id&quot;:3532886,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:3532886,&quot;name&quot;:&quot;Better than Random&quot;,&quot;subdomain&quot;:&quot;betterthanrandom&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Written by a seasoned data leader, focused on data, analytics, AI/ML and engineering, I share practical strategies and lessons from the trenches to help you build systems and teams that outperform chance.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a519b85d-e63a-42af-aa06-9d5fef01d612_1200x1200.jpeg&quot;,&quot;author_id&quot;:300086031,&quot;primary_user_id&quot;:300086031,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2024-12-16T08:17:25.690Z&quot;,&quot;email_from_name&quot;:&quot;Better than Random&quot;,&quot;copyright&quot;:&quot;Better than Random&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://betterthanrandom.substack.com/p/if-you-are-useful-it-doesnt-mean?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!cGGD!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa519b85d-e63a-42af-aa06-9d5fef01d612_1200x1200.jpeg" loading="lazy"><span class="embedded-post-publication-name">Better than Random</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">If you are useful, it doesn&#8217;t mean you are valued</div></div><div class="embedded-post-body">As you progress in your career, understanding the difference between being useful and being valued is very important. At first glance, they might look similar because the signals you get are more or less the same: a promotion, a higher than expected bonus, a special stock award. This is why it&#8217;s important to dig deeper an&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 82 likes &#183; 8 comments &#183; Better than Random</div></a></div><h4>Unsolicited Book Review</h4><p><a href="https://amzn.to/45NGejH">Beautiful Code: Leading Programmers Explain How They Think </a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dvj1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dvj1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 424w, https://substackcdn.com/image/fetch/$s_!Dvj1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 848w, https://substackcdn.com/image/fetch/$s_!Dvj1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 1272w, https://substackcdn.com/image/fetch/$s_!Dvj1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dvj1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png" width="487" height="468" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:468,&quot;width&quot;:487,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:168772,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153840006?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dvj1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 424w, https://substackcdn.com/image/fetch/$s_!Dvj1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 848w, https://substackcdn.com/image/fetch/$s_!Dvj1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 1272w, https://substackcdn.com/image/fetch/$s_!Dvj1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b673cf7-1d65-45ef-ac34-3cc9b8b5d73a_487x468.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I started this book, not kidding, 15+ years ago (published in 2007). I would read a chapter, and then put it down and think about it. </p><p>It is a fantastic book, with each chapter written by a different author about a project they thought had some &#8220;beauty&#8221;:</p><ul><li><p>Discussion of the NASA dashboard uses for the Mars rover missions (J2EE)</p></li><li><p>MapReduce</p></li><li><p>NumPy&#8217;s C implementation</p></li><li><p>JUnit&#8217;s design choices</p></li><li><p>BioPerl (!), and gene sorting</p></li><li><p>Different approaches to writing an XML verifier</p></li><li><p>Python&#8217;s dictionary implementation in C</p></li><li><p>A long discussion about code that was beatiful because it was NOT written</p></li></ul><p>My notes are too extensive to give a good summary, but here are a few:</p><ul><li><p>Is all cool software in my early career just the result of someone being <em><strong>really good with C</strong></em>? (discussion of NumPy C implementation, Python dictionary, 4+ other chapters)</p></li><li><p>NASA on their large J2EE CRM implementation for the Mars rover mission: <em>&#8220;In any large application, the key to success is integration, not coding&#8221;</em></p></li><li><p><em>&#8220;There is no permanent place in the world for ugly mathematics&#8221;</em></p></li><li><p><em>&#8220;As software engineers, we are responsible for our own stress tests. Those that don&#8217;t believe this - those have some patrician notion that writing such tests is too coarse for the delicate hands of a Gentleman Engineer - will deliver chronically broken software.&#8221;</em></p></li><li><p><em>&#8220;Unfortunately, interactive debuggers as they stand do not support the scientific method. To be sure, debuggers are great tools to poke around and investigate code and its results at will. This is a good thing - but only for skilled programmers who know how to use debuggers systematically. I&#8217;d rather see programmers trained in systematic debugging methods than in fancy debugging tools.&#8221;</em></p></li></ul><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Bad Software Advice&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Bad Software Advice</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to write (and read) a bug report]]></title><description><![CDATA[All you need to know is that there is a problem, my work here is done]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-write-and-read-a-bug-report</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-write-and-read-a-bug-report</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Fri, 23 May 2025 15:17:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wEgQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What is a bug?</p><p>A bug is when somebody who is paying money for your software, or not paying money for your software<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, uses your software and then: </p><p><code>(what they expect to happen) != (what actually happens)</code></p><p>There are a lot of different scenarios based on the following general role archetypes:</p><ol><li><p><strong>The Customer</strong>: actual users of the software, the people paying them, the people paying for the software, the people married to these people, people who might use the software in the future, people who keep promising you they will use the software, that the check is in the mail, et al.</p></li><li><p><strong>The Product Manager</strong>: the product owner, product manager, project manager, subject matter expert, support staff, or any other non-software-building entity that talks to customers or makes decisions on what you don&#8217;t work on.</p></li><li><p><strong>The Developer</strong>: technical staff in charge of building and keeping the software running, typically Product Development, or Application Development, which includes Quality Assurance.</p></li></ol><p>Different combinations of agreement between these three roles create confusion. A bug report is meant to solve this confusion.</p><p>Sometimes, the Customer and Product Manager agree on the bug, but the developer doesn&#8217;t:</p><ul><li><p><em><strong>misunderstanding </strong></em>or<em><strong> missed requirement</strong></em>, the developer did not know that the large boat we just built is expected to have planes land on it. The customer (General McStuffins) seems upset that this requirement was missed, and that this misunderstanding led to a poor beta test landing.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wEgQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wEgQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wEgQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wEgQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wEgQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wEgQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3169044,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153805623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wEgQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wEgQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wEgQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wEgQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d0fdfe-ceab-4a61-ace5-ca984fd3cbe9_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This bird acts like a cat, BUG, MUST-FIX</figcaption></figure></div><p>Sometimes, only the Customer believes there is a problem:</p><ul><li><p>It is a <em><strong>major missed requirement</strong></em>, in which the customer expects something because all other competing software has it, but yours does not. The large boat should have large guns, all the other navy aircraft carriers have large guns, its so obvious that they are needed.</p></li><li><p>It is a <em><strong>misuse</strong></em> of the software, a <em><strong>training issue</strong></em>, in which the customer puts a piece of bologna into the CD-ROM drive and then files a bug report. </p></li><li><p>It is a mistake by the customer in which they tells you that something happened that didn&#8217;t. Or the developers says &#8220;that can&#8217;t happen&#8221;. This is referred to as <em><strong>denial of reality </strong></em>or <em><strong>gaslighting</strong></em>.</p></li></ul><p>Sometimes, only the Developer believes there is a problem:</p><ul><li><p>It is <em><strong>technical debt</strong></em>, which is when the developer thinks it is a problem, but the customer and product manager don&#8217;t agree because they don&#8217;t know what you are even talking about. </p></li></ul><p>The Product Manager very rarely has a situation in which neither the Developer nor the Customer agrees with them. If this happens, the manager is no longer a manager but a visionary (or very wrong).</p><p>If Customer, Product Manager, and Developer all agree:</p><ul><li><p>There is a <em><strong>fault</strong></em> with the software, meaning that the developer agrees that it shouldn&#8217;t be doing that. </p><ul><li><p>Each fault leads to multiple failures. Like when you let your cat drive your car: each mailbox that they hit is a <em><strong>failure</strong></em>, born from the <em><strong>fault</strong></em> in letting them drive.</p></li></ul></li></ul><p>Sometimes, all parties disagree on what is happening. A customer receives an error that the product manager and developer have never seen and cannot resolve in the system. This is called <em><strong>failed to reproduce</strong></em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4wxh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4wxh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4wxh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4wxh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4wxh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4wxh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1013122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153805623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4wxh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4wxh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4wxh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4wxh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80477f86-4a8d-45db-bc4c-a018fd7cd19c_4928x3280.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This dog acts like a cat, BUG, MUST_FIX.</figcaption></figure></div><h4>How Reality and Truth Work</h4><p>Here is a table<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> representing these realities:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vjc_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vjc_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 424w, https://substackcdn.com/image/fetch/$s_!Vjc_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 848w, https://substackcdn.com/image/fetch/$s_!Vjc_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 1272w, https://substackcdn.com/image/fetch/$s_!Vjc_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vjc_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png" width="663" height="279" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:279,&quot;width&quot;:663,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14709,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vjc_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 424w, https://substackcdn.com/image/fetch/$s_!Vjc_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 848w, https://substackcdn.com/image/fetch/$s_!Vjc_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 1272w, https://substackcdn.com/image/fetch/$s_!Vjc_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca2e1af-1aff-44ca-bf09-2f4193bf16de_663x279.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you can see, the people paying you tend to define your reality, unless you actively prove them wrong. Customer-facing folks usually avoid telling customers they are wrong, or soften it <em>&#8220;well, bologna is round, so I can see where you are coming from - did it heat it up at all after you put it in the drive?&#8221;</em>. </p><p><code>Customers =&gt; Product =&gt; Development</code></p><p>Decisions flow from left to right, and reality is defined left to right. Sometimes, truth and science flow from right to left, but you must manage it carefully.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qBO5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qBO5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qBO5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qBO5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qBO5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qBO5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg" width="1456" height="968" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:968,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1173812,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/153805623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qBO5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qBO5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qBO5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qBO5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F752ab670-7e10-4a4d-a8d0-0e618f4f59cd_3008x2000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This fishy bear thing acts like a cat, BUG, MUST_FIX</figcaption></figure></div><h4>What a bug report actually is</h4><p>I say all of this to explain what a bug report is. A bug report is meant to bring all parties into agreement. <em><strong>It is a written record of a shared reality.</strong></em> </p><p>Its primary function is to give enough information to a developer so that they agree on the problem's existence, urgency, and exact details. A good bug report prevents&nbsp;<em><strong>anyone</strong></em>&nbsp;from denying or dismissing the problem and makes it easier to fix it.</p><h4>Primary sections of a bug report</h4><p><strong>Version Affected</strong>: software doesn&#8217;t have versions anymore, ya heard? Well, there are only two versions: <em>Not Shipped</em> and <em>In Production. </em>Make sure you don&#8217;t put anything stupid like &#8220;Current&#8221; in the bug report - remember this bug report might outlive your children.</p><p><strong>Evidence</strong>: Screenshots, spreadsheets, a transcript of whispered conversations at a bar during a user conference, recordings of emotional customers proving the issue exists, etc.</p><p><strong>Comments</strong>: This is where people put their fan fiction, including proof that they are human and can do simple pattern recognition:</p><ul><li><p><em>&#8220;This is the same issue from last Fall&#8221;</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p></li><li><p><em>&#8220;Could this have anything to do with year end numbers?&#8221;</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p></li></ul><p><strong>Emotional Commentary:</strong> This is where customer-facing people need to declare hedges and prove that they are working hard on the issue and <a href="https://badsoftwareadvice.substack.com/p/how-to-determine-the-urgency-of-a">understand its urgency</a>:</p><ul><li><p><em>this is IMPORTANT, need to fix PERMANENTLY and then determine root cause ASAP</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p></li><li><p><em>We need a software system free of issues, we talked about this last fall - MUST-FIX</em></p></li><li><p><em>There must be a big difference in this issue and what we just tested, because I tested all scenarios that I think will provide cover for my career, and they are all attached with checkmarks next to them this is not on me please don&#8217;t let this be on me</em></p></li></ul><p><strong>Reproduction steps:</strong> this is when exact steps to trigger the problem are detailed. This is the most helpful part of the bug report for a developer, and having it greatly increases the chance of a fix happening this year. Think of this as steps to create new evidence. This is rarely filled out, unless the bug report is created by a QA staff member. Most of the time it is filled out with hundreds of words of nonsense that boil down to: <em>&#8220;I launch system (screenshot of me launching), and then the problem is so obvious I can&#8217;t explain it omg please fix ltr bai&#8221;</em></p><h4>Reading a bug report</h4><p>The person who gets assigned the bug is expected to figure out what all the previous programmers overlooked or didn&#8217;t see, understand what foreign code is doing, and then fix it, for all time, immediately, dammit. The person who writes the bug report must click some buttons and then hit save.</p><p>The quality of the software your organization produces is a function of a few key behaviors, and one of them is high-quality, detailed bug reporting. The average bug report is filed by someone with a cursory examination of an issue who thinks it wise to get it into the hands of a developer as fast as possible, like a hot potato.</p><p>Ideally, bug reports detail the issue (what looks wrong, what it should look like) and include steps to reproduce it. This only happens sometimes, like when a stopped clock is right twice a day.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>As everyone who has ever maintained an open source project can agree with - if people use your software, they think it has an implied warranty.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Also, the title of your sex tape.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>The Venn diagram of the situations I&#8217;m trying to describe is vile, and I will not publish it.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Not it isn&#8217;t, it just has a similar shape. Is it always the same issue when a boat sinks? It goes to the bottom of the water each time. <em>&#8220;Is this the sinking issue? I thought we fixed that after the Titanic&#8221;</em></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>No, absolutely not, you idiot. Oh, wait, actually, let me check.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Good advice honestly, because I was going to determine root cause super-slowly, and then and only then maybe fix it, but temporarily.</p></div></div>]]></content:encoded></item><item><title><![CDATA[How to control your employees]]></title><description><![CDATA[When you hire a carpenter, make them use your tools]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-control-your-employees</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-control-your-employees</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Fri, 25 Apr 2025 15:28:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IrF_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s look at two images:</p><p><strong>Image 1:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IrF_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IrF_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IrF_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IrF_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IrF_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IrF_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg" width="629" height="420" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/febb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:420,&quot;width&quot;:629,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/158803921?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IrF_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IrF_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IrF_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IrF_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebb2ddb-fd0f-464d-bbde-bfa4b98dcb43_629x420.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Image 2:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I-RH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I-RH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I-RH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I-RH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I-RH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I-RH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg" width="700" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135479,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/158803921?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I-RH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I-RH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I-RH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I-RH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4eaffba-07d1-458f-a47e-3f5c6cfea307_700x394.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Which image shows a good employee? That&#8217;s right, its Image 2, <em><strong>because the employee is wearing a suit within their designated work area</strong></em>.</p><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>There are other problems with Image 1:</p><ul><li><p>The employee is using personal headphones, not company branded audio gear assigned by their local IT support representative</p></li><li><p>The employee is working from their home - not an approved work location</p></li><li><p>The resource is not displaying any of our corporate values<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> in their cord management, reflecting poorly on our department</p></li><li><p>The things&#8217;s workstation is not locked </p></li><li><p>The thing is sleeping</p></li></ul><p></p><h4>How to tell if your employees are working</h4><p>Many new managers struggle with determining if their employees are working hard, and they are insecure about it. The way to battle insecurity is to get ahead of it, go on the offensive - assert dominance. Like a stupid, dumb dog that gets scared when there are fireworks - they don&#8217;t understand something, get scared, and trash your house. Fireworks are your employees deep technical understanding of software development, you are a dog, and the house is your company&#8217;s culture. </p><p>Now you might be thinking that this is a silly comparison to make. Fine, let&#8217;s look at some additional reasons companies assert control over their employees.</p><h4>1: They think they are supposed to, based on their training</h4><p>Many software managers can draw direct lessons from their time running the afternoon shift at a Chick-fil-A<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, while others were individual contributors at a software company. You can tell the difference quite clearly in how they think that employees are motivated and rewarded. </p><p>CFA manager:</p><ul><li><p>Free chicken: you motivate employees with childish, delicious rewards.</p></li><li><p>Cleaning toilets: you punish employees if they make a mistake.</p></li></ul><p>Software manager:</p><ul><li><p>Reward: grant well-used autonomy with more autonomy.</p></li><li><p>Punishment: discourage bad behavior through reputation and temporary reduction in autonomy.</p></li></ul><h4>2: They think they are supposed to, based on their heroes</h4><p>Many think that the best leadership is military leadership.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> The goals of your cat mom blogging platform is to make money and delight users, not defend a position, but many draw direct comparisons and use what is called command-and-control leadership styles, which work great when you want to get someone to do something that their instincts say is dangerous. It doesn't work as well if you want people to decide what to do and then work together as a group to do it. The military is the best leadership style for their needs; your needs are different.</p><h4>3. Managing any other way is much harder</h4><p>Coordinating work amongst knowledge workers and giving them space to figure stuff out is harder than controlling them. Trying to guide them to make the right decision, get them unstuck on a problem, or offer novel solutions requires you to understand the work very well and have additional people skills. Being a software development manager is closer to being a manager of craftsmen than a manager of manual labor. And this is just simply harder. </p><h4>All that matters it output</h4><p>You hire a carpenter to work on your house, then make them work how you want them to work, with your tools, on your schedule, and using your methodology. And you have never been a carpenter. Or you are a former carpenter, give them space, and offer up a tool if you see them getting stuck.</p><p>Which way of working ends up with the best result?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Suggested honest company values: <code>{ Order, Greed, Hierarchy, Consistency }</code></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>For those not familiar, Chick-fil-a is like if Colonel Sanders joined a (mostly harmless) cult.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>More often than not, these people have not been in the military. <br><br>I think the military contains strong leaders and great weapons. USA, USA, USA</p></div></div>]]></content:encoded></item><item><title><![CDATA[How to be a (anti) hero]]></title><description><![CDATA[In the shadow of every strength lies a weakness.]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-be-a-anti-hero</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-be-a-anti-hero</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Fri, 18 Apr 2025 14:01:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tsYf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s play a game. Warning: it is not as fun as Ghost Recon :: Wildlands. </p><p>I want you to picture the following:</p><p><em><strong>office fire marshall </strong></em></p><p>I&#8217;ll create some space for you to not see something:</p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p>You likely thought of someone like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PsFN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PsFN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PsFN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PsFN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PsFN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PsFN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg" width="259" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:259,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35106,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/159982905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PsFN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PsFN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PsFN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PsFN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54cf2219-733c-447a-9bf9-50b638ccd3ca_259x385.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you aren&#8217;t familiar with this character, their properties are:</p><ul><li><p>Good at planning and organization</p></li><li><p>Takes everything very seriously; things must be done the <a href="https://badsoftwareadvice.substack.com/p/how-to-get-into-developer-heaven">Right Way</a></p></li><li><p>Enjoys having power and uses it to full effect to make sure everyone is following The Rules</p></li><li><p><em><a href="https://en.wikipedia.org/wiki/Angela_Martin">she says that she "enjoys being judged" and that she participated in beauty pageants as a child</a></em></p></li></ul><p>Fire marshalls are good people that work hard to prevent or react to something that is <em><strong>unlikely to happen</strong></em>, like a fire at your office, or a security incident, or a fault in a computer program setting a bunch of money and careers on fire.</p><p>Now I&#8217;d like you to imagine this:</p><p><em><strong>fire fighter</strong></em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><p><em>tick tock</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tsYf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tsYf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tsYf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tsYf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tsYf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tsYf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg" width="1456" height="2184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7616740,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/159982905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tsYf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tsYf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tsYf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tsYf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308fc8de-1232-472f-bed3-19fafd217f1d_4640x6960.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This person is not actively fighting this fire.</figcaption></figure></div><p>You likely thought of something like this:</p><ul><li><p>Hero</p></li><li><p>Cool outfit</p></li><li><p>Mysterious, can&#8217;t see face, might carry an axe</p></li><li><p>Reacts to something that <em><strong>has happened </strong></em>when others aren&#8217;t sure what to do</p></li></ul><h4>The Truth</h4><p>Fire marshals (and inspectors) are made fun of behind their backs, and firefighters get&nbsp;<a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&amp;ab_channel=RickAstley">sexy calendars</a>. If you prevent problems from happening or make everyone 10% less likely to create a problem, you are not rewarded like the people who clean up the mess. This is because management acts on incomplete information; they work from afar and cannot hear whispers.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Only people deeply involved in the day-to-day work know about problems that were prevented, avoided, or solved while they were small.</p><p>This is the world you live in, and you need to get used to it.</p><h3>The Shape of Teams</h3><p>But on software teams, the team that inspects and builds the house is also the team that fixes it when there is a problem. This would be like a fire inspector, who also shows up if there is a fire. Overall, this is A Good Thing and should lead to fewer fires, as they learn from their oversights and mistakes.</p><p>Software teams: </p><p><strong>BUILD</strong>: write features and bugs.</p><p><strong>TEST</strong>: find bugs, make sure features work.</p><p><strong>SUPPORT</strong>: fix faults that make it to production, and recover from failures<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. </p><p>Different teams have different strengths and weaknesses across these three things.  Let&#8217;s look at three different teams:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rfic!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rfic!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 424w, https://substackcdn.com/image/fetch/$s_!rfic!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 848w, https://substackcdn.com/image/fetch/$s_!rfic!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 1272w, https://substackcdn.com/image/fetch/$s_!rfic!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rfic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png" width="593" height="339" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:339,&quot;width&quot;:593,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11185,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/159982905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rfic!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 424w, https://substackcdn.com/image/fetch/$s_!rfic!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 848w, https://substackcdn.com/image/fetch/$s_!rfic!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 1272w, https://substackcdn.com/image/fetch/$s_!rfic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d386ae-4e13-45d4-8d66-b6b6917471c8_593x339.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Team 1</strong>: Ships a lot of features, weak testing, lots of support</p><p><strong>Team 2</strong>: Ships less, and tests really well, little support</p><p><strong>Team 3</strong>: Ships almost nothing, vigorous testing prevents most errors, but support is still a nightmare</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/p/how-to-be-a-anti-hero?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Bad Software Advice! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/p/how-to-be-a-anti-hero?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/p/how-to-be-a-anti-hero?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h3>Anti-hero</h3><p>Team 1 has an <a href="https://en.wikipedia.org/wiki/Antihero">anti-hero</a>. A flawed hero. A firefighter that maybe starts some fires by their carelessness and their confidence in being able to fix things. </p><p>If you have someone on the team who is very good at fixing problems (or more than one), you can have a lot of fires. Like, why are there so many fires. The next team over doesn&#8217;t have this many fires. They are terrible fire marshalls, but great firefighters. People play to their strengths subconsciously, <a href="https://terriblesoftware.org/2025/03/31/your-strengths-are-your-weaknesses/">even creating the situations in which they can shine</a>, without thinking about it.</p><p>This person can be very dangerous to certain teams, and absolutely essential on certain teams. Where you place such people matters a great deal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rheV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rheV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 424w, https://substackcdn.com/image/fetch/$s_!rheV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 848w, https://substackcdn.com/image/fetch/$s_!rheV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 1272w, https://substackcdn.com/image/fetch/$s_!rheV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rheV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png" width="631" height="633" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/975d2585-aa50-4471-a763-0ac2194dce63_631x633.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:633,&quot;width&quot;:631,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:679559,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/159982905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rheV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 424w, https://substackcdn.com/image/fetch/$s_!rheV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 848w, https://substackcdn.com/image/fetch/$s_!rheV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 1272w, https://substackcdn.com/image/fetch/$s_!rheV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F975d2585-aa50-4471-a763-0ac2194dce63_631x633.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Extra Employees</h3><p>You might be thinking, &#8220;but David, what about systems with a lot of faults that require greater support?&#8221; or &#8220;when is lunch?&#8221; or &#8220;Team 3 doesn&#8217;t make any sense, why is there so much support?&#8221;. </p><p>In my example from above we assumed that all teams had some baseline that they started with that was equal. But teams support different things, and the team needs to match the task. Existing code has a huge impact here - building a Version 1 of something is very different than building Version 38.</p><p>Legacy systems have grumpy employees that you cannot fire. They are called The Existing Code. They affect the shape of your team and how you should design your teams.</p><p>Let&#8217;s use some <a href="https://badsoftwareadvice.substack.com/p/how-to-use-bad-metaphors-to-explain">terrible metaphors</a>.</p><ul><li><p>Your existing code is a large nearby planet that provides gravity, affecting all your actions. </p></li><li><p>It is geography, changing where you can live because of floodplains. </p></li><li><p>It is a starting point that is the 4th bar on our graph:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E_s-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E_s-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 424w, https://substackcdn.com/image/fetch/$s_!E_s-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 848w, https://substackcdn.com/image/fetch/$s_!E_s-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 1272w, https://substackcdn.com/image/fetch/$s_!E_s-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E_s-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png" width="583" height="347" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:347,&quot;width&quot;:583,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13336,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/159982905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E_s-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 424w, https://substackcdn.com/image/fetch/$s_!E_s-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 848w, https://substackcdn.com/image/fetch/$s_!E_s-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 1272w, https://substackcdn.com/image/fetch/$s_!E_s-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55c7905e-a7d7-4d91-8348-fa69fa1a3b69_583x347.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Not that we have made the code quality poor on all three teams, which team will fail? </p><ul><li><p>Team 3 has terrible starting code quality, and has a lot of support already, and weak testing. What should it focus on? Improving testing and support to make sure the fixes are <a href="https://badsoftwareadvice.substack.com/p/how-to-be-really-bad-at-fixing-problems">real fixes</a>. </p></li><li><p>Team 2 is more mature and can ship features, because they have strong testing.</p></li><li><p>Team 1 is in a death spiral - they have bad code, ship a lot, and have poor testing. Their support could double overnight with a bad release. Uh-oh. Only one thing can stop a death spiral. Time for a hero.</p></li></ul><h3>Building Teams</h3><p>Personal opinions on how these interact vary, and it is a fascinating thing to stare at and think about. </p><ul><li><p>What do you need to increase if you move from senior developers to junior ones? More testing, or more senior support?</p></li><li><p>What are the relative sizes of these things? If initial code is 10 million lines, and you have two developers supporting it, what do you need more of to keep two developers and not have to hire more people?</p></li><li><p>At what rate can you improve these things? Hiring stronger developers: how quickly does this make an impact?</p></li><li><p>Which of these items requires the most, highest-quality teamwork?</p></li><li><p>If you have a pre-existing, high-quality team, which situation do you drop them into?</p></li><li><p>What is the effect of making the goal to reduce support, with no other changes - more testing, less features? More experienced staff?</p></li><li><p>What happens when you cover up weak QA with strong development and automated testing?</p></li><li><p>How do good documentation and training help?</p></li><li><p>If you have to be very weak at one, which one would you choose?</p></li><li><p>Great taste, less filling?</p></li></ul><p>One thing you can do immediately in almost any team scenario: make sure to have a balance of fire marshalls (that are rewarded) and firefighters (that are also rewarded). Perhaps they rotate jobs; you need a balance of both. If you are just starting a company, most people are going to have the firefighter personality and be weak planners. But the firefighters need to establish the first broad rules: no grilling on wooden decks, no smoking at gas station pumps, and no flamethrowers on hayrides, etc.</p><p>Established companies are going to have more existing control, process, and organization. That is fire inspector/fire marshall territory. Moving from one to the other requires rotating people around so that firefighters don&#8217;t work on the systems that become stable thanks to their help.</p><p>Take an honest look at what system you are dealing with, and what plans you have for it. Do you need to save this building? Do you need your best builders/testers/fixers here? </p><p>There is much more to building a team than deciding who doesn&#8217;t like sitting next to each other.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Being a great manager is about establishing a great intelligence-gathering system; that is a topic for another post. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I&#8217;m using <a href="https://en.wikipedia.org/wiki/Gerald_Weinberg">Gerald M. Weinberg&#8217;s</a> definitions here: </p><p><strong>fault</strong> is a problem in the software (~bug). </p><p><strong>failure</strong> is a problem caused by this fault. <br><br>Normally (<code>number of failures) &gt; (number of faults)</code>.  Support recovers from failures, and sometimes also fixes faults.</p><p>A fault would be a bug that fails to release some memory, eventually causing a memory leak. Failures occur each time the system stops working because it runs out of memory. Support sometimes means the person who restarts the system four times a day, and sometimes it means the person who fixes the memory leak. Sometimes the person who wrote the memory leak is the same person who didn&#8217;t test it well enough, restarts the system 4x a day until they fix it, then doesn&#8217;t create a test after it&#8217;s shipped.</p><p></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[How to handle complexity]]></title><description><![CDATA[But first, a confession]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-handle-complexity</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-handle-complexity</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 07 Apr 2025 12:04:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iQo_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s start with a confession. I didn&#8217;t love the way this post turned out:<br></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;bbffb7e7-8200-4b42-84c7-11345049bf06&quot;,&quot;caption&quot;:&quot;You have been tasked with shipping something important, which you originally built as a prototype after developing the idea yourself. It is now due in four weeks, when the company will announce it at&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to understand deadlines (as a developer)&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1731116,&quot;name&quot;:&quot;David Tate&quot;,&quot;bio&quot;:&quot;CTO, Developer, member of technical staff\n\n&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/dd0a2d17-2763-4d9f-a08c-e4610e2ce289_48x48.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-01-28T17:06:30.325Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://badsoftwareadvice.substack.com/p/how-to-understand-deadlines-as-a&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:153642688,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bad Software Advice&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03700c23-4e63-456c-8273-ba6ae8915e6f_500x500.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>All my posts are full of hand-waving and attempts at focusing on one thing without going down too many <em><strong>it-depends</strong></em> side streets, but this one did too much of it. The situation was contrived to show one possible outcome of miscommunication between Product and Engineering. I got a few emails that essentially said &#8220;this just sounds like bad product management&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>And it was <em>bad product management</em>, but it was also <em>bad engineering</em>. If you think hard enough, you&#8217;ll find most problems are a mix of both. It was a classic three-step dance of badness:</p><ol><li><p>Product management doesn&#8217;t share essential information with engineering.</p></li><li><p>Engineering thinks they know everything, doesn&#8217;t ask enough questions, and designs accordingly.</p></li><li><p>Both sides are left more entrenched in their views. i.e.</p><ol><li><p>&#8220;This is why I don&#8217;t tell engineering everything, they overdo it&#8221;</p></li><li><p>&#8220;Product is so dumb, they forgot to tell me the most important part&#8221;</p></li></ol></li></ol><p>The post focused on #2 and ignored #1, and for this reason I got a reaction from readers, (who are most #2). So let&#8217;s talk about how #1 and #2 combine, because I&#8217;d like to express my core theory about how complexity works across Product and Engineering. Let&#8217;s talk about #3.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iQo_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iQo_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iQo_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iQo_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iQo_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iQo_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg" width="1456" height="2184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3500171,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/160257108?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iQo_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iQo_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iQo_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iQo_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0d9ce15-e96c-4cf9-acd8-f61e15f5770c_3914x5871.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Complexity</h3><p>I went to college and spent most of my time trying to figure out what to declare as my major. I remember hours and hours of pouring over the course catalog looking for options that seemed interesting. I declared each of these majors (not in this order): English, Business, History, Math, Management Information Systems<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, Computer Science, Linguistics.</p><p>The classes I remember most fondly are the linguistics classes. They were in a older, prettier part of campus, and the professors seemed like they <em><strong>had already accomplished something</strong></em> and were mysterious, deep, and broadly wise.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>  They had either 1) really cool origin stories<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> 2) great facial hair or 3) weird clothing choices<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>. One of the lessons from one of those classes is that languages have a roughly consistent level of complexity. If verbs in Spanish are complex, with many edge cases, then there is simplicity elsewhere in the language. The average intelligence of human beings caps the level of complexity of a language.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/p/how-to-handle-complexity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/p/how-to-handle-complexity?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><h3>Complexity in Software</h3><p>There is also complexity in software, which is capped by how complex the domain, the build, and the organization are. What the software is supposed to do is the <strong>primary complexity</strong>. Tasked with &#8220;build a system to track what happens to a bank as interest rates increase&#8221;, the primary complexity is modeling the bank&#8217;s activity, figuring out how to report results, the math behind time value of money, etc. <strong>Secondary complexity</strong> arises within your solutions, like keeping React up to date if you decide to use this in your UI, the complexity of AWS, or your home-grown build tool that keeps breaking. </p><p><em><strong>A deep understanding of the primary complexity drives and minimizes the secondary complexity.</strong></em></p><p>Understanding how banks work helps you design your domain and data model in a way that represents what is needed without extra parts. Choosing Rust over Python, if driven by a real need for speed in the primary layer, reduces complexity over time in the secondary layer of complexity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p9lA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p9lA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p9lA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p9lA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p9lA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p9lA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1779762,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/160257108?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p9lA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p9lA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p9lA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p9lA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F449161ad-529e-46d7-8f2c-de895878281c_3264x2448.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Complexity in Software <em><strong>Teams</strong></em></h3><p>Your team structure also brings out additional complexity. </p><p>Communication is never perfect, so there are many partial solutions to separate and focus it. A larger software team will have a separation of Product (build the right product) and Engineering (build the product right)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>. Over time, the primary complexity will be handled by Product, and Engineering will handle the secondary complexity. The relationship between them is what you are both trying to manage. Ideally, you are both seeking to <em>minimize</em> overall complexity.</p><p><em><strong>Secondary complexity is driven by Product&#8217;s ability to understand and communicate the primary complexity.</strong></em><strong> </strong></p><p>If product stops talking to engineering, secondary complexity grows.</p><p>You can state this more simply: <em>Over the long-term,</em> <em>the less you tell the engineers, the more complicated the system they will build</em>.</p><p>If you reduce the amount of information that Product gives engineering, what happens? Secondary complexity rises exponentially&nbsp;<em><strong>over the long term</strong></em>. If you are just spoon-feeding them, then tell them your long-term plan. They react to it, and secondary complexity rises&nbsp;<em><strong>in the short term</strong></em>. </p><h3>Why Product doesn&#8217;t communicate everything</h3><p>This is actually a very common Product Management misstep, in my opinion. <em>I don&#8217;t need to tell the engineers things that are coming in the future because it will lead to a more complicated system, and those things might not happen.</em></p><p>Whatever your current project is, if you tell the engineers just about that project, the project is shorter. If you tell the engineers about your potential sales funnel, and that idea you had, and your in-pencil product roadmap, they might do a little bit more work here and there to abstract something away that they think might change, now that they know a bit more about the primary complexity. But your <em><strong>current</strong></em> project will take a little longer, so Product doesn&#8217;t do it. It&#8217;s classic short vs. long-term reward behavior. </p><h3>Why Developers Create Complexity</h3><p>And engineers love complexity; they stand at the fridge drinking it from the carton smiling, and so they are happy to build a more complex design for something that _might_ happen. They (we) can&#8217;t help it. It is fun. A new, simple system is more fun than an old, complicated one. A new, complex system is best. Developers like novel things; we work in an industry that grows new skin every 5 years; we have to like change as the baseline price of admission into the role. </p><p>We also don&#8217;t get to design many new systems and are thus looking for chances to do so. Getting a new requirement for something and fitting it neatly into the current design makes us feel unique and smart. Getting a new requirement and having it go against the grain of the current design makes us feel like we should have seen it coming, especially when we find out the company has been planning it for years and told us about it the same day they told us the deadline.</p><h3>Bad Products</h3><p>Product and Engineering keep dancing together, with Product telling Engineering 80% of what they should know&nbsp;and Engineering over-designing that 80% because they are starved for information and too eager to build&nbsp;<a href="https://badsoftwareadvice.substack.com/p/how-to-get-into-developer-heaven">the right way</a>. Thus, the product starts to drift towards more complexity until it is a bad product.</p><p>A bad product is one in which secondary complexity has taken over, and Product and Engineering are both constantly having to manage it. All the cards talk about are Angular updates, or how to fix the core component v2, and if you need to do it before v3 ships, and how to coordinate between teams since those two teams hate each other since their leads stopped dating. New features, or improvements that customers care about are small. Keeping the system from collapsing in on itself is just secondary complexity management.</p><p>This is commonly called <a href="https://badsoftwareadvice.substack.com/p/how-to-use-the-term-technical-debt">Technical Debt</a>, which is accurate only up to a point. Sometimes you can label it as other things like Technical Mistakes or Technical Navel-Gazing or Busy Work or Critical Infrastructure Work or Production Support.</p><h3>The Core Complexity</h3><p>If what the software needs to do is primary complexity, and how you build it is secondary complexity, then how your organization works, and how well it shares information and pushes in the same direction, is the core complexity. Startups focus on getting primary complexity figured out, and take out loans to get some sort of system up with secondary complexity that they can hopefully get a handle on later. Large companies are only worried about the complexity of coordination - the core complexity.</p><h3>Conclusion</h3><p>What to do about this? Work as a team to minimize complexity. Product: be honest about roadmaps. It is perfectly OK to say &#8220;we <em>might</em> do this&#8221; or &#8220;this roadmap will change, its just the current rough direction&#8221;. Engineering: talk to Product away from your keyboards. Listen to all the information before jumping to <a href="https://badsoftwareadvice.substack.com/p/how-to-solve-problems-too-early">a solution</a>. Think of yourselves as both wearing hard hats - you are both on-site working on the same software product, which should be the right product, built right.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>And zero emails that said &#8220;This just sounds like over-engineering&#8221;. I expected &gt; 0.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I still remember the one-sentence description of this major: &#8220;This major prepares students to be Chief Information Officers.&#8221; Even then, I was like,&nbsp;<em>&#8220;Sure</em>.&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>On the other side of campus, where I ended up majoring in computer science, the professors seemed to be working hard <em><strong>towards something</strong></em> and too busy for questions. The entire building smelled of sodium from Ramen cooked in the hallway microwave. There were passive-aggressive New Yorker cartoons on the professor&#8217;s doors.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>One of my linguistics professors told us he liked to participate in and run psychological experiments. Another was a local (male) theater actor who only played female roles. Another kept dropping details that seemed to indicate he studied in Mexico for four years because he got lost on a mission trip.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>On the other side of campus, the professors all seemed to be wearing something they looted from Kohls in an emergency a year ago, having spent the last year hand-washing it from the condensation on the car they were living in. Actually, I have no confirmation, but I think many of them lived in the engineering building. At least one did.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>This separation is so fundamental that we have a mental model of even a two-person startup as being a &#8220;tech person&#8221; and a &#8220;business/product person&#8221;, like Jobs and Woz et al.</p></div></div>]]></content:encoded></item><item><title><![CDATA[How to handle working software]]></title><description><![CDATA[Undocumented software that has been working is philosophically dangerous]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-handle-working-software</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-handle-working-software</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 24 Mar 2025 12:03:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZBgk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You came into work today pretty happy. You have just passed the two year mark working on this CMS for cat blogs, and you feel like you have a good handle on the current system. You answer more questions than you ask, and you feel that your job is secure. Boy have you learned a lot about cats, and about efficient distributed storage of photos of cats, and about how passionate cat blog owners are. Plus, your cat name suggest tool - where you upload a photo of your cat and it suggests a name based on a deep learning model that the company spent $600k training - has given you some reputation with upper management.</p><p>Life is good. You have a domain, you are in control of it, and you know its boundaries.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBgk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBgk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZBgk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZBgk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZBgk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBgk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg" width="1456" height="2184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3259357,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/147011831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZBgk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZBgk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZBgk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZBgk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0330be8-85bc-423b-a5ec-bf89be48362f_3989x5984.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So then its a bit of surprise when you open up JIRA and get your next support assignment: <code>Fix BI cat content export</code>. Odd, you haven't heard of that before in the last two years. You feel like you have heard of every single component of the system, as when you joined it seemed like the system had trouble with everything - slow blogs, inconsistently slow image loads, timeouts when saving long cat blog entries, cat blog reporting engines, insane cat data audits<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> etc. This cat content export sounds new. Everyone from the team before is either in jail or on another team and actively denying ever working on the Cat Owner Content Office Administrator (COCOA) application. </p><p>You search the wiki anyway and find nothing.</p><p>You do have the contact information for one of the older engineers that has moved into management and so you send her a nice little direct message asking what the content exporter is, and get an immediate reply:</p><ul><li><p>she isn't really sure</p></li><li><p>oh yes she sort of remembers building this</p></li><li><p>she thinks its a scheduled task on one of the servers</p></li><li><p>she sends you a search string to find in the code repository: <code>cc --help</code></p></li></ul><p>You do as she instructs you, pay via Venmo for the trouble, and begin your search. The code does in fact exist, and it has a <code>README.md</code> file that explains that it is a simple command line program <code>cc</code> that exports all cat content to a third party API. It has a backoff retry policy and when it fails it writes to a logfile and pages someone, otherwise it logs that it ran to the Windows application event log. It runs twice a day, and has been running without error everyday for as far as the log goes back.</p><p>Until today.</p><p>You start to draw some conclusions:</p><ul><li><p>This program has stopped working and must be fixed.</p></li><li><p>By you, today.</p></li><li><p>The urgency on the JIRA ticket is <em><strong>VISIT TO VET</strong></em>, the highest level of emergency. This is a <strong>critical</strong> component to the business; they are asking for every-30-minutes updates. </p></li><li><p>You have never heard of it, which means it hasn't broken in two years, and has been running successfully for even longer.</p></li><li><p>Actually, the person who trained you never heard of it, because it isn't in the old wiki, and they never mentioned it.</p></li><li><p>This means that it hasn't broken or needed changes in 5 years.</p></li><li><p>This means that it has survived:</p><ul><li><p>The company move from on-prem to the cloud</p></li><li><p>The company move from Azure to AWS</p></li><li><p>All the python, .NET, npm and Linux kernel upgrades</p></li><li><p>One full US presidential term</p></li><li><p>17 seasons of Survivor, 5 seasons of The Bachelor, the creation of The Golden Bachelor, and the first two US seasons of Love is Blind.</p></li></ul></li></ul><p>Oh god no. You have discovered an unkillable mythlogical creature, and this creature has come into your hospital and needs life-saving measures. </p><p>You have stumbled onto the dark matter of our industry - our <em>ultimate goal</em> and <em>worst nightmare</em>: <em><strong>working software</strong></em>.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WNN8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WNN8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WNN8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WNN8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WNN8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WNN8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg" width="1456" height="1895" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1895,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1594047,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/147011831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WNN8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WNN8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WNN8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WNN8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe033c015-5e2b-4968-8bef-92ed1e64aaf3_3396x4419.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Working software is terrifying, like when you hire goth kids for your harvest and all they do it take photos after killing your crops.</figcaption></figure></div><h4>Working Software :: Our ultimate goal</h4><ul><li><p>We want to work on new things, not polishing the same thing</p></li><li><p>The only way to truly be done with something is to create a system that works without us</p></li><li><p>The only way to get back to playing <em>Ghost Recons: Wildlands</em> is for the software you work on to be boringly stable</p></li></ul><h4>Working Software :: Our ultimate nightmare</h4><ul><li><p>When it breaks, it likely means that something it relies on has broken, which can be tricky</p></li><li><p>If software is running unattended for too long, all the tribal knowledge disappears and you are left with only the documentation which means you are likely left with nothing</p></li><li><p>If software can be this drama free, why can&#8217;t we seem to produce it consistently?</p><p></p></li></ul><h4>What to do</h4><p>First, deal with your fear. Being a software developer is about holding multiple things in your head, and two of them are <em><strong>I can build really strong reliable software</strong></em> while also thinking <em><strong>they really need me because all the software is so fragile</strong></em>. Software that works even as the ground shakes beneath it is frightening because it directly contradicts your worldview, which is that all software needs help and that you are a great helper of software. </p><p>Seeing software that is this stable is unnerving to programmers, typically all we work on are things that <em>don't</em> exist or <em>are wrong</em> and we are meant to build them or fix them. To fix something that is some type of perfect already fills programmers with existential dread, like when an expert chess or Go master is suddenly beaten by a computer program and realizes his life has been spent perfecting something that is not meant for humans to perfect, or like hearing a talking dog. <br><br>We do not study working software, and its features confuses and amaze us, although we do recognize it. Imagine a cat sitting at a window and seeing a tiger walk by.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zNXk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zNXk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 424w, https://substackcdn.com/image/fetch/$s_!zNXk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 848w, https://substackcdn.com/image/fetch/$s_!zNXk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 1272w, https://substackcdn.com/image/fetch/$s_!zNXk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zNXk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png" width="487" height="281" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:281,&quot;width&quot;:487,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:249287,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/147011831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zNXk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 424w, https://substackcdn.com/image/fetch/$s_!zNXk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 848w, https://substackcdn.com/image/fetch/$s_!zNXk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 1272w, https://substackcdn.com/image/fetch/$s_!zNXk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf682c6-f9ac-4c09-83b5-b7bd9cd53054_487x281.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For example, try not to think too deeply about the following questions:</p><ul><li><p>What if the current system you are working on reaches this level of strength? Will you lose your job?</p></li><li><p>Could all software work this way, impervious to the ecosystem around it? Why doesn&#8217;t it?</p></li><li><p>What happened to the man or woman who created such software? Are they immortal, or was the problem easier or they worked on it for a long time?</p></li></ul><p>Think only of the following:</p><ul><li><p>How can I rescue this beast, and leave it better than I found it, before the truth gets out of its mythical power?</p></li></ul><p>There is only one answer to this question: to get it working again - you better hope the source code is still around - and to tell its story. Leave documentation, patch its wounds, and let it roam back into the forest. </p><p>Say a little prayer as it leaves.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Testifying before Congress is not as fun as it looks in <em><a href="https://www.youtube.com/watch?v=ED2pSguRn7U&amp;ab_channel=HBO">Succession</a></em>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[How to assign a bug report]]></title><description><![CDATA[Bugs means mistakes, which means that you are stupid, which is frankly quite upsetting]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-assign-a-bug-report</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-assign-a-bug-report</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 10 Mar 2025 12:58:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ix4d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>From time to time, software does not behave as it should<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>.  </p><p>When this happens, there is usually an effort to fix it. However, there is a gap, called reality, between the person who sees something odd and a software developer assigned a detailed description of something to fix. </p><h4>Choosing the victim</h4><p>The <em>person responsible</em> is chosen using a series of heuristics based on how the organization works:</p><ul><li><p>Often, the teams are created so that routing bugs is easy. If the UI has a problem, assign it to the UI team.</p></li><li><p>Other times, an on-call person is assigned the problem. They review it and then curse.</p></li><li><p>Other times, mentioning a word or phrase invokes a person&#8217;s name. &#8220;It looks like the <strong>tax is wrong</strong>&#8221; =&gt; &#8220;Didn&#8217;t Terry work on that?&#8221; =&gt; Terry&#8217;s phone starts to ring.</p></li><li><p>Sometimes, it goes through a few less experienced people before the right person, which takes more time. This is called a <em>mature support organization</em>. These typically have Levels - Level 1 can&#8217;t figure it out and then Level 2 gets involved. The levels map to the current heart rate of the reporter of the bug as they wait on a fix.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ix4d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ix4d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ix4d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ix4d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ix4d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ix4d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2072104,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://badsoftwareadvice.substack.com/i/142867761?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ix4d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ix4d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ix4d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ix4d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9dce86f-e0b0-4b55-a47c-a0bf92041271_5456x3064.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>What To Do If You Are the Responsible Party</h4><p>Once you find the right person, you have also seen the person most likely to have <em><strong>caused the problem</strong></em>. This might be you.</p><p>If you work on the tax invoice engine (v1)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> team now but didn&#8217;t 3 years ago, you might be a proxy person for the person who wrote the bug. You are now the <em>most</em> experienced person in this area of the system, so any issues with it are <em>mostly</em> <em>your fault</em>. You might be thinking, &#8220;well I&#8217;m <em>responsible</em>, but I&#8217;m not at <em>fault</em>&#8221;, which indicates that you think language matters in the workplace - a common fallacy.</p><p>You may have never heard of the part of the system that contains the bug, understand the bug, or be aware of the component that is failing, or what it is supposed to do, or how urgent it is, or that it saying &#8220;17&#8221; instead of &#8220;19&#8221; even means in terms of impacts to users, or any other number of logical questions. These do not matter and frankly sound a lot like excuses springing from a bad attitude on your part.</p><h4>Providing Resolution</h4><p>The person responsible then set off to determine what happened and work towards a solution. This process is called <em><strong>Debugging</strong></em>. Writing bugs is called <em><strong>Software Development</strong></em>. Half-fixing a problem is called <em><strong>Rebugging</strong>. </em>Ignoring a problem in the hopes that it goes away is called <em><strong>Unable to Reproduce</strong></em>. Anything that causes people to stop talking to you about a problem is called <em><strong>Resolution</strong></em>.</p><p>After you fix the problem, you might think that some effort should be made to figure out&nbsp;<a href="https://badsoftwareadvice.substack.com/p/how-to-write-a-post-mortem-that-always">how it happened</a>&nbsp;and&nbsp;<a href="https://badsoftwareadvice.substack.com/p/additional-commentary-how-to-write">how it could have been prevented</a>. This is naive, and a little cute, but allowed.</p><h4>Finding the fix</h4><p>We have written about how to actually debug before:</p><ul><li><p><a href="https://badsoftwareadvice.substack.com/p/how-to-debug-software">How to avoid debugging software</a></p></li><li><p><a href="https://badsoftwareadvice.substack.com/p/how-to-ignore-issues-and-keep-secrets">How to ignore issues and keep secrets</a></p></li></ul><h4>Documentation</h4><p>I don&#8217;t know why I put a section here; it is a <a href="https://badsoftwareadvice.substack.com/p/how-to-avoid-documentation-and-hoard">bad idea to write stuff down</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>All the time based on your experience - developers only see the software that needs changing, so it seems like <em>nothing ever works</em>. Everything they hand you is broken, on fire, needs paint, or needs an upgrade. At the same time you feel like everything should be working, right?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>v1 - there is no v2 really, v1 is still live in production and serving all traffic. v2 is a project that gets started every few years and then the budget or people working on it dissappear.</p></div></div>]]></content:encoded></item><item><title><![CDATA[How to understand deadlines (as a developer)]]></title><description><![CDATA["I love deadlines. I love the whooshing noise they make as they go by"]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-understand-deadlines-as-a</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-understand-deadlines-as-a</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Tue, 28 Jan 2025 17:06:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6Ie_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You have been tasked with shipping something important, which you originally <a href="https://badsoftwareadvice.substack.com/p/how-to-ship-a-prototype">built as a prototype</a> after developing the idea yourself. It is now due in four weeks, when the company will announce it at a conference to much fanfare and bonuses for people that aren&#8217;t you. If it is done in time.</p><p>After this happens, which only happens because you <a href="https://badsoftwareadvice.substack.com/p/how-to-run-yourself-into-the-ground">worked very hard</a>, months will go by before real customers use the system. This is a little annoying, because the timeline is roughly:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Ie_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Ie_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 424w, https://substackcdn.com/image/fetch/$s_!6Ie_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 848w, https://substackcdn.com/image/fetch/$s_!6Ie_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 1272w, https://substackcdn.com/image/fetch/$s_!6Ie_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Ie_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png" width="1152" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62731,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6Ie_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 424w, https://substackcdn.com/image/fetch/$s_!6Ie_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 848w, https://substackcdn.com/image/fetch/$s_!6Ie_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 1272w, https://substackcdn.com/image/fetch/$s_!6Ie_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F856db982-2f76-4af6-a9f4-bed1f10ae19d_1152x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you approach death, you work very hard to build a system, under time constraints that seems unreasonable. Why didn&#8217;t you take more time to build the system <a href="https://badsoftwareadvice.substack.com/p/how-to-get-into-developer-heaven">The Right Way</a> during the <em><strong>nothing happens</strong></em> phase? Then you wouldn&#8217;t have all this stupid tech debt to worry about for the next year.</p><p>Perhaps a smaller example would make it clearer what is happening:</p><ol><li><p>A product manager asks you to change something that they have promised their boss will be done by the end of the month. </p></li><li><p>Given the time constraint, you design something that you can complete in a week. It doesn&#8217;t feel great, if you had more time you would design something that would scale more effectively.</p></li><li><p>It ships and the product manager is very happy and tells you that they owe you a beer and invite you to a party to celebrate.</p></li><li><p>When you arrive at the party you realize it is a Superbowl party and that your product is going live at the Superbowl.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p></li><li><p>Suddenly the unspoken requirement of being able to scale seems important, and you watch in horror as the system handles a few thousand requests and then fails. This seems very predictable, and you feel like the system has failed.</p></li><li><p>When you return to the office you immediately get to work on a version which scales better, now that you know what the real requirements are.</p></li><li><p>You complete this in a week and ship it. You are emotional about it as you do this; it is utterly unimaginable to you why the product manager wouldn&#8217;t mention the scale requirements. What an idiot.</p></li><li><p>During a retrospective with the product manager, you utter the following phrase: &#8220;<em><strong>There is never enough time to do it right, but there always seems to be time to do it over</strong></em>&#8221;.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MJYu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MJYu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MJYu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MJYu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MJYu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MJYu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1403845,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MJYu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MJYu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MJYu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MJYu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F758f9cb4-d583-480d-8a86-377dc734411d_5000x3333.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h4>The entire playing field</h4><p>As a software developer we build systems of all types, and we start to think that we see the entire playing field. We think that other roles are not as important, as we only see their failures. In the first example, the do-or-die demo doesn&#8217;t seem so do-or-die to us and so it seems like a fire drill that cost us a lot of sleep.</p><p>In the second example, it seems like the product manager is terrible at their job and/or we didn&#8217;t ask the right questions. We start to think that all deadlines are stupid, and everyone other than us might also be stupid.</p><h4>What actually happens when you aren&#8217;t involved</h4><p>The reason developers don&#8217;t see the entire playing field is that they only work on one piece of it, and most developers spend their entire careers in a few rooms of a house, never seeing anything else. They are like pharmacists drawing conclusions on doctor behavior based on prescriptions, never seeing times that doctors solved problems without recommending a visit to the pharmacy.</p><p>There are important activities that go on outside what you see.</p><p>In the first example, the demo was do-or-die, as the conference was the best place to launch the product to:</p><ul><li><p>get it into the hands of real customers, who all attend that conference</p></li><li><p>get immediate feedback on a quick and dirty &#8220;version 1&#8221;</p></li><li><p>to determine if there was a real market for it</p></li><li><p>to get it into the minds of buyers of the software product, who think in year long sales cycles </p></li></ul><p>A tech debt-ridden version of the product had to exist on that day, that worked, in order for the <em><strong>nothing happens </strong></em>to kickoff in time, which was when the sales and product people <em><strong>learned </strong></em>that there was a market for it, and set into motion a lot of things that end up being <em><strong>$$$ </strong></em>in our picture. A brochure or fake demo of a product would not have worked, a half-broken demo showed customers that you really are building this thing. A large amount of work happened in the &#8220;nothing happens&#8221; phase, but none of it was technical commits.</p><p>In the second example, the learning is also what matters. The product manager wasn&#8217;t sure if the product would work, and the product that you work on is <a href="https://www.indigo9digital.com/blog/the-brilliant-strategy-behind-supremes-success">exclusive </a>and high-end, so the product <a href="https://us.supreme.com/pages/shop">failing to fulfill orders</a> was a requirement, not a bug. The product manager wanted to create buzz, and they wanted to find out if people cared through an expensive version of an A/B experiment. You just weren&#8217;t aware of it, and you went off and built a better version of the product just in time. From their perspective all went according to plan, you were just a pawn in the plan. In fact, the system <em><strong>no longer needs to scale, it never did</strong></em><strong>.</strong></p><p>But you were in your feelings. Your view is:</p><p>&#8220;<em><strong>There is never enough time to do it right, but there always seems to be time to do it over</strong></em>&#8221;.</p><p>Reality is more like:</p><p><em><strong>&#8220;If you know exactly what to build, then you know exactly what is right, and you should spend time building that, because otherwise you&#8217;ll have to build it right later. Sometimes you don&#8217;t know what to build, so you need to throw something out there and learn what is right, and then go build that.&#8221;</strong></em></p><p>That quote is not as catchy, but I&#8217;ll offer another version from the developer world:</p><p><em><strong><a href="https://everything2.com/title/Plan+One+to+Throw+Away">Plan to throw one away; you will, anyhow</a>.</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rufk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rufk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rufk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rufk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rufk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rufk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3304915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rufk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rufk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rufk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rufk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db837ba-f572-4cb3-b8cb-94521d68cd12_6000x4000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sometimes, a product manager intentionally tasks you to build a crappy v1, because a crappy v1 is <strong>exactly what is required</strong> to ever have a v2 that makes money. Building a perfect v2 is <strong>simply not possible, but feels like it is only in hindsight</strong>.</p><p>Do not assume that you see the entire playing field or that those in other roles are idiots. We are all idiots, trying to coordinate towards a successful business.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>For some of you there is additional context needed: you also find out that the Superbowl is a football game, which is an American sports involving helmets and large men trying to get a ball onto the other side of the field with rules that are highly optimized to be exciting and have score changes. The Superbowl is watched by 40+ million people a year and the TV commercials sell for millions of dollars and generate a lot of discussion and attention.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Bad Software Advice: Three Interesting Links #6]]></title><description><![CDATA[WARNING: This edition contains: Hyrum's Law, Documentation, incompetent management, remote work, and AI]]></description><link>https://badsoftwareadvice.substack.com/p/bad-software-advice-three-interesting-77b</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/bad-software-advice-three-interesting-77b</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 20 Jan 2025 11:52:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c4G3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c4G3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c4G3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c4G3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg" width="673" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:673,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67889,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c4G3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c4G3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a1b55dc-8522-4192-bb62-911d23eb9185_673x385.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Smuggling Documentation into Work</h4><p>As someone who is sometimes mildly annoyed when I document things and then can&#8217;t get others to do so, I found a story about people trying to r<a href="https://landley.net/history/mirror/institutional_memory.html">estore missing documentation to a company they used to work for</a> - reverse corporate espionage - funny.</p><h4>Success sometimes limits your options</h4><p>There is no separate term for the type of technical debt that you create between you and another company with a bad interface or accidental behavior. Oh, actually there sort of is: <a href="https://abenezer.org/blog/hyrum-law-in-golang">Hyrum&#8217;s Law</a>.</p><h4>Something, something, remote work good|bad</h4><p>Not that often that you find yourself referencing a single comment on Hacker News, but I thought <a href="https://news.ycombinator.com/item?id=41814420">this one was quite good on the remote work good|bad debate</a>: (emphasis mine)</p><blockquote><p>Yes, as a well-paid, introverted, technical contributor who is internally motivated by their craft, with the luxury to afford good working space and at a moment in one's life where home haunts feel secure and supportive, you can't beat it. <strong>Like any tradesman in history keeping up their own shop, it's really quite empowering.</strong> I've been doing it for pretty much all of a very long career.</p><p><em>But</em> it's worth keeping in mind that there are a lot of implied constraints there, and that <strong>the industries that drive the society we live in often rely on making the best of people who can't meet all those constraints</strong>.</p><p>There are people whose jobs need them work with other people dynamically, extroverts who need to be around others with a common aim to thrive, people with compensation to meager to carve out an effective home office, people who need on-site facilities, people with chaotic or draining home lives, etc</p><p><strong>It's </strong><em><strong>very</strong></em><strong> easy to talk about why remote work </strong><em><strong>can</strong></em><strong> be extremely rewarding for some, but the big picture of a business or an industry needs to balance a whole bunch of other concerns -- some intrinsic and some simply inertial.</strong></p><p>It's just not a single, simple topic where we can project our own experience as if it was universal.</p></blockquote><p>I think this is a great, personal, take, and find the remote work debate difficult because it is deeply personal. For years I was caring for an illness in my family and had to work from home, but never told anyone at work. Some people cannot work from home safely, do not have the space, and cannot stay alone and be mentally healthy. Others just want to maximize their rent. This is why we speak past each other so often, we are all holding our cards back.</p><p>Speaking of remote work, I&#8217;ve open-sourced by book: <a href="https://navigatingremotework.com/">Navigating Remote Work</a>, and made it free for all. Its a personal guidebook for developing the skill and systems to be successful working remotely, and is based on 17 years of mistakes.</p><h4>Advantages of Incompetent Management</h4><blockquote><p>The main disadvantage of incompetent management is its definitional inability to set and achieve key goals, which can endanger the survival of the organization. Incompetent management can only thrive in situations where basic survival and even growth are somehow taken care of, and any major changes in that situation create an existential risk.</p></blockquote><p>Well, <a href="https://yosefk.com/blog/advantages-of-incompetent-management.html">that&#8217;s one way to look at it</a>.</p><div><hr></div><h4>Unsolicited Book Review</h4><p>One of my strategies to stop myself from going too far down the AI rabbithole was to read about:</p><ul><li><p>AI ethics, or lack thereof</p></li><li><p>Ways that AI will ruin the world</p></li></ul><p>Before learning how learn <em>why not</em> and <em>oh no god no</em>. The hope was that this would stop me from pursuing a masters in AI. While this strategy was not successful, it did expose me to a few scary books about AI that I&#8217;d recommend:</p><ul><li><p><a href="https://amzn.to/3zxvw31">Code Dependent: Living in the Shadow of AI</a> : good catalog of areas in which AI can help, and areas where it is currently hurting and changing society, throughout the world.</p></li><li><p><a href="https://amzn.to/4ciMGzL">You Look Like a Thing and I Love You</a> : sort of silly book about how AI &#8220;solves&#8221; things and can be very wrong and funny.</p></li><li><p><a href="https://amzn.to/45JIjLH">Not with a Bug, But with a Sticker</a> : adversarial approaches to AI, and ways you can make it fail that are quite unexpected.</p></li><li><p><a href="https://amzn.to/4gfFyG6">Superintelligence</a> : a dense book that has &#8220;WTF&#8221; written in the margins dozens of places if you buy it used. </p></li></ul><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Bad Software Advice&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Bad Software Advice</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to handle an IT escape room]]></title><description><![CDATA[You didn't signup for this, but yeah ya did]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-handle-an-it-escape-room</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-handle-an-it-escape-room</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 06 Jan 2025 14:03:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pzx3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After your first sip of coffee this morning, you turned your attention immediately to work, because you are a great worker. No <a href="https://theonion.com/good-mood-wasted-on-coworkers/">reading the news</a>, scanning <a href="http://bradconte.com/files/misc/HackerNewsParodyThread/">Hacker News</a>, or checking <a href="https://www.reddit.com/r/AnimalsWithoutNecks/">your favorite subreddit</a>. Instead, you immediately grabbed the Next Most Important Card from the Agile Backlog (NMICAB)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> and read the description.</p><p>The card describes a bug that your system is experiencing, with an attached video clearly showing the issue and exact steps to reproduce it. You try to open it, without success. It looks like your company's tool for video capture has implemented single sign-on, but it says you don&#8217;t have access and that your system administrator has been emailed. You wonder who that is; over the years you have met multiple people with beards and strong opinions about rare and unimportant things&#8212;it could be any of them.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>You take a moment to figure out what to do. Your thought process is roughly:</p><ul><li><p>Wondering if there is a system administrator</p></li><li><p>Wondering if he or she ever checks their email for this system</p></li><li><p>Wondering how much trouble watching this video is going to be</p></li></ul><p>When you woke up this morning, you didn&#8217;t know it, but you were not going to arrive at work today. You arrived at an <strong>IT Escape Room</strong>, and your mission today is to get out of it before the end of the day (EOD).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pzx3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pzx3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pzx3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pzx3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pzx3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pzx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:808769,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pzx3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pzx3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pzx3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pzx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a38fed6-a447-4d27-9cd4-a410911fb990_4272x2848.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Organization</h3><p>The tech company you work for is structured, like many companies, into different groups that interact with each other. Some would say in a power dance, or checks and balances type fashion:</p><ol><li><p>Application Development, Product Development, Development, Engineering, or Innovation Lab, or The Smelly Room: <strong>the people that build the software</strong>.</p></li><li><p>IT, Security, DevOps, Infrastructure, Computing Enablement, The Other Smelly Room: <strong>the people that must protect the company from #1</strong>.</p></li></ol><p>#1 and #2 must live in harmony. By harmony, I mean a culture of mutual disrespect and arrogance expressed in meetings through incredibly stupid nitpicking and over chat via passive aggressive friendly messages.</p><p>This tension is natural, based on why the two groups exist:</p><ul><li><p>#1, AppDev, has been tasked with building things as quickly and insecurely as possible, in order to make money.</p></li><li><p>#2, IT, has been tasked with keeping the company secure and predictable, no matter the effect on profits. After all, the best way to make an animal predictable is to cage it.</p></li></ul><p>As your company grows, the Nash equilibrium<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> pushes the tension between these two groups towards each other until a frontline is established that can be stomached from both sides. This is sometimes a technical interface and other times a combination of technical and human interface:</p><ul><li><p>All changes must be pull requests and submitted by Tuesday at UTC midnight.</p></li><li><p>All changes must be pull requests, and The Terrible Terry Committee (TTC)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> has to review them and <a href="https://badsoftwareadvice.substack.com/p/how-to-run-a-miserable-code-review">Terry and his friends decide</a> if they pass or not.</p></li></ul><p>At some point in the past the TTC has decided that the video capture tool Must Not Be Given to Every Developer (For It Costs Too Much | They Will Misuse It For They Are Not To Be Trusted).</p><h3>How to Escape and Watch the Video</h3><p>There are ways around it, however. There are two primary strategies.</p><h4>Strategy A</h4><ol><li><p>Document your lack of access and why you need it for your job, and submit a request for permission to what you think is the right place.</p></li><li><p>During the next 7 to 9 daily standups, report that the bug cannot be fixed, because you are unable to watch the video.</p></li><li><p>Wait for someone to get annoyed enough to give you permission, or start a battle to gain access long-term for all people in your role. Multiple things can happen from this step. This might start a war for territory, might be granted immediately, or might kickoff a project that creates a system wherein you can &#8220;checkout&#8221; access for a temporary period of time to view videos, while a 3rd party auditor takes a video of you which is kept for 7 years.</p></li></ol><h4>Strategy B</h4><ol><li><p>Call up your coworker who is higher up in the food chain (Solutions Architect or Vice President or Nephew Of Big Boss)</p></li><li><p>Have them watch the video while you are on a video call</p></li><li><p>Possibly screen-capture it for later</p></li><li><p>Figure out and fix the bug</p></li><li><p>Wait to get in trouble for this</p></li></ol><p>There is a controversial third strategy, which I will only call <strong>Strategy C</strong>, because I can&#8217;t think of a better name for it, which is:</p><ul><li><p>Take the card (NMICAB) and flip it to unassigned as soon as you realize you can&#8217;t watch the video, and grab another card. If questioned, say that you assigned it to yourself by accident.</p></li></ul><p>You cannot lose if you do not play.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This is not a commonly used acronym (CUA) _yet_, but <em><strong>you</strong></em> can make &#8220;nimmy cab&#8221; happen.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Somehow, this is a widely used acronym (WUA), even though it has the same number of syllables. <em>e.o.d vs. end.of.day</em> Madness!</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Nash_equilibrium">The Nash equilibrium</a>. Related: the Steve Nash equilibrium states that your company will be made up of a constant ratio of employees that:</p><p>a) believe Steve Nash deserved the NBA MVP during the 2004-5 season (i.e. people who watch basketball)</p><p>b) believe that Shaq deserved it (i.e. people who think Airbud was a documentary)</p><p>c) do not know who Steve Nash is (people &lt; 30 years old).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>TTC is typically called CAB - &#8220;Change Advisory Board&#8221;, because that is what the ITIL framework calls it. I don&#8217;t know what ITIL stands for and <strong>ABSOLUTELY</strong> <strong>WILL NOT</strong> look it up, per my role&#8217;s responsibilities and the prevailing policy documents, which I adhere to. If an exception must be made, you need to write my manager and record the exception in the change log.</p></div></div>]]></content:encoded></item><item><title><![CDATA[20 behaviors to get software engineers to respect you more]]></title><description><![CDATA[Sorta kinda not really]]></description><link>https://badsoftwareadvice.substack.com/p/20-behaviors-to-get-software-engineers</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/20-behaviors-to-get-software-engineers</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Tue, 03 Dec 2024 19:12:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zWvI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zWvI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zWvI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zWvI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zWvI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zWvI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zWvI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg" width="968" height="1210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1210,&quot;width&quot;:968,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127245,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zWvI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zWvI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zWvI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zWvI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b66dd2c-ab37-42d1-b937-c5c3c456b736_968x1210.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p>Normalize &#8220;I don&#8217;t know, ask your mom&#8221; as a successful answer.</p></li><li><p>Say little, because you are eating a hotdog and are in the middle where it&#8217;s super messy.</p></li><li><p>A person&#8217;s favorite sound is their name, according to some dead guy, so remember it and yell it out in crowds.</p></li><li><p>Praise publically, criticize privately, gossip regularly.</p></li><li><p>Always return a shopping cart, especially if you are not in a grocery store - I mean you should not have even brought that here.</p></li><li><p>Keep secrets unless they are just <em><strong>too good</strong></em>.</p></li><li><p>True leadership is choosing to help people grow, truest leadership is yelling at them to grow faster.</p></li><li><p>Be the last to eat - let others go first, then you eat what is left and complain about it a lot.</p></li><li><p>Keep your phone in your pocket, and also other people&#8217;s phones, so that they won&#8217;t get distracted while you are speaking.</p></li><li><p>Pause in speaking and make eye contact until you remember what in the hell you were just talking about I mean where are we even.</p></li><li><p>Hold the door open for others, unless there is a fire.</p></li><li><p>Never underestimate that which can be overestimated.</p></li><li><p>Under-promise and under-deliver, so that people know what to expect of you, and you can be in the running for Most Improved.</p></li><li><p>Take note of important dates, like 9/11.</p></li><li><p>Be punctual to show respect for your own time.</p></li><li><p>Respect different perspectives unless they are the stupid ones.</p></li><li><p>Stay loyal to your friends and family, unless you are sure there are better ones.</p></li><li><p>Do the work when nobody is watching, then stop when they start watching because it is embarrassing.</p></li><li><p>Say thank you and please, even when being attacked by a goose. Manners matter.</p></li><li><p>Always leave things better than you found them, even if it really hurts the bottom line of your demolition business.</p></li></ol><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to solve problems too early]]></title><description><![CDATA[Provide a solution before the problem is fully stated for extra credit]]></description><link>https://badsoftwareadvice.substack.com/p/how-to-solve-problems-too-early</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/how-to-solve-problems-too-early</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Tue, 28 May 2024 12:49:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!e79N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As we have discussed, engineers are meant to <a href="https://badsoftwareadvice.substack.com/p/commentary-how-to-be-really-bad-at">solve problems</a>. The nature of the work is that you are asked to solve problems all the time, even if the ask isn&#8217;t explicit. </p><p>If you work in support, customers expect a resolution. If you work in research or product development, your customers expect you to build something to solve their problems. As an engineer, the fastest way to end a conversation and get back to playing Ghost Recon: Wildlands is to offer a solution, no matter how good.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e79N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e79N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e79N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e79N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e79N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e79N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg" width="1456" height="2184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5548499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e79N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e79N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e79N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e79N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4676c685-3b89-4efe-b60f-210691fd47ba_3648x5472.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Problem Definition</h4><p>Documenting a problem is Very Hard, and people don&#8217;t write things down. You will often hear about a problem during a meeting and need to ask questions to help them narrow and better define it. They will often devise a half-backed solution, which they will tell you in the first 5 minutes of the conversation.</p><p>Here are some examples:</p><ol><li><p>When we run the morning reports, they time out on Mondays and a few times on other days. <strong>Solution</strong>: <em>We should increase the server capacity on Mondays to solve it.</em></p></li><li><p>Some customers have invalid configuration data, so about once a month, we load those customers in our web UX and hit &#8220;Save&#8221; on their profiles to fix it. <strong>Solution</strong>: <em>When a customer hits an invalid configuration, we should auto-save their account to fix it.</em></p></li><li><p>When people onboard new accounts, they never know that the name of their tenant is case-sensitive. So many times, we end up creating two tenants, one called TenantX and one called tenant. <strong>Solution</strong>: To handle this operationally, we should create a tenent-merge script that Ops can run when this happens.</p></li></ol><p>What is wrong with these solutions? <em><strong>Nothing.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> These solutions are great. </strong></em></p><h4>Garbage-in, garbage out</h4><p>It isn&#8217;t your job to help a customer define the problem; you are just the solution provider, right? If they ask for something, shouldn&#8217;t you give it to them?</p><p>In your role as an engineer, you don&#8217;t always see the process of figuring out the problem. This is more of an art than a science, so it&#8217;s hard to learn about it in traditional ways. There is no manual for analyzing requirements, interviewing customers, or building creative ways to get information on how external processes work. It is a crossroads between formal system analysis, psychology, interview technique, high-level communication, empathy, and systems theory. It&#8217;s messy. Best avoid it at all costs.</p><h4>Problems without Solutions</h4><p>If a half-baked solution isn&#8217;t present<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, you need to create one. <em><strong>As someone is speaking, ideally while mid-sentence, you should offer a half-baked solution</strong></em>. Think of yourself as on a trivia show in which there is no penalty for wrong answers but a great reward for answering quickly. Like the trivia system at Chili&#8217;s. You are paid to solve, so solve it and solve it quickly.</p><p>Besides, understanding the problem is probably a bunch of extra information that won&#8217;t matter about the types of people that use your system, how they communicate, what their other problems are, or what they expect. Certainly, knowing about the industry and what other systems do isn&#8217;t relevant to your system and where the industry might be going. Focus! All that extra context won&#8217;t help you. It&#8217;s information overload! </p><h4>First, Do not Offend</h4><p>Besides, they came to you with questions, so asking more questions is rude. They don&#8217;t seem to like it when you ask questions anyway; it feels like maybe you are stalling or don&#8217;t have any solutions. I mean, even if it might be simpler, wouldn&#8217;t it be a little embarrassing if you asked many questions and realized that a solution to their problem already exists, and it isn&#8217;t something you don&#8217;t get to build? And then what if you suggested that they use something like Google Sheets and some off-the-shelf API to do it? I mean, wouldn&#8217;t that mean you are a joke? A software engineer that isn&#8217;t engineering any software by writing it fresh<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>? </p><p>If you don&#8217;t fully understand the problem, you can offer a few solutions to <strong>make it better but not solve it</strong>, and then they will have to come back to you for more solve credits. See, it is like a video game in which you need to get as many hit points as possible, not as many kills as possible. Get some knocks, but few kills. You should cultivate a farm of easy-to-solve problems and develop a reliance on yourself as the only one who can provide solutions rather than truly solving the problems.</p><p>If you miss important information about the problem, <a href="https://badsoftwareadvice.substack.com/p/how-to-ignore-customers">the customer will probably ask again</a>, and you can <a href="https://badsoftwareadvice.substack.com/p/how-to-be-really-bad-at-fixing-problems">resolve it</a> then. That way, you get credit for two solutions, and maybe you can get your Solutions Architect merit badge in time for summer.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/p/how-to-solve-problems-too-early?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thank you for reading Bad Software Advice. This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/p/how-to-solve-problems-too-early?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://badsoftwareadvice.substack.com/p/how-to-solve-problems-too-early?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><ol><li><p>Why just Mondays, and why &#8220;other days&#8221;? Ask some questions and look at some logs - feels like some weekly or monthly report is running taking up resources perhaps?</p></li><li><p>Why are they becoming invalid? By resaving, are we overwriting anything?</p></li><li><p>What about preventing the ability to save with another case when the tenant is created?</p></li></ol></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Because you have somehow trained your non-engineers to focus only on the problem. If you keep giving them bad solutions, you will eventually train them to build their own solutions&#8212; any middleman eventually moves into manufacturing. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Pardon, I mean to say &#8220;bespoke&#8221; or &#8220;custom&#8221; or &#8220;tailored&#8221;</p></div></div>]]></content:encoded></item><item><title><![CDATA[Commentary: How to tell who your best programmer is]]></title><description><![CDATA[As software engineers work together, they determine who is knowledgeable and easy to work with.]]></description><link>https://badsoftwareadvice.substack.com/p/commentary-how-to-tell-who-your-best</link><guid isPermaLink="false">https://badsoftwareadvice.substack.com/p/commentary-how-to-tell-who-your-best</guid><dc:creator><![CDATA[David Tate]]></dc:creator><pubDate>Mon, 20 May 2024 13:36:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cTw_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As software engineers work together, they determine who is knowledgeable and easy to work with. After working on a few projects together, the experts in particular technologies show themselves, and questions get routed to the right person. As people work together, they learn how to treat each other by the way that they are treated. Nature brings true expertise to the surface, and the team learns how to work with jerks to minimize their impact. For example, Team Member A might realize that Member B is the best person to talk to about a particular technology but that you shouldn&#8217;t do so in the morning and butter them up a bit before you ask the question.</p><p>But the manager doesn&#8217;t know this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cTw_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cTw_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cTw_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cTw_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cTw_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cTw_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:626708,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cTw_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cTw_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cTw_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cTw_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d62005-3b0b-42b6-b65b-a00a62c80d48_2828x2121.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://badsoftwareadvice.substack.com/p/how-to-tell-who-your-best-programmer">How to tell who your best programmer is</a> is written not from a coworkers perspective but from that of a manager. It speaks to the struggle that people have in determining which experts to trust. When developers disagree, and you are their boss, and you have to determine which one of them is right - how do you do this?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> You need to figure out who to promote or give feedback to and you are not in the trenches watching the work happen, how do you do this?</p><p>Human nature dictates that you tend to do this based on several things that can easily become anti-patterns:</p><ul><li><p><em>Conflict avoidance</em>: this normally lets jerks win arguments</p></li><li><p><em>Deferring to power</em>: the longer someone has worked somewhere, and the more secrets they know, the worse their behavior can become because people are afraid to cross them</p></li><li><p><em>Strong track record winning arguments: </em>whenever there is a disagreement on the team, a certain person ends up being perceived as right, and this has to count for something, right? But they may have &#8220;won&#8221; because they started the argument to show how smart they are; the argument might have been a waste of time, and everyone might have just deferred to them to avoid it continuing to waste time</p></li><li><p><em>Loyalty: </em>the developer has worked here as a Senior Software Engineer for 25 years! They must be great, everyone else leaves within a year! This pattern seems obvious when pushed to the extreme like this, but there are cases where a programmer has spent as much time <a href="https://badsoftwareadvice.substack.com/p/how-to-avoid-documentation-and-hoard">defending their castle</a> as building it well, so this builds them (<a href="https://badsoftwareadvice.substack.com/p/commentary-how-to-become-a-senior">false</a>) job security and makes it harder for them to leave or for others to help.</p></li><li><p><em>Visibility leads to familiarity</em>: you always see problem programmers; they somehow are always at the center of discussion on some problem (<a href="https://badsoftwareadvice.substack.com/p/commentary-how-to-be-really-bad-at">maybe they caused it and are most familiar with it</a>). It can be hard to tell if someone is arriving as a hero or a suspect, you just know they are always around during situations</p></li><li><p><em>Genius stereotype problems: </em><a href="https://badsoftwareadvice.substack.com/p/how-to-treat-programming-with-illogical">society reinforces the stereotype</a> of the hard-to-work-with loner genius, and so at times we categorize loners and people that are hard to work with as geniuses when they aren&#8217;t. </p></li></ul><p>This anti-pattern is about how people who are not easy to work with can sometimes be perceived as smarter than they are because of these default behaviors.</p><p>In an ideal world, programmers are instead judged on how well they help the team. In <a href="https://dannorth.net/2023/09/02/the-worst-programmer/">The Worst Programmer I Know</a>, the case is laid out that measuring individual productivity is perilous because it misses those developers who elevate the team&#8217;s effectiveness. Mentorship and helpfulness do not always show up to a manager but are deeply felt by peers. If a developer is generally helpful and wants the work done, no matter who gets credit, they should be rewarded. And if they yell, bluster, and hold tight to areas of the system in an unhealthy way, they shouldn&#8217;t be.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://badsoftwareadvice.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Bad Software Advice is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>As a manager, you likely should not settle arguments. Three people are involved, and the one who knows the least should settle it?</p></div></div>]]></content:encoded></item></channel></rss>