<?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[Code for Humans and Machines: Trends & Reflections]]></title><description><![CDATA[Research-backed reflections on AI, software engineering, architecture, and the future of software development.]]></description><link>https://adamtornhill.substack.com/s/trends-and-reflections</link><image><url>https://substackcdn.com/image/fetch/$s_!BnIF!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5ceb343-309b-4226-b2b2-387db9b14e27_608x608.png</url><title>Code for Humans and Machines: Trends &amp; Reflections</title><link>https://adamtornhill.substack.com/s/trends-and-reflections</link></image><generator>Substack</generator><lastBuildDate>Tue, 23 Jun 2026 23:41:07 GMT</lastBuildDate><atom:link href="https://adamtornhill.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Adam Tornhill]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[adamtornhill@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[adamtornhill@substack.com]]></itunes:email><itunes:name><![CDATA[Adam Tornhill]]></itunes:name></itunes:owner><itunes:author><![CDATA[Adam Tornhill]]></itunes:author><googleplay:owner><![CDATA[adamtornhill@substack.com]]></googleplay:owner><googleplay:email><![CDATA[adamtornhill@substack.com]]></googleplay:email><googleplay:author><![CDATA[Adam Tornhill]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A Blast from the Past: SDD and the Illusion of Known Scope]]></title><description><![CDATA[Implementation was never just typing. It's discovery and learning. Tooling changed, human problem solving didn&#8217;t.]]></description><link>https://adamtornhill.substack.com/p/a-blast-from-the-past-sdd-and-the</link><guid isPermaLink="false">https://adamtornhill.substack.com/p/a-blast-from-the-past-sdd-and-the</guid><dc:creator><![CDATA[Adam Tornhill]]></dc:creator><pubDate>Thu, 28 May 2026 05:30:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BoGG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of the most fascinating aspects of the hyper-modern agentic era is the return of older attempts at taming software development. The latest trend to resurrect goes by the name of Spec-Driven Development (SDD). SDD does stand out as a revival of the belief that code is a mere artifact.</p><p>This article explores SDD through the lens of someone who lived through modelling days past. I acknowledge that &#8220;this time it might be different&#8221;, so I&#8217;ll focus my concerns on the flawed idea that implementation is the mere execution of a known scope. Rather, implementation is an essential part of the discovery process itself. And the further we remove ourselves from it, the harder it becomes.</p><h2><strong>Quick recap: what is SDD?</strong></h2><p>The idea with SDD is to capture the intended behavior in a structured specification. We then let a coding agent execute the resulting tasks and generate design docs, etc., in the process.</p><p>Yet, <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html">as Birgitta B&#246;ckeler points out</a>, SDD seems to come in several forms. It can be anything from a relatively lightweight way to drive agents to a strong form where the spec itself is the ground truth. It&#8217;s the latter I&#8217;m concerned with.</p><p>The risk is that SDD becomes the latest iteration of an age-old manager dream: have your skilled seniors specify what to build, then pass it on to the seemingly simpler &#8220;implementation&#8221; while pretending that step is predictable and somehow less important. In the 1990s, &#8220;implementation&#8221; meant a team of coders kept in the dark. Today, it&#8217;s obviously agents.</p><p>The process didn&#8217;t work well back then. As both the pace and expectations on a software delivery are orders of magnitude higher now, I&#8217;m sceptical about how well SDD will work this time around. Not due to waterfall thinking &#8212; many SDD practitioners evolve their systems iteratively &#8212; but rather due to the nature of problem solving.</p><h2><strong>The pull: a need for predictability</strong></h2><p>Software development is at a crossroads. The best possible outcome of the agentic revolution is that we raise the bar for software engineering. We know what&#8217;s good for us: strong automated test suites, continuous delivery, small increments, modular architectures, and top-notch code quality.</p><p>We also know that GenAI is stochastic. But so too is a group of humans collaborating on software. And if history taught us anything, the solution isn&#8217;t just better input but also faster feedback loops. Let me elaborate by travelling back in time to the model wars.</p><h2><strong>The Emperor&#8217;s new executable clothes</strong></h2><p>SDD is strongly reminiscent of the Model-Driven Architecture, Executable UML, and the glorious Rational Unified Process (RUP) of decades (fortunately) long gone.</p><p>Early in my career, I used these technologies at two different companies. In the first one, we had an effective design review process. As a developer, I&#8217;d basically sketch out the software design as a UML class diagram, complement it with some sequence diagrams for the dynamics, and did a walkthrough for my peers.</p><p>Yes, the process was slow. But what we designed usually worked as a direction on what to implement. The real advantage, though, was that the resulting UML diagrams served well for onboarding and extensions. It was easy enough to get the high-level view of the solution, which helped when later drilling into the code.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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://adamtornhill.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>So far so good. Then came the tool vendors. I mean, if you&#8217;ve already sketched out your design, why not take it full circle and generate all code from that sketch? After all, code is just an implementation detail, right? All that was needed was to extend UML with an &#8220;action language&#8221; to capture those &#8220;details&#8221;.</p><p>How well did it work in practice? Oh, the first victim was the documented design. The executable diagrams turned so bloated and verbose that they became literally incomprehensible. After all, the new audience was a compiler, not humans.</p><p>Changes and extensions got painful. You see, all those power tools we&#8217;ve gotten used to &#8212; build pipelines, command line utilities, IDEs, linters, etc. &#8212; didn&#8217;t exist in the vendors&#8217; design tools. Imagine coding in a Microsoft Word document. That&#8217;s how it felt.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BoGG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BoGG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!BoGG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!BoGG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!BoGG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BoGG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png&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;:1608851,&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://adamtornhill.substack.com/i/198837000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.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_!BoGG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!BoGG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!BoGG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!BoGG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb64fca0-2b17-4898-8bb4-c2c5e1499a68_1536x1024.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 role="img" 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><title></title><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">A Model-Driven Architecture flashback. Some scars never heal.</figcaption></figure></div><h2><strong>The cognitive perils of a strong spec</strong></h2><p>Tooling was only part of the model-driven fiasco. A stronger problem was the process mindset at that time. Agile was brand new, and few people were familiar with the movement outside narrow programmer circles. Virtually every company I worked with operated in waterfall mode.</p><p>However, back then, the expectations on a software delivery were quite different. Today, with daily deployments being the standard, we just cannot afford to be slow in acting on feedback.</p><p>Human problem solving is inherently iterative and driven by reflection in action. We learn by doing. Express an idea in code, test it out, observe, and learn. The cycle expands our understanding of the problem we&#8217;re trying to solve. That improved understanding is then translated into modifications to the program, which we in turn observe and learn from. Rinse and repeat. We just cannot short-circuit that.</p><p>No, I don&#8217;t mean that we shouldn&#8217;t think things through early on. We should. And we should write stuff down to make it more concrete and invite a conversation. That helps thinking, too. But we need to treat that document as an imperfect starting point rather than the finished product.</p><h2><strong>The most underestimated aspect of code: requirements explosion</strong></h2><p>The main challenge starts if we work from a spec as if the problem was already understood. The reason is the concept of <em>requirements explosion</em>. The term was first coined by Robert Glass. Glass argues that &#8220;for every 10-percent increase in problem complexity, there is a 100-percent increase in the software solution&#8217;s complexity.&#8221;</p><p>In other words, each requirement in the spec will lead to tens of implicit design requirements that need to be resolved. We cannot leave that as guesswork for an agent to figure out.</p><p>To make SDD work, we would have to provide directives that let agents resolve a large share of all those implicit requirements.</p><p>So, couldn&#8217;t we complement our spec with a detailed solution model? We could. But it would lead us on a march with three major obstacles:</p><ol><li><p><strong>Free text lacks precision</strong>. Yes, we can explain constraints, etc., in text, but that becomes verbose and hard to check. Even structured prose and checklists leave room for ambiguity. That&#8217;s why we have programming languages. Those are excellent at capturing precise rules intended for machines.</p></li><li><p><strong>We cannot know the solution requirements up-front</strong>. Remember: we learn by doing. And if we don&#8217;t and rather have agents make those decisions for us, it becomes orders of magnitude harder to derive and capture the solution requirements. Think reverse engineering a legacy codebase. That&#8217;s the position we&#8217;d be in. Constantly.</p></li><li><p><strong>Extending requirements specs with implementation details and contracts blurs the model</strong>: This is what hit hardest back in the MDA/UML days: the model starts to become the implementation and loses its value as an overview, a different level of abstraction. Code just needs another level of precision.</p></li></ol><blockquote><p>The moment a model becomes the implementation, it ceases to be a good model.</p></blockquote><h2><strong>The other road ahead</strong></h2><p>SDD is something I&#8217;ll continue to observe but sit out on for now. However, that doesn&#8217;t mean I don&#8217;t value structure and a certain predictability. It just means we should look for those qualities elsewhere.</p><p>Predictable progress rests on domain expertise, intention-revealing software design, automated safeguards for our code and its behavior, and rapid visual feedback, all amplified by a highly skilled team. Those capabilities are harder to grow than a spec. But they are also far more valuable. With or without SDD.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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">Subscribe for practical patterns, research, and reflections on coding in the agentic era.</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>]]></content:encoded></item><item><title><![CDATA[How Much of my Writing is AI-Generated?]]></title><description><![CDATA[Writing is learning. LLMs remove that component.]]></description><link>https://adamtornhill.substack.com/p/how-much-of-my-writing-is-ai-generated</link><guid isPermaLink="false">https://adamtornhill.substack.com/p/how-much-of-my-writing-is-ai-generated</guid><dc:creator><![CDATA[Adam Tornhill]]></dc:creator><pubDate>Tue, 19 May 2026 06:02:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DBBe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In early 2026 a barrier was crossed: the majority of LinkedIn posts were now AI-generated. <a href="https://originality.ai/blog/linkedin-ai-study-engagement">53.7%</a> to be specific. Other feeds like X or Reddit are unlikely to fare any better.</p><p>And now you&#8217;re reading this article. So a fair question is: is there a real person with their own experience and views behind it? Assuming the answer is &#8220;yes&#8221;, why would that matter?</p><p>What follows is my list of ingredients for Code for Humans and Machines. It explains how I work with AI as well as the consequences of outsourcing writing to it. Ultimately, it ties into the purpose of writing, which should go deeper than content production.</p><h2><strong>Does it matter if content is AI-generated?</strong></h2><p>Yes.</p><p>AI-written content has a peculiar flavour. LLMs employ several advanced stylistic devices. These give AI content its tell-tale signs, serving as mental cues to immediately scroll past. It&#8217;s not about quality per se. More like: If it was effortless to produce, it simply carries less value.</p><p>That reaction is not just me. Research shows that we rate identical works as more valuable when we think a human, rather than an AI, created them: <a href="https://doi.org/10.1186/s41235-023-00499-6">Humans versus AI: whether and why we prefer human-created compared to AI-created artwork</a>.</p><p>Feelings aside, my main problem with AI-generated content is that it is so bland. Yes, individual sentences can be expressive, even snappy. But the overall effect is repetition, verbosity, and a lack of sharpness. Impressive in the small, exhausting at length.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DBBe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DBBe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!DBBe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!DBBe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!DBBe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DBBe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png&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;:2547159,&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;:&quot;https://adamtornhill.substack.com/i/197685669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.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_!DBBe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!DBBe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!DBBe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!DBBe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5402d990-7513-4366-a003-adeb07b82e11_1536x1024.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 role="img" 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><title></title><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">At least the illustration is AI-generated.</figcaption></figure></div><h2><strong>Losing the benefits</strong></h2><p>Consuming LLM content is one thing. It poses an even larger challenge for the writer.</p><p>For decades, I&#8217;ve used writing to explore and understand various topics. Writing is an active process, and the very act of expressing an idea in text is itself a valuable way to learn.</p><p>I often start writing about topics I&#8217;d like to think I already master. Still, I frequently discover a gap in my understanding or an edge case I hadn&#8217;t considered. Writing is learning. LLMs take away that component.</p><p>That, too, is backed by research: writing is not just a way to report thought, but <a href="https://doi.org/10.58680/ccc197716382">a way to develop it</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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://adamtornhill.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>How much AI do I use?</strong></h2><p>There&#8217;s a crucial difference here: I do <em>use</em> AI a lot, but not to generate articles.</p><h3><strong>Iterating on sample code</strong></h3><p>Most of my articles contain code samples. Historically, those samples have been time-consuming. Not only do I have to find relevant examples; the code also needs to exhibit a specific design problem. Coming up with artificial code examples is hard enough. Coming up with examples that are &#8220;bad&#8221; in a specific way is next-level hard.</p><p>AI largely automates that process. I can iterate on sample code, instruct the agent to make it more or less complex, and even ask it to amplify some code smell for illustrative purposes. I love that.</p><h3><strong>Research assistance</strong></h3><p>I&#8217;ve always made it a point to base my recommendations on research. The real, peer-reviewed kind.</p><p>In the past, a lot of that work was repetitive searches on Google Scholar and university databases, trying to identify relevant papers. After skimming too many not-quite-what-I-need papers, reviewer fatigue would kick in.</p><p>An agent is, of course, a superb support for these types of tasks. I use AI a lot to narrow down my search. I probably spend the same amount of time in total, but now the bulk of that time is spent reading and understanding relevant material.</p><h3><strong>Review and feedback loop</strong></h3><p>This is where AI shines. It&#8217;s good at identifying inconsistencies, and offers a rapid feedback loop.</p><p>90% of my writing is rewriting. The first draft is usually quick, but I do multiple iterations where I tweak, clarify, and try to improve the flow and structure. Continuous feedback is useful.</p><h3><strong>Unblocking writer&#8217;s block</strong></h3><p>I have a tendency to get stuck on certain parts of a text. I know what my message should be, but I cannot get into the proper writing flow. Here, AI is wonderful: I type down a stream of consciousness and ask the AI to refine it.</p><p>Ultimately, I tend to throw most of that generated text away. Occasionally, I keep parts that I tweak. But getting a starting point &#8212; even if imperfect &#8212; helps more often than not.</p><h3><strong>Indirect influence</strong></h3><p>AI impacts my work in other ways, too. I mentioned earlier how LLMs mimic advanced stylistic writing patterns. Think of lines like &#8220;It&#8217;s not only an X. It&#8217;s a Y,&#8221; or the classic em dash.</p><p>I actively minimize my use of these tricks. The LLM tendency to overuse the em dash in particular is a tragedy &#8212; I employed it heavily in my pre-GenAI writing.</p><h2><strong>Why I write</strong></h2><p>Writing with AI support is a more enjoyable process. However, writing that is meant to be read is still 95% human effort. Any attempt to short-circuit that process comes with a cost: bland text and a lost learning opportunity. It&#8217;s self-defeating.</p><p>At the end of the day, the personal question each writer has to ask is:</p><blockquote><p>Why do I write?</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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">Subscribe for practical patterns, research, and reflections on software design in the agentic era.</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[Compressed Cognition: The Cost of Faster Coding]]></title><description><![CDATA[Agentic coding collapses the timeline of software decisions. What we gain in speed, we pay for in decision density and mental energy. Here's a deep dive into the trade-offs and how to work with them.]]></description><link>https://adamtornhill.substack.com/p/compressed-cognition-the-hidden-cost</link><guid isPermaLink="false">https://adamtornhill.substack.com/p/compressed-cognition-the-hidden-cost</guid><dc:creator><![CDATA[Adam Tornhill]]></dc:creator><pubDate>Thu, 07 May 2026 06:02:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!livS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My post on <a href="https://adamtornhill.substack.com/p/coding-is-dead-but-it-still-smells">Coding Is Dead (...But It Still Smells Funny)</a> touched upon developer flow. One of the big wins with agents is that they let us stay with the higher-level problem for longer. We get less sidetracked by details, dependency cleanup, and similar secondary tasks that used to break concentration.</p><p>But there is a cost we are still underestimating. Agentic coding is mentally expensive.</p><p>I can usually sustain the pace for a couple of hours. Then I need a break. The pace is simply too intense. And based on conversations with other engineers, I do not think I am alone in that.</p><p>That is the trade I want to unpack here. Agents help us stay with the problem longer, but they also compress too many meaningful decisions into too little time.</p><h2><strong>The timeline collapse</strong></h2><p>Software development was always about making decisions. A typical product requirement quickly explodes into hidden design work that end users never see. Architecture, naming, boundaries, behavior, edge cases, test design, failure modes.</p><p>In the old days, say pre-2025, work unfolded at human speed, which meant the decisions were naturally spaced out. Today, agents compress the timeline. We have to deal with complexity and decisions that used to be spread over days in a single coding session.</p><p>But there&#8217;s more. <a href="https://adamtornhill.substack.com/p/welcome-to-code-for-humans-and-machines">Agentic coding raises the engineering bar</a>, and we just cannot afford to slip. Like skipping e2e tests, ignoring problematic dependencies, or rebuilding library functionality we should have reused.</p><p>So we&#8217;re now a) facing more complex work, with b) a compressed timeline of decisions. No wonder agentic coding is draining.</p><h2><strong>Decision density and mental energy</strong></h2><p>What we are experiencing as modern developers is not new. It just shows up in a new context.</p><p>Psychology has studied the mental cost of decision making for decades. One of the most well-known concepts is <em>decision fatigue</em>. Decision fatigue says that the quality of our decisions deteriorates after a long session of continuous choices.</p><p>One of the most cited examples comes from judicial decisions. <a href="https://www.pnas.org/doi/10.1073/pnas.1018033108">Danziger et al.</a> looked at thousands of rulings and found that favorable decisions dropped as judges moved through a work session. Interestingly, the decision quality then recovered after breaks.</p><p>The Danziger study shows what depletion looks like in practice. <a href="https://doi.org/10.1037/0022-3514.94.5.883">Other studies</a> suggest the mechanism: making choices is itself mentally expensive. Agents accelerate the arrival rate of those decisions.</p><p>Manual coding had a built-in pacing mechanism. That was our implicit recovery break. And it&#8217;s now gone.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!livS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!livS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 424w, https://substackcdn.com/image/fetch/$s_!livS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 848w, https://substackcdn.com/image/fetch/$s_!livS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 1272w, https://substackcdn.com/image/fetch/$s_!livS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!livS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png" width="1448" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:905223,&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://adamtornhill.substack.com/i/196201893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.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_!livS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 424w, https://substackcdn.com/image/fetch/$s_!livS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 848w, https://substackcdn.com/image/fetch/$s_!livS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.png 1272w, https://substackcdn.com/image/fetch/$s_!livS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea3779e5-b115-4707-b1a1-b455581934c4_1448x820.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 role="img" 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><title></title><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><h2><strong>Why this is hard on the brain</strong></h2><p>This lines up neatly with cognitive load theory.</p><p><a href="https://onlinelibrary.wiley.com/doi/10.1207/s15516709cog1202_4">Sweller&#8217;s classic work</a> on cognitive load focused on problem solving. When too much information has to be held and manipulated at the same time, reasoning suffers. Agents might remove lower-level serial coding work, but they also increase the amount of high-level state you have to evaluate.</p><p>Working memory is limited too. You might have heard about the classic &#8220;seven plus or minus two&#8221; rule. Turns out that was over-optimistic. <a href="https://pubmed.ncbi.nlm.nih.gov/11515286/">Modern cognitive scientists</a> paint a more depressing picture: we can, at best, hold 3-4 things in our head at once and still be able to reason effectively.</p><p>Now, any non-trivial software task involves plenty of moving parts. Even with agents, we still have to decide which parts matter, how they interact, and whether the design still holds together. It&#8217;s a lot more architecture per minute.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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://adamtornhill.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>The interruption problem on steroids</strong></h2><p>We all know that traditional task switching is cognitively expensive. It harms our focus, and hurts performance.</p><p>However, what&#8217;s less known is that self-interruptions tend to be even more disruptive than external ones.</p><p>Coincidentally, agentic coding is like an open invitation for more self-interruption. The agent:</p><ul><li><p>asks a question,</p></li><li><p>produces a diff,</p></li><li><p>gets blocked by a missing tool,</p></li><li><p>fails a test, or</p></li><li><p>suggests a change that looks <em>almost</em> right but touches too much.</p></li></ul><p>Each event pulls you into a new review-verify-steer decision.</p><h2><strong>The AI productivity paradox</strong></h2><p>This also helps explain why the productivity story around AI coding tools is more complicated than the marketing slides suggest.</p><p>One of my <a href="https://arxiv.org/abs/2507.09089">favourite studies</a> gave experienced open-source developers access to AI tools. It was a controlled trial, so half the participants were still coding in the old school way.</p><p>At first glance, the study seemed to confirm the usual story: the developers with AI tools felt faster. Indeed, they claimed so themselves, estimating a 20% speedup. Only problem: they were not. They ended up 19% <em>slower</em> than the non-AI group. Adding insult to Big Tech injury, the study also demonstrates that even expert developers overestimate the AI impact on developer productivity.</p><p>One plausible contributor is self-interruption. Developers get many natural pause points: waiting, reviewing, correcting, etc. Each of those pulls you into a different task.</p><h2><strong>How I try to manage it</strong></h2><p>AI is now an integral part of our work, and we do not want agents to slow down. Speed is kind of their point.</p><p>But we do control when and how we actively interact with AI:</p><ul><li><p>The simplest tip is to keep agent tasks small and iterative enough so that the review fits in your head</p></li><li><p>That includes designing for cognitive resourcefulness: automate everything that can be automated. (You don&#8217;t want to spend time reviewing coding rules, checking test coverage, etc.)</p></li></ul><p>There are also things that I actively avoid doing:</p><ul><li><p><strong>Don&#8217;t review details, verify them.</strong> This was a hard one personally, but we need to accept that we can no longer know every line of code. Again, automation and safeguards are the mechanisms for delivering trust, not manual inspection.</p></li><li><p><strong>Avoid parallel work.</strong> I typically have one long-running agentic maintenance task that I just babysit, and then one focus task. Never more.</p></li></ul><p>That last point is important given the running-twenty-agents-in-parallel hype. I cannot even think about twenty <em>meaningful</em> things to build, and even less so about the resulting cognitive tax of the likely interruptions. It&#8217;s exactly the wrong thing to even consider. At least for humans. (And yes, I understand sub-agents and machine parallelisation. That is not what I&#8217;m objecting to. It is the parallelisation of human attention that does not scale).</p><p>Finally, and this will bring me enemies from the corporate ladder who think software is built by typing: take breaks from your agents. And take those breaks earlier than you think you need them.</p><p>Those breaks are not just recovery. They are also a chance to build <a href="https://adamtornhill.substack.com/i/195207789/developers-in-2027-two-emerging-paths">the skills the new developer role demands</a>. So use those non-coding hours to deepen your domain expertise. A few ways to do that:</p><ul><li><p><strong>Train as an end-user.</strong> This is the single best way towards becoming a domain expert. Master the problem domain.</p></li><li><p><strong>Grab a coffee.</strong> Many of the best ideas come <em>away</em> from the laptop. Your brain needs the occasional change of setting. Under the hood, it keeps operating. (The majority of all brain activity is automated and subconscious). When you relax, your brain delivers its insights that were worked on in the background.</p></li><li><p><strong>Do exploratory testing.</strong> Yes, automation is great, but there&#8217;s no limit to the creative ways we humans can break a system. Make it a challenge.</p></li><li><p><strong>Understand your product metrics and usage patterns.</strong> What features are people using, what are they ignoring, etc. This gives a different perspective on your code. Promise.</p></li><li><p><strong>Get involved in sales.</strong> This one might not be for everyone, but technical sales is a challenging role that gives you a much deeper understanding of where your product needs to be.</p></li></ul><p>The point is to re-invest the time agents save into activities that deepen your expertise while giving your brain a recovery window.</p><p>Agentic coding is still new. But it's becoming increasingly clear that the workflows around agents have to respect human cognitive limits. The future holds more software than ever, and we need to come prepared to build it in a sustainable way.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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">Code for Humans and Machines is a reader-supported publication. Consider to support my writing by subscribing.</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>]]></content:encoded></item><item><title><![CDATA[Coding Is Dead (…But It Still Smells Funny)]]></title><description><![CDATA[The post-AI developer role and skillsets in the future of building software.]]></description><link>https://adamtornhill.substack.com/p/coding-is-dead-but-it-still-smells</link><guid isPermaLink="false">https://adamtornhill.substack.com/p/coding-is-dead-but-it-still-smells</guid><dc:creator><![CDATA[Adam Tornhill]]></dc:creator><pubDate>Sun, 26 Apr 2026 13:03:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QWRC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Just a year ago, it was still easy to dismiss AI coding as a shaky and inaccurate auto-complete. Now it&#8217;s clear to most software professionals that AI is not merely here to stay. It is fundamentally changing how we build software.</p><p>After more than 30 years as a programmer, I no longer code manually. Sometime in October 2025 I went 100% agentic, and I&#8217;m not planning on going back.</p><p>My agentic shift came after decades spent learning various programming languages, tools, and ecosystems. That&#8217;s a massive investment in skills that are now, at least partly, automated.</p><p>So what happens next? Will there even be such a thing as a software developer in a few years? Or will our profession go the way of the lamplighters and horse carriages?</p><h2>This Isn&#8217;t the Same Job Anymore</h2><p>Agentic workflows have moved us way past mere prompting and into something closer to delegation and orchestration. And that gives us a view of what lies ahead.</p><p>In the short term, two forces are pulling in opposite directions:</p><ol><li><p>Automation reduces the need for manual coding, suggesting <em>fewer</em> software people.</p></li><li><p>Yet expanding system complexity increases the need for <em>more</em> builders.</p></li></ol><p>My bet is on the second force exerting the strongest pull. There has yet to be a technological revolution that did not expand the scope of what we build. AI will not shrink software. The future will see more software than ever, as there&#8217;s an infinite &#8212; and growing &#8212; amount of tasks to automate via code.</p><p>The difference compared to earlier seismic shifts is the pace. The industrial revolution took roughly 80 years (1760-1840), giving society time to adapt. This time, we don&#8217;t get generations. We get months.</p><h2>The Illusion of Instant Software</h2><p>You probably see this in your LinkedIn and X feeds. They are filled with stories like building a Linux clone in Visual Basic by chatting to a Claude Code cluster over voice. While taking a bath. No prior coding experience. No deep technical background. Just a prompt and a generous supply of tokens.</p><p>Now, here&#8217;s the reality: Building the first prototype of a product or feature was always the easy part.</p><p>Roughly 95% of the cost of a software product occurs <em>after</em> the initial version is released. Turning a prototype into a stable, reliable, and evolvable system is where the real work starts. Shipping is optional. Maintaining is not.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QWRC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QWRC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!QWRC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!QWRC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!QWRC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QWRC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:872162,&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://adamtornhill.substack.com/i/195207789?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.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_!QWRC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!QWRC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!QWRC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!QWRC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7465e83b-03ac-48e3-a091-8c40a2e954b1_1672x941.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 role="img" 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><title></title><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>Once you have users, you get pressure:</p><ul><li><p>new features,</p></li><li><p>bug fixes,</p></li><li><p>scaling concerns,</p></li><li><p>integration challenges,</p></li><li><p>and a constant need to evolve the system without breaking it.</p></li></ul><p>AI does not remove that complexity. Building successful production software has never been easy, and it won&#8217;t suddenly become trivial. Design, architecture, and what to build &#8212; the hardest parts &#8212; cannot be automated.</p><h2>The Objection: &#8220;AI will handle it eventually&#8221;</h2><p>But wait: did I really say that not everything will be automatable? I did. And that usually gets the same response:</p><blockquote><p>AI is improving rapidly. Soon it will be able to build and maintain complex systems on its own.</p></blockquote><p>Usually stated in a flat, matter-of-fact voice, as if that settles it.</p><p>It&#8217;s an appealing idea. I also believe it&#8217;s flawed&#8212;for at least three reasons:</p><h3>1. We keep raising the bar</h3><p>If we had stuck to the problems of the 1970s, programming would already be trivial. We didn&#8217;t. Instead, we created better tools, languages, and abstractions to take on bigger and more complex problems. AI will likely do the same.</p><p>Tomorrow&#8217;s systems will be even more ambitious.</p><h2>2. Many Real-World Systems aren&#8217;t AI-Ready</h2><p>Most real-world systems simply aren&#8217;t ready for autonomous agents. Long-lived legacy systems are shaped by years of implicit assumptions and accumulated technical debt while still being business critical.</p><p>For an agent to perform well, data quality is key. And in software, code is the data. Most production codebases are inconsistent, under-tested, and full of edge cases that even humans struggle to reason about. Sure, AI is useful on legacy systems, but fully autonomous development remains a pipe dream at best.</p><h3>3. You can&#8217;t bet your career on &#8220;soon&#8221;</h3><p>You just shouldn&#8217;t bet your career on the hopes and promises of &#8220;soon&#8221;. Even if full autonomy eventually becomes possible, the real question is: When?</p><p>We&#8217;ve been hearing that &#8220;AGI is around the corner&#8221; for years. Maybe it is. Most likely it isn&#8217;t. (Coincidentally, the AGI narrative is pushed by people who happen to sell language models...and rely on external funding for them).</p><p>Personally, I&#8217;m not waiting. I&#8217;m preparing for a world where the developer role changes. I&#8217;d rather be early than obsolete.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://adamtornhill.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://adamtornhill.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>Coding is Dead</h2><p>Agents are automating the act of writing code. It&#8217;s easy to feel threatened. Uncertainty about one&#8217;s professional future is a big drain.</p><p>But here&#8217;s the good news: Code has no intrinsic value. It never had. (We just built our careers pretending it did.)</p><p>Code is a means to an end. What matters is what the code enables&#8212;the system, the behavior, the product. And this is where the human developer comes in. Because that human role does not disappear. It shifts.</p><h2>Developers in 2027: Two Emerging Paths</h2><p>I see two emerging and complementary developer roles:</p><p>First we have the <strong>expert generalist builder</strong>. In an AI-first workflow, the expert generalist is responsible for:</p><ul><li><p>deciding what to build</p></li><li><p>deciding how to build it (at the system level)</p></li><li><p>breaking work into meaningful increments that can be delegated to agents</p></li></ul><p>These responsibilities are not new. They have traditionally been split across:</p><ol><li><p>product managers</p></li><li><p>software architects</p></li><li><p>technical leads</p></li></ol><p>What&#8217;s changing is that these three specialist roles are collapsing into a single generalist role. No, it won&#8217;t be an easy job. Each one of those used to pay well in the past. Now one individual has to master them all. But for one salary.</p><p>Alongside that, I also see a second role emerging: <strong>the enabler</strong>.</p><p>The enabler is responsible for the meta-layer of development. The work that makes agentic development effective by:</p><ul><li><p>optimizing build and deployment pipelines</p></li><li><p>capturing constraints and patterns in machine-friendly formats (think: present day SKILLs)</p></li><li><p>improving testability and optimizing coverage</p></li><li><p>refactoring legacy systems to make them AI-friendly</p></li></ul><p>This role is not about shipping features. It is about enabling agents to build features well. As such, the enabler is a vital support role for the expert generalist.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VWuh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VWuh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 424w, https://substackcdn.com/image/fetch/$s_!VWuh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 848w, https://substackcdn.com/image/fetch/$s_!VWuh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 1272w, https://substackcdn.com/image/fetch/$s_!VWuh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VWuh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png" width="1356" height="530" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:530,&quot;width&quot;:1356,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90208,&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://adamtornhill.substack.com/i/195207789?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.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_!VWuh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 424w, https://substackcdn.com/image/fetch/$s_!VWuh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 848w, https://substackcdn.com/image/fetch/$s_!VWuh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.png 1272w, https://substackcdn.com/image/fetch/$s_!VWuh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe082bc9b-2e24-4075-b561-f0798f322f6c_1356x530.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 role="img" 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><title></title><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 two emerging and complementary developer roles.</figcaption></figure></div><h3>But what about all our hard-won knowledge?</h3><p>All your prior knowledge will serve you well in the AI age. Rather, the challenge is to keep on learning. Continuously.</p><p>To be an expert generalist, our learning and purpose needs to shift. Details aren&#8217;t as important as the larger picture. For example, it might be more important to know the type of problems and systems that are a good fit for the Rust language rather than mastering the borrow checker syntax. The former is a strategic tool, the latter a now automatable task.</p><p>Unfortunately, and these are the bad news, the future of development will probably not be for everyone. I met great programmers who code because they love to code. And now those days are gone, with no obvious financial incentive for bringing them back.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2tQ3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2tQ3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 424w, https://substackcdn.com/image/fetch/$s_!2tQ3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 848w, https://substackcdn.com/image/fetch/$s_!2tQ3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!2tQ3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2tQ3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png" width="1456" height="814" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:814,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:620133,&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://adamtornhill.substack.com/i/195207789?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.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_!2tQ3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 424w, https://substackcdn.com/image/fetch/$s_!2tQ3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 848w, https://substackcdn.com/image/fetch/$s_!2tQ3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!2tQ3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff697d02b-da8d-49d6-9d7e-9f75af25cdac_2480x1386.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 role="img" 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><title></title><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">Code &#8212; a distant memory of days past?</figcaption></figure></div><p>But another group of developers are likely to thrive. As much as I loved to code by hand, I enjoy agentic coding even more. To me, code was always about what I could make it do, not syntax, not craft, definitely not the typing. Agents get me there faster.</p><p>My main worries early on were around just problem solving: When machines carry out our execution, how can we still stay in the loop to maintain effective mental models of the problem we&#8217;re working on? You see, problem solving is not a one-way street. It&#8217;s a constant iteration between observing, expressing, and reflecting.</p><h2>Agentic Coding: Supporting Flow</h2><p>Surprisingly, I&#8217;ve found that agents can support and strengthen that flow. In the past, I could easily get sidetracked by secondary tasks. Like restructuring the emerging code. I had an idea in my head, but now I wasn&#8217;t working on it; I was working on supportive and related tasks, but not the core. With agents taking over the details, I find it much, much easier to maintain the high-level thought and iterate on it.</p><p>That said, there&#8217;s a flip side to it.</p><p>Software development is definitely more mentally effortful with agents. </p><p>Maintaining a constant focus is draining, and I find that I can usually only sustain that intense high pace for a couple of hours before needing a break. (Thankfully, I can let a long-running agent make progress while I sip coffee).</p><h2>Final Thought: From Coding to System Design</h2><p>With AI, the developer&#8217;s role shifts from writing code to designing systems that can evolve safely, with agents doing the grunt work. But agents won&#8217;t replace human taste when it comes to deciding what to build.</p><p>Taste is a human quality. And building the right system is going to be key. Faster coding? Not so much. It&#8217;s already a commodity.</p><p>Even if code no longer serves as a moat or job security, strong engineering remains a competitive advantage. Teams that succeed in this shift to agentic development will iterate faster and build better systems. This is where systems thinking and domain expertise come in. Knowing what to build and how to build it matters more than execution.</p><p>Throughout my decades in various software companies, I&#8217;ve seen plenty of promising products fail. Not due to any flawed product ideas, but rather due to buggy, sub-par code preventing organizations to ship when the opportunity was rife.</p><p>If there&#8217;s one truly good thing coming out of the agentic revolution then it&#8217;s this: for many, bad code might become a distant memory of times less enlightened. But mark my words: an AI won&#8217;t set you up for that success on its own. Developers who fail to adopt are likely to ship the same sub-par code, only faster. Because the future of software development will not be less engineering. It&#8217;s <a href="https://adamtornhill.substack.com/p/welcome-to-code-for-humans-and-machines">more engineering at a higher level of abstraction</a>.</p>]]></content:encoded></item></channel></rss>