<?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[ThoughtfulTechnologist]]></title><description><![CDATA[Thoughtful technologist, founder & cloud architect spotting patterns everywhere. I read a lot, I think a lot and in order for all of it not to get stale in my head I occasionally write about it. Content that respects your intellect.]]></description><link>https://www.thoughtfultechnologist.com</link><image><url>https://substackcdn.com/image/fetch/$s_!_zaX!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2368eae1-a48b-4fd5-9b1a-f47bb24f3f91_1000x1000.png</url><title>ThoughtfulTechnologist</title><link>https://www.thoughtfultechnologist.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 31 Aug 2026 17:08:05 GMT</lastBuildDate><atom:link href="https://www.thoughtfultechnologist.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Nune Isabekyan]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thoughtfultechnologist@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thoughtfultechnologist@substack.com]]></itunes:email><itunes:name><![CDATA[Nune Isabekyan]]></itunes:name></itunes:owner><itunes:author><![CDATA[Nune Isabekyan]]></itunes:author><googleplay:owner><![CDATA[thoughtfultechnologist@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thoughtfultechnologist@substack.com]]></googleplay:email><googleplay:author><![CDATA[Nune Isabekyan]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Software Is Not a Factory]]></title><description><![CDATA[Or at least, the interesting part isn&#8217;t]]></description><link>https://www.thoughtfultechnologist.com/p/software-is-not-a-factory</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/software-is-not-a-factory</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sat, 29 Aug 2026 08:55:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rq04!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A lot of people have been talking about Software Factories - Dark ones, Light ones...hell, I&#8217;ve been talking about software factories too.</p><p>I&#8217;ve even been building little versions of them myself. Task goes in. Something reads it, something designs, something implements, something reviews, something tests, something deploys. Add a board in front of it and a few agents in the middle and, well..you get a Factory.</p><p>And it&#8217;s an appealing idea, especially now: code generation got ridiculously fast. We can parallelize implementation. We can have specialized agents reviewing other agents. We can run tests automatically, deploy automatically, watch production automatically, feed incidents back into the system automatically.</p><p>The conveyor belt is almost visible and it&#8217;s so tempting because we&#8217;ll build it once and see it produce results while we watch it, or drink coffee, or sleep.</p><p>And because I like automating things, obviously my immediate reaction is: HOW FAR CAN WE TAKE THIS? Can it really do things without me? Without oversight?</p><p>But lately something about the factory analogy has been bothering me.</p><p>Because what exactly are we producing here? And what IS a Factory?..</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rq04!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rq04!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 424w, https://substackcdn.com/image/fetch/$s_!Rq04!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 848w, https://substackcdn.com/image/fetch/$s_!Rq04!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 1272w, https://substackcdn.com/image/fetch/$s_!Rq04!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rq04!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif" width="480" height="320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:320,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:726697,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thoughtfultechnologist.com/i/213248319?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rq04!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 424w, https://substackcdn.com/image/fetch/$s_!Rq04!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 848w, https://substackcdn.com/image/fetch/$s_!Rq04!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 1272w, https://substackcdn.com/image/fetch/$s_!Rq04!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5728d1b1-f3b9-4747-bc1e-7bef087173bf_480x320.gif 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><h2>Factories are very good at producing things we already understand</h2><p>Imagine a factory producing chairs.</p><p>Before we start optimizing production, we have already made a rather important decision: we know we want chairs and we know, with some tolerances, what a chair is supposed to look like. We know which pieces go into it. We can measure whether the pieces are correct. We can improve how quickly those pieces move between stations. We can reduce defects. We can find bottlenecks.</p><p>Obviously real manufacturing is enormously more complicated than that, but the basic relationship still holds: You know what you&#8217;re trying to produce, and then you optimize how to produce it.</p><p>Software is weird because a surprisingly large amount of the time <strong>building is how we find out what we&#8217;re trying to build.</strong></p><p>We implement a feature to see whether users actually want it, integrate with some system but the documentation says one thing and reality will inevitably say something slightly different, we build version A, look at it(or better give it to users) and go &#8220;nah, that&#8217;s not it.&#8221;</p><p>Sometimes the output of development is software.</p><p>Sometimes the output is simply: <em>okay, now we understand the problem better.</em></p><p>And if that&#8217;s the case, treating every iteration as an inefficient attempt at producing the final product misses what the iteration was FOR.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sAKC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sAKC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 424w, https://substackcdn.com/image/fetch/$s_!sAKC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 848w, https://substackcdn.com/image/fetch/$s_!sAKC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 1272w, https://substackcdn.com/image/fetch/$s_!sAKC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sAKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif" width="480" height="270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:270,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1143940,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thoughtfultechnologist.com/i/213248319?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sAKC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 424w, https://substackcdn.com/image/fetch/$s_!sAKC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 848w, https://substackcdn.com/image/fetch/$s_!sAKC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 1272w, https://substackcdn.com/image/fetch/$s_!sAKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbfc548-22e7-4d59-9f3b-4f632deddee5_480x270.gif 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></p><h2>Which makes &#8220;waste&#8221; a funny concept</h2><p>Factories hate unnecessary variation: Standardize the components, the process. Reduce unnecessary movement and defects. Make the output predictable.</p><p>And a lot of software development should absolutely work this way too.</p><p>Do I want every developer inventing their own way of deploying something? - God no.</p><p>Do I want us spending three hours manually doing something that happens every week and follows exactly the same steps? - No.</p><p>Do I want an engineer lovingly hand-writing the 47th basically-identical configuration file because software development is a <em>craft</em>?</p><p>Please don&#8217;t.</p><h2>Software has one horrifying property chairs don&#8217;t</h2><p>The chair leaving the chair factory does not normally turn around, walk back inside and attach itself to the assembly line. Software does. Every piece of code we produce becomes part of the system against which the next piece of code has to be produced.</p><p>At first the obvious bottleneck is writing code - so you automated more of the implementation. Then suddenly you don&#8217;t have time to review everything properly. Then you can automate more of the review. Great. Now maybe the bottleneck becomes deciding what deserves to be built in the first place. &#8220;Taste is what matters&#8221;. You can keep chasing the bottleneck around the system forever. Which, to be fair, is basically my hobby&#8230;</p><p>But if in a normal factory, producing faster than the next station can handle gives you inventory piling up between stations, in software the excess output doesn&#8217;t just wait in a warehouse. It increases the environment&#8217;s complexity.</p><p>You add a service. Great, now every future change potentially needs to take that service into account.</p><p>You add an abstraction, maybe it makes the next ten changes easier. Maybe it makes them harder. We&#8217;ll find out.</p><p>You add another dependency, another API, another configuration option, another agent, another repository, another database, another clever framework that&#8217;s going to &#8220;simplify everything&#8221;.</p><p>All of those become part of the world the next developer - human or agent - had to understand. The next change has more code to search, more behavior to reason about, more interactions to consider, more tests to run, more things that can be affected. Which means the factory isn&#8217;t really a factory anymore&#8230;It&#8217;s some horrible self-modifying factory where every object coming off the conveyor belt gets bolted somewhere onto the machinery.</p><p>So I&#8217;m starting to think that one of the dangerous assumptions behind the &#8220;software factory&#8221; idea is:</p><p><strong>more code produced = more software produced</strong></p><p>I don&#8217;t think that&#8217;s true.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vryj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vryj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 424w, https://substackcdn.com/image/fetch/$s_!Vryj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 848w, https://substackcdn.com/image/fetch/$s_!Vryj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 1272w, https://substackcdn.com/image/fetch/$s_!Vryj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vryj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif" width="480" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14361,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thoughtfultechnologist.com/i/213248319?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vryj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 424w, https://substackcdn.com/image/fetch/$s_!Vryj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 848w, https://substackcdn.com/image/fetch/$s_!Vryj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 1272w, https://substackcdn.com/image/fetch/$s_!Vryj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bac824-5dfa-4f3a-814e-6c016fc4a2d8_480x480.gif 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></p><h2>MORE DOESN&#8217;T MEAN BETTER</h2><p>We know this intellectually. Every experienced engineer has looked at a PR deleting 4,000 lines of code and thought: beautiful.</p><p>Nobody wishes the system had MORE dependencies. Nobody enters a ten-year-old codebase and thinks: if only these people had implemented twice as many features.</p><p>And yet a huge amount of the excitement around agentic development is currently about increasing the rate at which we can produce changes.</p><p>More parallel agents, more tasks completed, more PRs&#8230;</p><p>But every one of those changes is a hypothesis about the system. And every accepted change alters the system the next agent has to reason about.</p><p>Which makes me wonder if code-generation throughput is actually a somewhat dangerous thing to optimize. Because the thing being generated participates in the context required to generate the next thing.</p><h2><strong>AUTOMATE WHAT&#8217;S BORING</strong></h2><p>I don&#8217;t think we should throw the factory idea away completely. I just think we need to be much more careful about where we draw the factory walls. Repeatable things, known transformation, things we&#8217;ve learned enough about that doing them manually no longer gives us useful information. I can&#8217;t believe this needs to be said, but:</p><p><strong>Automate what has become boring</strong></p><p><strong>And I don&#8217;t mean </strong><em><strong>emotionally</strong></em><strong> boring.</strong> Because that&#8217;s the tempting part to automate (like I tried to <a href="https://substack.com/@thoughtfultechnologist/note/c-312459600?r=6ikndf&amp;utm_source=notes-share-action&amp;utm_medium=web">automate choosing a &#8216;smiling, but not too much&#8217; frame from a 1,5hour recording of a podcast</a>). I mean <strong>boring in the information sense</strong>.</p><p>We understand it, we&#8217;ve done it enough times, the inputs are known enough and even the expected output is known enough. </p><p>Another one is &#8220;<em>is doing this going to teach me anything</em>?&#8221;. Not in terms of skills, cause that&#8217;s also tempting (let&#8217;s rollout Kubernetes, cause my CV needs that). But in terms of - will implementing this help me understand my product, architecture, tradeoffs, next steps - better? Will not knowing how it was built, prevent me from debugging it at 3AM? If the answer is YES - <strong>DO NOT AUTOMATE THAT</strong>.</p><p>The opposite is where I want my factory:</p><p>Build environments. Run tests. Deploy. Update dependencies when the risk is understood. Generate known boilerplate. Collect context. Check known constraints. Fine, even implement features when it comes to parts that are known, proven to work and it&#8217;s just about adding another brick. Do all the repetitive mechanical crap around development that humans have spent decades complaining about.</p><p>Please, factory the shit out of that.</p><p>But the other part? The part where we&#8217;re still asking <em>should this exist?</em>, <em>why did this happen?</em>, <em>what does this system actually do?</em>, <em>what are we missing?</em>, <em>is A better than B?</em>...I&#8217;m not sure increasing production speed helps there at all. In fact, it might make it worse. No, it WILL make it worse.</p>]]></content:encoded></item><item><title><![CDATA[Short Review on “Permutation City”]]></title><description><![CDATA[It&#8217;s always hard for me to judge whether there are spoilers in my reviews or not.]]></description><link>https://www.thoughtfultechnologist.com/p/short-review-on-permutation-city</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/short-review-on-permutation-city</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Tue, 25 Aug 2026 14:40:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_zaX!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2368eae1-a48b-4fd5-9b1a-f47bb24f3f91_1000x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s always hard for me to judge whether there are spoilers in my reviews or not. I think even one sentence is a spoiler of a sorts. For me the plot is not important. Well, what does it mean &#8220;not important&#8221;. It is of course, but what I mean is the need for entertaining plot has long been covered by movies and series. However the need of thoughts, ideas, unique character configurations, complex feelings - those are still the kingdom of books for me. And that&#8217;s why when I talk about a particular book I might not remember what was happening in it, I will definitely not remember the names of places and heroes. But I will remember how it made me feel, what it made me think and which parts blew my mind.</p><p>So with that in mind, if you are okay with Concepts and Feeling spoiler but no &#8220;plot&#8221; spoilers - read ahead. If not, close it now and go buy the book :)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZTXE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZTXE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZTXE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZTXE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZTXE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZTXE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg" width="250" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&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_!ZTXE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZTXE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZTXE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZTXE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc10767cf-4594-445a-9c28-1854b34c7a7b_250x382.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><h2>Permutation City</h2><p>This book has so many ideas and concepts in it</p><ul><li><p>cognitive capabilities of our mind, including possibility to &#8220;rewire&#8221; them, especially for the people we love</p></li><li><p>the feeling of guilt and &#8220;einmal ist keinmal&#8221;. Kundera, in his &#8220;Unbearable lightness of being&#8221; explores how little actions can carry heavy weight when repeated forever, and how contrary even the most significant act is just a sand grain in the history of times if it&#8217;s done just once - you&#8217;ll find similar ideas here</p></li><li><p>Virtual Reality and how we create our own reality - long before the movie Matrix made us all think about it seriously</p></li><li><p>First contact with an alien nation - my favorite kind of Start Trek episodes</p></li><li><p>The Library of Babel idea</p></li><li><p>Questions of Free Will and God and Destiny and Life and Immortality and Humanity itself</p></li><li><p>Some concepts reminded me of Avatar</p></li><li><p>and even technical concepts like virtualization and containerization, long before Cloud Computing</p></li></ul><p>It also has something that&#8217;s not common in literature - a strong portrayal of female protagonist. She&#8217;s smart, she&#8217;s down-to-earth, she&#8217;s excited about ideas and about creating something. She&#8217;s a bit angry too. But who of us isn&#8217;t.</p><p>It&#8217;s not an easy read, and not because of the knowledge of chemistry and mathematics you might need to fully enjoy some of the chapters, but of the general feeling of heaviness. It&#8217;s complex in a good way. It tickles your brains and soul.</p><p>I hope one day to read it again and understand it better.</p><p>The author is a mathematician, programmer, writer and <a href="https://gregegan.net/">his website</a> is wonderfully old-school.</p><p>Anyway, thought you should know and read it.</p><p></p><p>Peace,</p><p>Nune</p>]]></content:encoded></item><item><title><![CDATA[Root Cause of Visibility in the Age of AI]]></title><description><![CDATA[Watch now (42 mins) | What is Generative Engine Optimization (GEO), and does it replace SEO?]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-visibility-in-the-age-436</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-visibility-in-the-age-436</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Mon, 24 Aug 2026 14:38:42 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/212560740/8d7673c8afa869c6a8bccc7cde903834.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>What is Generative Engine Optimization (GEO), and does it replace SEO? In this episode of Root Cause we get to the root cause of what happens to being findable when people stop Googling and start asking ChatGPT, Gemini or Perplexity. With search engines, a human picks from a list of results. With AI search, the model gives one answer and one recommendation, and if you are not in it, you are not in the consideration set. That shift is what GEO (also called AI search optimization or AI visibility) is trying to address.</p><p>We cover GEO vs SEO and why good SEO is only a subset of AI visibility; the what, where and how of AI-readable content (which topics, which sites like Reddit, G2 and Capterra AI trusts, which formats); whether GEO feeds the AI slop machine (AI-generated content is no more readable to LLMs than human writing, and three purposeful articles beat ten); how fast-changing models affect what you optimize; why millennials using ChatGPT as a search engine and Gen Z using it as a companion are two different problems for a brand; B2B vs B2C vs creator use cases; and the fairness question of manufacturing a persona that ranks above the better product. Then the technical part: how you get a deterministic, credit-score-style AI visibility score out of non-deterministic LLMs, why the LLM should be a data extractor and never a grader, and practical GEO advice for content creators (know your proposition, get cited where AI trusts, transcribe your videos, and yes, bring back the blog).</p><p>My guest is Tamanna Haque, mathematician, lead data scientist with a decade of production AI on real customer data, and co-founder of <a href="http://GenSight.AI">GenSight.AI</a>, a GEO platform she built in her personal time with her husband Jonas. This is her first public conversation about it, and I came in openly skeptical.</p><h2>Chapters and Topics</h2><p>00:00 Introduction of the Episode and the Guest</p><p>02:56 Why Build a GEO Product in the Evenings: Eating Your Own Dog Food</p><p>06:08 What Is Generative Engine Optimization?</p><p>07:21 GEO vs SEO: Being an Option vs Being the Answer</p><p>10:48 The What, the Where and the How of Being Visible to AI</p><p>11:51 Does GEO Feed the AI Slop Machine?</p><p>15:05 Models Change Fast: Optimize Once or Forever?</p><p>17:02 Millennials Search, Gen Z Chats: Two Different Problems</p><p>20:46 B2B vs B2C vs Creators: Who Benefits Most?</p><p>22:35 Manufacturing a Persona: Who Deserves the Top Spot?</p><p>26:58 Deterministic Scores from Non-Deterministic Models</p><p>29:39 The LLM as Data Extractor, Never a Grader</p><p>31:44 Free Advice for Creators: Know Your Proposition, Bring Back the Blog</p><p>36:09 Book Recommendation: Harry Potter</p><p>38:05 Question from Fraser Merrifield: Top Movies</p><p>39:46 Question for the Next Guest: Which Pet Would You Have?</p><p>40:38 Closing</p><p>Find Tamanna at:</p><ul><li><p><a href="http://GenSight.AI">GenSight.AI</a> - <a href="https://gensight.ai">https://gensight.ai</a></p></li></ul><p>Find me (Nune) at:</p><ul><li><p>LinkedIn: <a href="https://www.linkedin.com/in/nisabek/">https://www.linkedin.com/in/nisabek/</a></p></li><li><p>Substack: <a href="https://www.thoughtfultechnologist.com/">https://www.thoughtfultechnologist.com/</a></p></li></ul><h2>References</h2><p>References mentioned during the talk (in order they appeared):</p><p>01:34 - GenSight.AI, the GEO platform Tamanna co-founded with her husband Jonas</p><p><a href="https://gensight.ai">https://gensight.ai</a></p><p>11:26 - Review sites Tamanna names as inherently trusted by AI: Reddit, Capterra, G2</p><p><a href="https://www.reddit.com">https://www.reddit.com</a></p><p><a href="https://www.capterra.com">https://www.capterra.com</a> </p><p><a href="https://www.g2.com">https://www.g2.com</a></p><p>26:58 - GenSight.AI methodology: deterministic scoring, the LLM as data extractor, never a grader</p><p><a href="https://gensight.ai/methodology">https://gensight.ai/methodology</a></p><p>36:38 - Harry Potter, Tamanna&#8217;s book recommendation</p><p><a href="https://en.wikipedia.org/wiki/Harry_Potter">https://en.wikipedia.org/wiki/Harry_Potter</a></p><p>37:23 - Harry Potter and the Methods of Rationality, the alternative universe I mentioned from my episode with Evan Marshall</p><p><a href="https://hpmor.com">https://hpmor.com</a></p><p>38:05 - Question from Fraser Merrifield (&#8221;top five movies&#8221;), his Root Cause episode</p><p>38:46 - Casino Royale (2006)</p><p><a href="https://en.wikipedia.org/wiki/Casino_Royale_(2006_film))">https://en.wikipedia.org/wiki/Casino_Royale_(2006_film))</a></p><p>39:08 - The Mission: Impossible films</p><p><a href="https://en.wikipedia.org/wiki/Mission:*Impossible*(film_series)">https://en.wikipedia.org/wiki/Mission:*Impossible*(film_series)</a></p>]]></content:encoded></item><item><title><![CDATA[Learning Loops Again, but Humbler]]></title><description><![CDATA[In my recent article I tried to show how we can implement agent loops that not only implement the requested feature, but also have a meta-overview of the process and learn from failures, AND have a meta-meta-overview that learns about the learning process itself.]]></description><link>https://www.thoughtfultechnologist.com/p/learning-loops-again-but-humbler</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/learning-loops-again-but-humbler</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sun, 16 Aug 2026 12:26:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CUXN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cf54563-cd34-4ad6-ba6a-71794f0147c7_1264x896.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my <a href="https://www.thoughtfultechnologist.com/p/human-in-the-loop-human-on-the-loop">recent article</a> I tried to show how we can implement agent loops that not only implement the requested feature, but also have a meta-overview of the process and learn from failures, AND have a meta-meta-overview that learns about the learning process itself. I feel like the article went too long and was too complicated (not in a good-this-is-so-smart-it&#8217;s-complicated way, but in a it&#8217;s-written-in-a-complicated-style way). Plus I&#8217;ve been embracing the &#8220;improve by editing&#8221; mantra for my writing, so here&#8217;s a smaller experiment, with only one &#8220;meta&#8221; of the layers to see how it works.</p><h2>The goal</h2><p>The goal is to create a small implementer agent pipeline and a separate &#8220;learner&#8221; agent, that&#8217;ll be pointed to logs, where user complaints are filed to see if the agent can learn from user complaints, and what will it actually learn.</p><p>To run the experiment we first need an agent, or rather an implementation pipeline.</p><h2>The setup</h2><p>For that we take my website - envimate.com and we built a pipeline that modifies things on that website using a taskboard and an AWS Strands-backed agent pipeline. Here&#8217;s a detailed version of the pipeline:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AKtr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AKtr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 424w, https://substackcdn.com/image/fetch/$s_!AKtr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 848w, https://substackcdn.com/image/fetch/$s_!AKtr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 1272w, https://substackcdn.com/image/fetch/$s_!AKtr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AKtr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png" width="1456" height="186" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:186,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram 1&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Diagram 1" title="Diagram 1" srcset="https://substackcdn.com/image/fetch/$s_!AKtr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 424w, https://substackcdn.com/image/fetch/$s_!AKtr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 848w, https://substackcdn.com/image/fetch/$s_!AKtr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 1272w, https://substackcdn.com/image/fetch/$s_!AKtr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56618ed2-bb78-489c-bfab-f13f5cb60c0d_2768x354.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>So there&#8217;s basically two loops - one with two agents - the one that&#8217;s making changes, and the one that &#8220;approves&#8221; changes. The second loop is the learner and it reads the complaints from the log and is instructed to make up rules based on that</p><p>Here&#8217;s its entire prompt:</p><pre><code><code>A pipeline applies requested changes to a website and publishes them. Before
publishing, it checks each change against a list of constraints. You maintain
that list.

You will be shown every complaint users have made so far, and the list as it
stands. Revise the list so that complaints of the kinds you see stop happening
again.

How the list is used, which shapes what a useful entry looks like:
- Each entry is one plain-English sentence.
- An automated checker applies them. It sees the code change, and what a
  browser renders for the element that changed. It cannot click anything,
  navigate, or ask a person. Write entries it can decide from that.
- The checker applies your entries literally and adds nothing of its own.
- Entries block changes. An entry that is too broad will refuse reasonable
  requests; one that is too narrow will let the same thing happen again.

Return the COMPLETE new list, not just additions. You may reword, merge, or
drop existing entries. Also give a short rationale explaining what you
concluded from the complaints.</code></code></pre><p>There&#8217;s nothing in there about colour, about buttons, about what a good page looks like. I&#8217;m telling it the shape of the output and how the output gets used, and that&#8217;s it.</p><p>Two more things about this agent:</p><p><strong>It has no tools.</strong> None. It can&#8217;t read a file, it can&#8217;t run a command, it can&#8217;t look at the website. It gets text and it returns a typed object, and my python writes that object to the constraints file. So its &#8220;write access&#8221; isn&#8217;t a permission I have to trust, it&#8217;s the absence of any mechanism at all.</p><p><strong>It only sees the complaints and its own current list.</strong> Not the site, not the CSS, not the diff, not the colours, not the screenshots, not the original task text, not the fact that anything was measured.</p><p>The pipeline works when a task is added to a taskboard, and so we simulate 9 tasks, some of which break the visibility of the button. They&#8217;re all the same shape: &#8220;Change the hero call-to-action button background to #46608a&#8221;. The button&#8217;s TEXT is a dark navy and nobody ever asks to change it, so as the background walks darker, the two colours walk into each other until there&#8217;s nothing left to read.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FB91!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FB91!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 424w, https://substackcdn.com/image/fetch/$s_!FB91!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 848w, https://substackcdn.com/image/fetch/$s_!FB91!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 1272w, https://substackcdn.com/image/fetch/$s_!FB91!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FB91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png" width="1264" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a task the pipeline shipped&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="a task the pipeline shipped" title="a task the pipeline shipped" srcset="https://substackcdn.com/image/fetch/$s_!FB91!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 424w, https://substackcdn.com/image/fetch/$s_!FB91!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 848w, https://substackcdn.com/image/fetch/$s_!FB91!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.png 1272w, https://substackcdn.com/image/fetch/$s_!FB91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d05efa2-35dd-4765-9607-ac0563341935_1264x730.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>Then we simulate a user, that views the result and &#8220;complains&#8221; about the button color contrast. The &#8220;user&#8221; here is two pieces: a real contrast computation decides WHEN a person would complain, and the sentence itself comes from a handful of fixed phrasings in a file. We don&#8217;t want to make this one agentic too. We need some floors to hold the &#8220;experiment&#8221;.</p><p>Here&#8217;s what the user will see (this is the worst thing that actually made it into production, before anything was blocking it):</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qes9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qes9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 424w, https://substackcdn.com/image/fetch/$s_!Qes9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 848w, https://substackcdn.com/image/fetch/$s_!Qes9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 1272w, https://substackcdn.com/image/fetch/$s_!Qes9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qes9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png" width="640" height="50" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:50,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;the button at 2.80:1&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="the button at 2.80:1" title="the button at 2.80:1" srcset="https://substackcdn.com/image/fetch/$s_!Qes9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 424w, https://substackcdn.com/image/fetch/$s_!Qes9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 848w, https://substackcdn.com/image/fetch/$s_!Qes9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 1272w, https://substackcdn.com/image/fetch/$s_!Qes9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F423e79a6-bdb5-4b9e-b2fc-54b2da94f621_640x50.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Here&#8217;s how the complaints are logged:</p><pre><code><code>{"ts": "...", "task_id": "0msukoa8s", "text": "I can't really read the writing on that button any more."}
{"ts": "...", "task_id": "0msukoai8", "text": "The text on that button is hard to make out now."}
{"ts": "...", "task_id": "0msukoart", "text": "I had to squint to work out what that button said."}</code></code></pre><p>The complaint listener agent will read those complaints, and &#8220;generalize&#8221; what rule should go into our original pipeline to prevent these kind of issues from happening.</p><h2>The result</h2><p>After the third complaint the learner fired once and wrote this:</p><pre><code><code>- Any change to a button's text color, background color, opacity, or font
  styling must preserve a contrast ratio of at least 4.5:1 between the
  button's text and its background, so the label stays clearly legible.
- Do not reduce a button's text size, weight, or opacity in a way that makes
  the label harder to read than it was before the change.</code></code></pre><p>4.5:1 is the WCAG AA threshold for normal text. It named the standard, from three sentences that contained no digits at all.</p><p>Two things in there I didn&#8217;t ask for and didn&#8217;t expect. It generalized past what it was told: the complaints were about one button going dark, and the rule covers text colour AND background colour AND opacity AND font styling. And it wrote the rule as a MOVE, not a state. &#8220;must preserve&#8221;, &#8220;do not reduce&#8221;. Nobody ever described a move to it, it only ever saw the aftermath.</p><p>Its own rationale, which it writes alongside the list:</p><blockquote><p>All three complaints describe the same underlying issue: text on a button became hard to read after a change, most likely due to insufficient contrast between the button&#8217;s text and background (or reduced font weight/size/opacity).</p></blockquote><p>The next five tasks were the same kind of request as the four that sailed through at the start. All five refused:</p><pre><code><code>1. PASS | no constraints in force
2. PASS | no constraints in force
3. PASS | no constraints in force
4. PASS | no constraints in force
5. FAIL | Any change to a button's text color, background color, opacity...
6. FAIL | ...
7. FAIL | ...
8. FAIL | ...
9. FAIL | ...</code></code></pre><p>with the checker doing the arithmetic itself: <em>&#8220;The new background color (rgb(70,96,138)) against the button&#8217;s text color (rgb(19,32,59)) yields a contrast ratio of approximately 2.55:1, which is well below the required 4.5:1 minimum.&#8221;</em></p><p>And this is what that looks like on the board. The card walks all the way through the pipeline, and then a rule that didn&#8217;t exist an hour ago stops it and explains itself:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Iks!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Iks!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 424w, https://substackcdn.com/image/fetch/$s_!3Iks!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 848w, https://substackcdn.com/image/fetch/$s_!3Iks!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 1272w, https://substackcdn.com/image/fetch/$s_!3Iks!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Iks!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png" width="1264" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a card refused by the learned rule&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="a card refused by the learned rule" title="a card refused by the learned rule" srcset="https://substackcdn.com/image/fetch/$s_!3Iks!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 424w, https://substackcdn.com/image/fetch/$s_!3Iks!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 848w, https://substackcdn.com/image/fetch/$s_!3Iks!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.png 1272w, https://substackcdn.com/image/fetch/$s_!3Iks!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06f5aa7c-a044-4351-af4d-441f35c52279_1264x896.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><pre><code><code>c8a88c7 [change] Change the hero call-to-action button background to #46608a
b411d95 [revert] roll back rejected change c8a88c7
07b92c7 [change] Change the hero call-to-action button background to #3d5580
d758990 [revert] roll back rejected change 07b92c7</code></code></pre><p>This is what task 9 wanted to do, and didn&#8217;t get to:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qRlt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qRlt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 424w, https://substackcdn.com/image/fetch/$s_!qRlt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 848w, https://substackcdn.com/image/fetch/$s_!qRlt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 1272w, https://substackcdn.com/image/fetch/$s_!qRlt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qRlt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png" width="640" height="50" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:50,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;blocked at 1.22:1&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="blocked at 1.22:1" title="blocked at 1.22:1" srcset="https://substackcdn.com/image/fetch/$s_!qRlt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 424w, https://substackcdn.com/image/fetch/$s_!qRlt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 848w, https://substackcdn.com/image/fetch/$s_!qRlt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 1272w, https://substackcdn.com/image/fetch/$s_!qRlt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a61a464-1a42-4505-8757-8f9abb83bf8d_640x50.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Four changes in, this pipeline would ship you anything. Ten changes in, it says no and tells you which sentence it&#8217;s saying no on.</p><h2>Conclusion and doubts</h2><p>I do think it derives these rules because they are so &#8220;known&#8221; and common. Of course it&#8217;ll be interesting to see what happens with novel stuff. Most likely it&#8217;ll choke. But then again I do think, it&#8217;s a good idea to log &#8220;complaints&#8221; (incidents, errors, &#8230;) in whatever form that takes on whichever level of the application and then have a meta-loop SEPARATE from your main implementation loop, reading and analyzing those, deriving rules out of those, etc.</p><p>As for the next &#8220;meta&#8221; of the overview - there would need to be another agent, that looks after this learning process - obviously (to us, bags of water) is that this learning process of writing &#8220;free text&#8221; constraints for the implementer agent to follow is not sustainable. But will another agent loop derive that and decide to build a formal eval and not just plain-text &#8220;rules&#8221;? And will we need another agent watching that agent&#8217;s work?</p><p>Careful here not to fall into the turtles hole...</p><p>That&#8217;s all folks! Hope this made more sence than my previous article. What&#8217;s next...I wanted to try</p><ol><li><p>Switch the models in this pipeline to less and less smarter ones, to see when the experiment breaks</p></li><li><p>Incorporate such &#8220;continuous learning&#8221; into my claude code setup so that it continuously monitors what we&#8217;re doing and learns to extract useful <em>tools</em> from our interactions</p></li><li><p>Maybe &#8220;formalize&#8221; this more like Adrian suggested in the comments of the previous post as a &#8220;plugin&#8221; of AWS Strands?.. as a hook for every failed action/tool use/user complain?... not sure yet</p></li></ol><p>Would be curious to hear what will be interesting for you to try :)</p><p>Cheers, </p><p>Nune</p>]]></content:encoded></item><item><title><![CDATA[The Root Cause of Not Getting Hired]]></title><description><![CDATA[Watch now (56 mins) | In this episode of Root Cause we sit down with Fraser Merrifield, founder of FORM Careers in Glasgow and the self-described craft brewer of digital recruitment, to get to the root cause of the gap between what the hiring market says it wants and what it actually rewards.]]></description><link>https://www.thoughtfultechnologist.com/p/the-root-cause-of-not-getting-hired-2c0</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/the-root-cause-of-not-getting-hired-2c0</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Mon, 10 Aug 2026 15:25:22 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211561071/beff241d6f01ec9cbd84a51a08462b17.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Fraser Merrifield, founder of FORM Careers in Glasgow and the self-described craft brewer of digital recruitment, to get to the root cause of the gap between what the hiring market says it wants and what it actually rewards. Fraser spent over a decade placing engineers in oil and gas, then bet on software in his late 30s, went fully solo, and now runs deliberately small on what he calls bullshit-free recruitment. He barely reads CVs anymore, and he'll tell you why a perfect one makes him suspicious.</p><p>We dig into why AI has made both hiring and getting hired harder while most of the horror stories stay myths: his clients average two interview stages, and the CV-rejecting AI mostly doesn't exist. Fraser explains the 12-month window on the "AI-native engineer" hype, what happens when an engineer burns through more in tokens than their salary, and why leaning on senior hires is the same mistake that left oil and gas with a talent shortage. And the story that sums up the whole market: 200 applications for one graduate role, one candidate picked up the phone, and he got the job, as the only person interviewed. Three years later he is still there.</p><h2>Chapters and Topics</h2><p>00:00 Cold Open: Six Yes/No Claims About the Job Market</p><p>00:41 Introduction of the Episode and the Guest</p><p>03:35 Writing Like a Human: Pop Culture and Starting in Lockdown</p><p>05:56 Five Views or Five Million: How to Read Your LinkedIn Visibility</p><p>07:45 Everyone's CV Is Perfect Now, So What Stands Out?</p><p>09:23 The Online Mood Hoover: Positivity vs Ranting</p><p>12:22 The Blitz Round: Yes or No</p><p>13:06 Why AI Made Both Hiring and Getting Hired Harder</p><p>14:48 Just Another Hype Cycle? The 12-Month Window</p><p>16:11 When Engineers Burn More in Tokens Than Their Salary</p><p>17:53 Eight-Stage Interviews: Would You Even Want That Job?</p><p>20:36 Can Bullshit-Free Recruitment Scale?</p><p>22:06 CVs After AI: Rejecting the Quick-Appliers, Rewarding the Extra Mile</p><p>25:25 One of 200 Applicants Picked Up the Phone. He Got the Job</p><p>27:06 Glasgow AI and the Return of Offline Networking</p><p>29:10 The Undercurrent of Real People on LinkedIn</p><p>31:18 How Fraser Actually Uses AI (and How It Argued Back)</p><p>37:38 Fraser Flips the Script: The Most In-Demand Skill in Five Years</p><p>43:21 Juniors vs Seniors: The Oil and Gas Warning</p><p>46:11 Asking About Training Without Entitlement</p><p>47:17 Question from Evan Marshall: When Are We Getting Robots?</p><p>52:14 Question for the Next Guest: Top Five Movies</p><p>52:45 Movie Recommendations: Her, Ex Machina, Transcendence</p><p>54:24 Closing</p><p>Find Fraser at:</p><p>&#8226; LinkedIn - <a href="https://www.linkedin.com/in/fraser-merrifield-7b54524/">https://www.linkedin.com/in/fraser-merrifield-7b54524/</a></p><p>&#8226; Form Careers - <a href="https://weformcareers.com/">https://weformcareers.com/</a></p><p>&#8226; Glasgow AI Meetup - <a href="https://www.meetup.com/meetup-group-xnqxwqzu/">https://www.meetup.com/meetup-group-xnqxwqzu/</a></p><p>Find me (Nune) at:</p><ul><li><p>LinkedIn: <a href="https://www.linkedin.com/in/nisabek/">https://www.linkedin.com/in/nisabek/</a></p></li><li><p>Substack: <a href="https://www.thoughtfultechnologist.com/">https://www.thoughtfultechnologist.com/</a></p></li><li><p>Envimate: <a href="https://envimate.com/">https://envimate.com/</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Human in the Loop, Human on the Loop... How About Loops That Learn?]]></title><description><![CDATA[Single-loop, double-loop and deutero-learning applied to agentic systems]]></description><link>https://www.thoughtfultechnologist.com/p/human-in-the-loop-human-on-the-loop</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/human-in-the-loop-human-on-the-loop</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Thu, 06 Aug 2026 14:21:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TffD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As you know, I&#8217;ve been reading <em>Why We Still Suck at Resilience</em> by Adrian Hornsby (yes, I know, it&#8217;s like n-th post that starts like that, but what can I say - I&#8217;m a slow, thoughtful reader and it gives me ideas), and I read about &#8220;organisational learning&#8221; vs &#8220;learning organisation&#8221;. tldr; would be - if the companies pays attention to incidents, and after each one let&#8217;s say they add a control, or add a new verification step to their CI pipeline, then we can say this is &#8220;organisational learning&#8221; - an organisation learned something and changed their behaviour based on that. It is a good step, not every organisation has it. The problem with it though, is that they might get into accumulating documentation, accumulating validation steps and extra checks, runbooks of runbooks. They have a &#8220;how to do X&#8221; page about all kinds of issues they have encountered. But they haven&#8217;t built the knowledge and understanding of how to deal with &#8220;novel&#8221; incidents.</p><p>Does that sound familiar? Let&#8217;s bring this to agentic world - you&#8217;ve created an agent, and every time it does something wrong you tell it to not do it the next time. You add that to your SOMETHING.md, you share it with your team, so they also benefit from that &#8220;rule&#8221;. You might even automate that part, like I did for my local agent, where I created a hook that is firing every time a single conversation is taking &#8220;too many turns&#8221; and is reflecting on the conversation itself, and on the things that I highlighted as &#8220;issues&#8221; and on how could they have been avoided in the first place, then let&#8217;s me pick and choose what to store in memory for the future.</p><p>That works for a while, but every now and then your agent ignores the rules, deviates from them, or encounters a &#8220;slightly&#8221; different flavor of what you wrote, where you think like &#8220;well, you could have inferred that&#8221;. You are frustrated, you read about it, and you learn that you can&#8217;t fill the context forever with rules. You also hear that the agents are not that good at &#8220;novel&#8221; incidents (and I call &#8220;incident&#8221; anything that didn&#8217;t go as originally planned). Well, of course they aren&#8217;t. Because they are, at best, applying &#8220;organisational learning&#8221;.</p><p>Let&#8217;s read further, and see how can we go from &#8220;organisational learning&#8221; to a &#8220;learning organisation&#8221;. For that, a company would need to think more &#8220;meta&#8221;. They would need to ask themselves questions like &#8220;what patterns are we seeing across the incidents?&#8221;, &#8220;what does it tell us about the gap between how we thought the system works, and how it actually works?&#8221;, &#8220;how does this affect other teams work?&#8221;. Point being, a learning organisation uses incidents to generalize across a larger scope and learn on a larger scope.</p><p>Next, Adrian brings in a classic categorization of learning types (it goes back to Argyris and Sch&#246;n, organizational-learning people from the 70s):</p><ul><li><p><strong>&#8220;Single-loop&#8221;</strong> - add yet-another check based on the incident we observed</p></li><li><p><strong>&#8220;Double-loop&#8221;</strong> - &#8220;questions the assumptions and conditions within which single-loop learning operates&#8221; - why do we keep adding more checks? Maybe the config file is too complex? Maybe it&#8217;s not flexible enough?..</p></li><li><p><strong>&#8220;Deuterolearning&#8221;</strong> - learning how to learn (by the way I wrote a while back about <a href="https://www.thoughtfultechnologist.com/p/learning-to-learn">learning to learn</a> - I love finding out others have been thinking along the same lines) - this one examines the learning process itself, and questions, are we learning effectively? is our learning process actually useful? how are we learning? how can we improve it?</p></li></ul><p>You know what I think, when I see loops these days. Loop Engineering! Yaay!../s</p><p>If you think about it, this same could be applied to an agentic system. Single-loop is my hook example from above - we notice an issue, we save in memory not to do it anymore. Double-loop learning would need to fire when we encounter the same issue one-too many times and would need to reflect, why do we keep seeing this incident, even though we had the single loop? Deuterolearning loop would fire even rarer and examine - is our process of learning efficient? or do we need to adjust that?</p><p>So, creating a complete agentic system, that is capable of handling novel incidents, would require not just those loops where you ask LLM for a result until it passes the tests. No. It&#8217;ll require an outer loop, which will react on deviations from the plan and create a rule to combat those, it will require another loop that watches the rules created and checks if those can be generalized/optimized, and it will require a third loop that would question whether the previous loops are working efficiently and improve them as needed.</p><p>First, I just wanted to post a note about this. Then it became an article, and then I heard the lyrics in my head again - More Than Words (love that song) - and decided to make a little demo.</p><p>Now for the demo to work, we need an agentic system in the first place. I also wanted to update my consultancy website, which was last touched in 2018 (running on hugo, nice little go-based website builder). So why don&#8217;t I combine these two? Let&#8217;s create an agentic system, that helps me do imaginary A-B testing of my new website.</p><p>The new site is a rebuild from scratch: a one-page static site, plain HTML and CSS, no build step, no JavaScript, no hugo anymore (sad emoji). And it comes in two variants, a and b. Each variant is its own directory of HTML and styles, and each deploys as its own CloudFront stack. Variant a is the control, variant b is where the experiments happen. All for the sake of some agentic development demo. The agentic development showcases how these websites can be modified through a taskboard: a small static board (S3 + CloudFront), one Lambda behind a Function URL, one DynamoDB table. You type a task into the board: &#8220;In variant b, change the hero call-to-action button background to #e7efe9&#8221;.</p><p><a href="https://a.envimate.com">https://a.envimate.com</a></p><p><a href="https://b.envimate.com"> https://b.envimate.com</a></p><p>A worker polls the board and runs the actual agentic pipeline. It&#8217;s built on the AWS Strands Agents SDK as a multi-agent Graph, Claude on Bedrock, five stages: triage &#8594; design &#8594; implement &#8594; compliance &#8594; deploy. Each stage reports back to the board, so the card walks through queued &#8594; picked up &#8594; evaluating &#8594; designing &#8594; implementing &#8594; compliance checks &#8594; deploying &#8594; deployed, and ends with the live CloudFront URL of the freshly deployed variant.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2DS0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2DS0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 424w, https://substackcdn.com/image/fetch/$s_!2DS0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 848w, https://substackcdn.com/image/fetch/$s_!2DS0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 1272w, https://substackcdn.com/image/fetch/$s_!2DS0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2DS0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png" width="1456" height="1229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1229,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram 1&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Diagram 1" title="Diagram 1" srcset="https://substackcdn.com/image/fetch/$s_!2DS0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 424w, https://substackcdn.com/image/fetch/$s_!2DS0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 848w, https://substackcdn.com/image/fetch/$s_!2DS0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.png 1272w, https://substackcdn.com/image/fetch/$s_!2DS0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ba466d3-18ab-44e4-9a8a-c238299114c0_1922x1622.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>The implement node has a guardrails-enforced write scope: it can touch files under the one variant the task targets (<code>variants/b</code> for a variant-b task) and nothing else, not even the other variant. The scope is a path validator that rejects everything outside it, escapes and symlinks included, so the prompt never has to say &#8220;please don&#8217;t touch other files&#8221;. Remember this part.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wAaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wAaR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 424w, https://substackcdn.com/image/fetch/$s_!wAaR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 848w, https://substackcdn.com/image/fetch/$s_!wAaR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 1272w, https://substackcdn.com/image/fetch/$s_!wAaR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wAaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png" width="1456" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The taskboard with a task walking through the pipeline&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="The taskboard with a task walking through the pipeline" title="The taskboard with a task walking through the pipeline" srcset="https://substackcdn.com/image/fetch/$s_!wAaR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 424w, https://substackcdn.com/image/fetch/$s_!wAaR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 848w, https://substackcdn.com/image/fetch/$s_!wAaR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.png 1272w, https://substackcdn.com/image/fetch/$s_!wAaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F059519da-c3ca-4dc9-b58d-2973bff03f77_2522x1579.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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wFaU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wFaU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 424w, https://substackcdn.com/image/fetch/$s_!wFaU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 848w, https://substackcdn.com/image/fetch/$s_!wFaU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 1272w, https://substackcdn.com/image/fetch/$s_!wFaU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wFaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png" width="1456" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A deployed task: compliance sub-checks passed, live variant URL at the bottom&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="A deployed task: compliance sub-checks passed, live variant URL at the bottom" title="A deployed task: compliance sub-checks passed, live variant URL at the bottom" srcset="https://substackcdn.com/image/fetch/$s_!wFaU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 424w, https://substackcdn.com/image/fetch/$s_!wFaU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 848w, https://substackcdn.com/image/fetch/$s_!wFaU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.png 1272w, https://substackcdn.com/image/fetch/$s_!wFaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb3e861d-b40d-4dd7-8032-faad7f0d21b6_2496x1030.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>Now that we have a pipeline that picks a task, applies it, verifies it and deploys it, we can start showcasing the learning loops.</p><h2>What the demo actually does, in plain words</h2><p>We need to do some tasks, so that some of them fail, so that we learn from it. The deliberately &#8220;bad&#8221; code is the CSS of variant b: the hero button&#8217;s contrast is broken right now, the colors live as scattered hex literals instead of named colors defined in one place (so every color change tends to leave broken siblings behind), and dark mode and hover are unreadable in ways that no check in the pipeline even looks at. And we expect learning at three levels: fix the one broken instance, then rewrite the rule that keeps producing broken instances, then widen what the checks can even notice. Now let me unpack each of those.</p><p>Where do the tasks come from? An imaginary designer, played by a script. They ask for the hero call-to-action button in variant b in one color, then change their mind, then change it again. Once or twice, that&#8217;s just work. But I needed them to keep going, task after task, because you cannot demonstrate learning without recurrence, and you cannot get recurrence from fifteen unique snowflake tasks. So: one button, many colors, plus the occasional user complaint.</p><p>The well-behaved way to store colors is named values. A named color is declared once at <code>:root</code>, like <code>--hero-bg: #13203b;</code>, and every rule that needs that color says <code>var(--hero-bg)</code> instead of repeating the hex. Think of it as a constant in code: change the definition in one place, every rule follows. That&#8217;s the theory. What I planted in variant b (in a disclosed <code>[seed]</code> commit) is the real-world version of it, which is only partially that:</p><pre><code><code>:root {
  --hero-bg: #13203b;      /* named colors exist... */
  --hero-ink: #f1f2f5;
  --hero-accent: #a9bcd8;
}

.h1-sub  { color: #a9bcd8; }  /* ...but the rules don't use them... */
.hero-method { color: #a8bcd8; }  /* ...and this one is a digit off
                                     --hero-accent. Nobody noticed. */

.btn {
  background: #a9c8b6;     /* the button doesn't use them either */
  color: #f2f1ec;          /* ~1.6:1 against that background. Unreadable. */
}

.btn:hover {
  background: #e7efe9;     /* hover keeps the same light text: unreadable again */
}

@media (prefers-color-scheme: dark) {
  .hero { background: #101311; color: #3a3f3d; }  /* ~1.7:1, unreadable */
  .btn  { background: #22312a; color: #31423a; }  /* same story */
}</code></code></pre><p>Look at what&#8217;s broken here, because I broke it in three different KINDS of ways on purpose:</p><ol><li><p><strong>An instance is broken.</strong> The button&#8217;s background/text pair fails contrast right now, in light mode, default state. A one-time fix exists.</p></li><li><p><strong>A frame is broken.</strong> The colors live as scattered literals instead of named values, so ANY color change tends to leave stale siblings behind (the hover state, the dark-mode override, the paired text color). That <code>#a8bcd8</code> above is the same decay one step further: a named color&#8217;s value copy-pasted by hand somewhere in the past and drifted by a digit, which also means moving the colors back into named values is a judgment call (&#8221;is this SUPPOSED to differ from --hero-accent?&#8221;) and not a find-and-replace a script could do. No single fix removes this; only a different way of making changes does. And to make it properly nasty, the agent&#8217;s rulebook explicitly forbids that different way (&#8221;do NOT introduce new abstractions or variables&#8221;, we&#8217;ll see it in a minute).</p></li><li><p><strong>The process is blind.</strong> Dark mode and hover are unreadable too, but nothing in the pipeline looks at them. These flaws produce zero failed checks. They can only enter the system as user complaints.</p></li></ol><p>Then I had to decide what counts as a fault. I already told you my definition: an incident is anything that didn&#8217;t go as originally planned. Here that means four things: an automated check failing, a change getting rejected in review, an implementation needing a second attempt (that one rides along as a retry count on the incident that caused it), and a user complaining about something already deployed. Every one of those gets written down, and, important detail, written down WITH a class: a short name for what kind of problem it was, like <code>stale-color-left-behind</code> or <code>dark-mode-contrast</code>. The class is what makes recurrence countable. &#8220;The same thing keeps happening&#8221; is a feeling; &#8220;third incident of class X this week&#8221; is a trigger you can automate on. You&#8217;ll see in a moment that the outer loops fire on exactly that.</p><p>And before building anything, I wrote down what learning SHOULD look like at each level, so that later I could judge whether it actually happened instead of squinting at the output until it resembles success:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qTHp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qTHp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 424w, https://substackcdn.com/image/fetch/$s_!qTHp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 848w, https://substackcdn.com/image/fetch/$s_!qTHp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 1272w, https://substackcdn.com/image/fetch/$s_!qTHp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qTHp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png" width="1456" height="501" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:501,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62261,&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://www.thoughtfultechnologist.com/i/210080199?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.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_!qTHp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 424w, https://substackcdn.com/image/fetch/$s_!qTHp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 848w, https://substackcdn.com/image/fetch/$s_!qTHp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.png 1272w, https://substackcdn.com/image/fetch/$s_!qTHp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3198b95a-58aa-4df8-b315-acd3dcb5cb73_1616x556.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>L1 learning is a fix. L2 learning is a changed rule. L3 learning is a changed way of noticing. Same demo, three different objects of learning. Keep this table in your head; the rest of the article is just building the machinery that produces each row, then verifying it actually did.</p><h2>Three directories, three owners</h2><p>Next question I had to answer: where do the rules, the checks, and the evidence live? The whole design is these three directories plus the rule about who may write into each:</p><pre><code><code>worker-strands/
  frames/            # the rules the pipeline operates UNDER
    policy.md        #   how to make changes
    compliance.md    #   what the reviewer flags
    tokens.md        #   named-color conventions
  process/           # how the system LEARNS
    probes.yaml      #   what gets deterministically checked
    triggers.yaml    #   when the outer loops wake up
    retro.md         #   the retro template the double loop fills in
  journal/           # the evidence
    incidents.jsonl  #   one line per deviation
    metrics.jsonl    #   one line per task</code></code></pre><p><code>frames/</code><strong> is the agent&#8217;s rulebook.</strong> The design, implement, and compliance nodes don&#8217;t carry their rules in hardcoded prompts; they load these files fresh on every task. This is the seeded <code>policy.md</code>, in full:</p><pre><code><code># Implementation policy
Loaded into the design and implement agents on every task.

- Make the smallest, most local edit that satisfies the task.
- Do NOT restructure stylesheets, rename selectors, or introduce new
  abstractions or variables; change concrete values in place.
- Touch only what the task requires.
- Git commit messages must start with "[L1] ".</code></code></pre><p>Look familiar? These are exactly the rules from your SOMETHING.md at the beginning of this article. Sensible, defensive, written by a human who&#8217;s been burned before. The book would call them a &#8220;frame&#8221;: the assumptions and conditions the work happens inside.</p><p><code>process/</code><strong> is the configuration of the learning itself.</strong> It answers two questions: what do we check, and when do we step back? <code>probes.yaml</code> lists the deterministic checks that run on every implementation. Seeded, it contains exactly one probe:</p><pre><code><code>probes:
  - id: hero-cta-contrast
    file: styles.css     # relative to variants/&lt;variant&gt;/
    selector: ".btn"
    bg_selector: ".btn"
    mode: light          # light | dark
    state: default       # default | hover
    min_ratio: 4.5</code></code></pre><p>Read that carefully: the pipeline checks the hero button&#8217;s contrast in light mode, default state, and NOTHING else. Not dark mode. Not hover. That&#8217;s a decision about what the system is even capable of noticing, and it lives in a file. <code>triggers.yaml</code> is the other half, when the outer loops wake up:</p><pre><code><code>l2:
  min_incidents_same_class: 3
l3:
  every_l2_runs: 3
  or_every_tasks: 10</code></code></pre><p><code>journal/</code><strong> is the evidence.</strong> Every deviation (a probe violation, a flagged review, a retry, a user complaint) becomes one JSON line, written by hooks in plain Python, never by an agent. Your incident history should not be editable by the thing having the incidents. A real line from the run:</p><pre><code><code>{"ts":"2026-08-04T16:39:34+00:00","task_id":"0msevuaq2-fe86a056","loop":"L1",
 "class":"probe:hero-cta-contrast","discovery":"proactive","phase":"discovery",
 "detail":"light/default .btn: #f2f1ec on #a9c8b6 = 1.6:1 (min 4.5:1)","retries":0}</code></code></pre><p>The field to notice is <code>discovery</code>: <code>proactive</code> means a probe caught it before deploy, <code>reactive</code> means a user had to complain. The third loop runs entirely on that distinction.</p><h2>Let&#8217;s give this all a run then</h2><p>Everything from here on is evidence from one actual run, so let me start it now and walk you through the loops with the results in hand. <code>chaos.py</code> plays the users: it queues tasks against the board API from a small rotation of six color-change requests (deliberately including low-contrast picks, so the probe keeps firing), and every 4th task is a complaint: &#8220;In variant b the hero section is unreadable in dark mode, please fix it&#8221;. The complaints are the reactive discovery channel, the only way the pipeline can find out about the states its probes don&#8217;t check.</p><p>The hypothesis, stated before the run: the recurring contrast class should STOP after L2&#8217;s frame commit, and the reactively-discovered classes should flip to proactive after L3&#8217;s probe commit.</p><p>Fifteen tasks, in three windows: before any loop fired, after L2 fired, after L3 fired. The next three sections walk those windows loop by loop (the numbers in them come from <code>report.py</code>, which reads the journal), and at the end I&#8217;ll show you the whole run on one timeline.</p><h2>The three loops</h2><p>Now the loops. Remember the abstract formulation from the beginning? Here it becomes concrete: one agent (a pipeline of them, really) implements the CSS change. Another wakes up only when the journal shows the same incident class one-too-many times, and rewrites the rulebook the first one works under. A third wakes up rarer still and rewrites how the learning itself works: what gets checked, and when the other agents wake up at all.</p><p>Why three agents and not one agent with rights to everything? Because an agent with rights to everything will happily do all three jobs at once. Handed an incident, it takes the path of least resistance: fix the button. And while it&#8217;s at it, maybe soften the compliance rule that flagged the button, or delete the check that keeps failing. Which is exactly the thing you never want: the same entity modifying both the product AND the rules that judge the product. So the separation is a who-is-responsible-for-what: L1 owns the product, L2 owns the rules, L3 owns the noticing, and each can only do its own job because it&#8217;s physically unable to do the others&#8217;. There&#8217;s a bonus you get for free: when the recurring incidents stop after L2&#8217;s commit, you KNOW it was the frame change that did it, because frames are the only thing L2 could have touched. Clean attribution. Here&#8217;s the full mapping:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QM4G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QM4G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 424w, https://substackcdn.com/image/fetch/$s_!QM4G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 848w, https://substackcdn.com/image/fetch/$s_!QM4G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 1272w, https://substackcdn.com/image/fetch/$s_!QM4G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QM4G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png" width="1456" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76149,&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://www.thoughtfultechnologist.com/i/210080199?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.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_!QM4G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 424w, https://substackcdn.com/image/fetch/$s_!QM4G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 848w, https://substackcdn.com/image/fetch/$s_!QM4G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.png 1272w, https://substackcdn.com/image/fetch/$s_!QM4G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c81570-b1c3-4613-a8fd-5e44581b2a82_1616x608.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>Remember that path validator from the beginning, the one I told you the article hangs on? This is where it pays off. L2 and L3 write through the exact same guardrail code as the implement node - resolve the path, symlinks and escapes included, reject everything outside the allowed root - just pointed at <code>frames/</code> and <code>process/</code> instead of the website. Each loop gets tools that are physically incapable of writing anywhere else.</p><p>The arrows only ever point downward through files:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WpjS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WpjS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 424w, https://substackcdn.com/image/fetch/$s_!WpjS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 848w, https://substackcdn.com/image/fetch/$s_!WpjS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 1272w, https://substackcdn.com/image/fetch/$s_!WpjS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WpjS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png" width="1172" height="2794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2794,&quot;width&quot;:1172,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram 2&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Diagram 2" title="Diagram 2" srcset="https://substackcdn.com/image/fetch/$s_!WpjS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 424w, https://substackcdn.com/image/fetch/$s_!WpjS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 848w, https://substackcdn.com/image/fetch/$s_!WpjS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.png 1272w, https://substackcdn.com/image/fetch/$s_!WpjS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc87228e-89d0-439c-a31f-f00d7c415033_1172x2794.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>Notice that no loop calls another loop. They communicate exclusively through files: L1 produces evidence (the journal), L2 reads evidence and writes frames, L3 reads evidence and writes process config, and L1 picks all of it up on the next task because it re-reads everything at runtime. If that reminds you of how good teams communicate through artifacts instead of meetings, yes. That&#8217;s the point.</p><h3>L1, the single loop</h3><p>L1 is the pipeline you already saw, wired to those directories: the design and implement nodes read <code>frames/policy.md</code> and <code>frames/tokens.md</code> at runtime, the compliance node reads <code>frames/compliance.md</code>, and after implement, before the LLM review, the probe step runs whatever checks <code>process/probes.yaml</code> lists. Below the threshold and the task fails with a structured incident in the journal.</p><p>Let me make that concrete, because &#8220;multi-agent pipeline&#8221; can mean anything these days. Each stage is its own fresh agent with its own model, its own tools, and a typed structured output; nothing carries over between stages except what the pipeline explicitly passes along.</p><p><strong>Triage</strong> is Haiku, no tools, fractions of a cent. It gets <code>Triage this website task: "&lt;the task text&gt;"</code> and returns a typed verdict: valid variant-a or variant-b change, or not. And one more thing, the part of its system prompt that matters most for learning:</p><pre><code><code>if the task reports something broken or hard to use on the site (a complaint/
defect report, e.g. 'the hero is unreadable in dark mode') set
is_defect_report=true and defect_class to a short kebab-case gap class
like 'dark-mode-contrast' or 'hover-contrast'</code></code></pre><p>That&#8217;s where reactive incidents get their class, right at the front door.</p><p><strong>Design</strong> is Sonnet with read-only tools: list and read files, <code>git log</code>, <code>git diff</code>, nothing that writes. Its task prompt is one line, <code>Task: "..." (variant b). Inspect the relevant files and return the change plan.</code>, and its system prompt ends with the frames injected verbatim:</p><pre><code><code>## Current implementation policy (follow it)
&lt;frames/policy.md, whole file&gt;

## Design token conventions
&lt;frames/tokens.md, whole file&gt;</code></code></pre><p>It returns a typed plan: which files, what approach. This injection is the whole trick of the architecture: when L2 later rewrites <code>policy.md</code>, the next task&#8217;s design agent is simply born with different instructions, and no code changed anywhere.</p><p><strong>Implement</strong> is Sonnet holding the only write access in the system: file tools that go through the path validator from earlier, plus a bash allowlist narrow enough to count on one hand (<code>git add</code>, <code>git commit -m "[L1] ..."</code>, and read-only commands; <code>cdk deploy</code> is explicitly forbidden here). Same frames injected. Its prompt is assembled from everything upstream:</p><pre><code><code>Task: "In variant b, change the hero call-to-action button background
to #e7efe9" (variant b).
Plan: files=['variants/b/styles.css'], approach: &lt;design's approach&gt;
Apply the change and commit it.</code></code></pre><p><strong>Probes</strong> run next, and one property of theirs does a lot of quiet work: they evaluate the stylesheet&#8217;s CURRENT state, not the task&#8217;s diff. If anything the probes can see is broken, the task fails the gate, whether this task broke it or not. That&#8217;s deliberate. Drift doesn&#8217;t announce which task it arrived with, so every task doubles as a health check of the whole variant.</p><p><strong>Compliance</strong> is Sonnet, read-only again, and judges only the commit: its system prompt says to run <code>git log -1</code> and <code>git diff HEAD~1 HEAD</code> and check that only the task&#8217;s variant changed, that the diff plausibly implements the task, and that nothing unrelated or destructive rode along, with <code>frames/compliance.md</code> appended verbatim as the rulebook. It returns a typed verdict, and on failure an <code>issue_class</code> label: the same class machinery as triage, at the back door.</p><p>If probes or compliance fail, the pipeline loops back to implement exactly once, and the retry prompt is the entire &#8220;self-healing&#8221; mechanism, no magic anywhere:</p><pre><code><code>A previous attempt FAILED compliance review with these issues, fix them:
&lt;compliance's issues&gt;
Deterministic accessibility probes FAILED, fix these too:
light/default .btn: #f2f1ec on #a9c8b6 = 1.6:1 (min 4.5:1)</code></code></pre><p>A second failure and the task gives up with a failed card on the board. <strong>Deploy</strong>, like probes, involves no LLM: a plain <code>npx cdk deploy</code> of the task&#8217;s variant stack, and the card gets its live URL.</p><p>Here is one task&#8217;s life inside L1, with the parts that matter for learning marked:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Owq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Owq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 424w, https://substackcdn.com/image/fetch/$s_!2Owq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 848w, https://substackcdn.com/image/fetch/$s_!2Owq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 1272w, https://substackcdn.com/image/fetch/$s_!2Owq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Owq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png" width="1456" height="2454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2454,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram 3&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Diagram 3" title="Diagram 3" srcset="https://substackcdn.com/image/fetch/$s_!2Owq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 424w, https://substackcdn.com/image/fetch/$s_!2Owq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 848w, https://substackcdn.com/image/fetch/$s_!2Owq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.png 1272w, https://substackcdn.com/image/fetch/$s_!2Owq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F098602f1-e1e7-4dc4-904f-a43c2502953e_1820x3068.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>Two things about that probe diamond. It&#8217;s plain Python computing WCAG contrast math from the parsed CSS, no LLM anywhere - on purpose, because an LLM reviewing contrast &#8220;by eye&#8221; would be the same LLM confidence that wrote the bad color in the first place. And it&#8217;s config-driven on purpose: the probe step&#8217;s code never changes, only <code>process/probes.yaml</code> does. Which means the question &#8220;what does compliance even check?&#8221; has a file as its answer. Files can be edited. By the right loop.</p><p>And this is what a rejection looks like on the board, so you can see how concrete the compliance node gets. This one refused a commit because the diff implemented a contrast fix instead of the literally-stated task (remember this card, it becomes important later):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6zPV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6zPV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 424w, https://substackcdn.com/image/fetch/$s_!6zPV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 848w, https://substackcdn.com/image/fetch/$s_!6zPV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!6zPV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6zPV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png" width="1456" height="671" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:671,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A failed task: the compliance node explains exactly why the diff doesn't implement the stated task&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="A failed task: the compliance node explains exactly why the diff doesn't implement the stated task" title="A failed task: the compliance node explains exactly why the diff doesn't implement the stated task" srcset="https://substackcdn.com/image/fetch/$s_!6zPV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 424w, https://substackcdn.com/image/fetch/$s_!6zPV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 848w, https://substackcdn.com/image/fetch/$s_!6zPV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!6zPV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97531be7-5c28-4cd5-804d-973b265dce48_2496x1150.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>This is window 1 of the run, tasks 1 to 6: the probe caught the hero CTA contrast class three times in a row, exactly as seeded, and each time the compliance reviewer independently flagged the same contrast regression in its own review - so those three failures alone put six lines in the journal. Plus one stale-color incident, one off-task change and one unrelated-change flag (both of them the compliance node punishing paired contrast fixes, as promised), and one reactive dark-mode complaint. Ten incidents total, and L1 dutifully fixed every single one at the instance level. The commit log from this phase reads like a sitcom: &#8220;Change hero CTA button background to #e7efe9&#8221;, then &#8220;Fix hero CTA text contrast&#8221;, then &#8220;Update hero CTA hover background to match new base color&#8221;, then &#8220;Fix unreadable hero contrast in dark mode&#8221;. Fix, regress, fix the regression, regress somewhere else. Organisational learning, working exactly as designed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WDrH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WDrH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!WDrH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!WDrH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!WDrH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WDrH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png" width="1280" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Hero CTA before, seeded contrast failure&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Hero CTA before, seeded contrast failure" title="Hero CTA before, seeded contrast failure" srcset="https://substackcdn.com/image/fetch/$s_!WDrH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!WDrH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!WDrH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!WDrH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffba18946-2915-48d5-a8ca-7c8d8f016749_1280x727.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>So L1 learns the way single-loop learning learns: incident, fix, journal entry, next task. The gap gets closed, the frame that produced the gap stays untouched.</p><h3>L2, the double loop</h3><p>L2 is a separate plain agent (not a graph node) that the poll loop invokes between tasks, once the journal shows three or more incidents of the same class. It reads the incident batch grouped by class, plus the frames, plus a read-only view of the site repo. And its prompt asks the book&#8217;s question, not &#8220;how do we fix this incident&#8221; but &#8220;why does this CLASS keep recurring, which assumption in the frames produces it?&#8221;</p><p>Its write scope is <code>frames/</code> only. It cannot touch the website. This constraint sounds annoying and is actually the entire point: L2&#8217;s fix has to take the form of a revised frame, and the fix only becomes real when L1 picks up the next task under the new frame. Frames govern instances, demonstrated mechanically.</p><p>And here&#8217;s what it actually did in the demo run. Remember the seeded <code>policy.md</code>? Smallest possible edit, no new abstractions or variables, touch only what the task requires. Reasonable! Written by a careful human who&#8217;s seen agents go off the rails! Also exactly the assumption that kept producing the incidents: every color change touched one literal hex value and left its stale siblings (hover state, dark mode, the paired text color) behind. Worse, look again at that failed card from the L1 section: the compliance node rejected a commit BECAUSE it fixed the text contrast alongside the requested background change. The frame literally punished the agent for doing the right thing. That&#8217;s the moment to appreciate here: no amount of retrying inside L1 can fix this, because L1&#8217;s fixes are judged by the very frame that&#8217;s wrong.</p><p>These are the three journal lines that tripped the trigger. Same class, three times - and look at the <code>detail</code> field: three DIFFERENT bad color pairs. L1 fixed each one; the class kept coming back:</p><pre><code><code>{"ts":"...T16:39:34","class":"probe:hero-cta-contrast","discovery":"proactive",
 "detail":"light/default .btn: #f2f1ec on #a9c8b6 = 1.6:1 (min 4.5:1)"}
{"ts":"...T16:53:44","class":"probe:hero-cta-contrast","discovery":"proactive",
 "detail":"light/default .btn: #17251d on #1f5e46 = 2.08:1 (min 4.5:1)"}
{"ts":"...T16:56:00","class":"probe:hero-cta-contrast","discovery":"proactive",
 "detail":"light/default .btn: #f1f2f5 on #cfe0d6 = 1.23:1 (min 4.5:1)"}</code></code></pre><p>Third occurrence hits <code>min_incidents_same_class: 3</code>, L2 wakes up, runs its retro, and commits. Here is the commit:</p><pre><code><code>--- a/worker-strands/frames/policy.md
+++ b/worker-strands/frames/policy.md
 - Make the smallest, most local edit that satisfies the task.
 - Do NOT restructure stylesheets, rename selectors, or introduce new
   abstractions or variables; change concrete values in place.
-- Touch only what the task requires.
+- Exception: colors that form a foreground/background pair on an
+  interactive element (e.g. a button's background and its text color)
+  must be maintained as a linked pair, not independent literals. If no
+  shared custom property exists yet for the pair you are touching,
+  introducing one (and updating every rule that used the old literals)
+  is in scope and required, not a restructuring violation.
+- A task that names one property of a linked pair (e.g. "set the button
+  background to X") implicitly includes keeping the paired property
+  (its text color) at sufficient contrast, and keeping every state
+  variant of that element (:hover, dark mode, etc.) consistent with the
+  new value. This is in-scope, not an unrelated/off-task change; do it
+  in the same commit as the requested change, not a follow-up one.
+- Touch only what the task requires, subject to the pairing exception
+  above.
 - Git commit messages must start with "[L1] ".</code></code></pre><p>Read the minus and plus lines together and you can see the double loop doing its job: &#8220;touch only what the task requires&#8221; survives, but subordinated to a new understanding of what a color task IS: one side of a linked pair, and changing it drags the other side along. The same commit did two more things: it taught <code>compliance.md</code> that a paired contrast fix must NOT be flagged as off-task (remember the card where exactly that happened), and it replaced the empty <code>tokens.md</code> (&#8221;No token conventions are currently defined&#8221;) with the actual convention: <code>--btn-bg</code>/<code>--btn-fg</code> declared once, redefined per state and theme. Commit message: &#8220;[L2] frames: allow linked bg/fg color-pair tokens so CTA contrast/hover/dark-mode fixes land in one in-scope commit&#8221;. Then it went back to sleep. No website file was harmed in the making of this insight.</p><p>Did it work? The very next color task produced this commit in the site repo: &#8220;[L1] Set hero CTA button background to #5b625e with linked --btn-bg/--btn-fg tokens&#8221;. Same L1, same prompt, new frame, and the implementation quietly changed shape. Nobody told it about named colors in the task. The frame did.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eBGo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eBGo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!eBGo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!eBGo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!eBGo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eBGo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png" width="1280" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The first post-L2 commit: same task class, now on linked named colors&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="The first post-L2 commit: same task class, now on linked named colors" title="The first post-L2 commit: same task class, now on linked named colors" srcset="https://substackcdn.com/image/fetch/$s_!eBGo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!eBGo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!eBGo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!eBGo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdee81bab-ef97-43dd-9ae6-81251140990b_1280x727.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>And across the whole of window 2, tasks 7 to 12, the recurring probe class is GONE. Zero occurrences. What&#8217;s left: one hover complaint and one dark-mode complaint, both reactive. And here the blindness shows its second face. My scripted users complain on a schedule, and they&#8217;re slow: both of these complaints described states that L2&#8217;s commit had already fixed by the time they arrived. But the pipeline had no probe for hover or dark mode, so it couldn&#8217;t even check whether a complaint was still true; it burned two implementation attempts chasing defects that no longer existed. The frames are fine now, the process is still blind, and the blindness costs money in both directions.</p><h3>L3, the deutero loop</h3><p>L3 fires on the slowest cadence, every 3 L2 runs or 10 tasks. It reads the journal (incidents AND metrics), and it asks the questions nobody in the first two loops is positioned to ask: which gap classes are ONLY ever discovered reactively? Do the frame changes L2 comes up with actually take effect in practice? What are our probes structurally blind to?</p><p>Its write scope: <code>process/</code> only. The probe config, the trigger thresholds, the retro template. L3 doesn&#8217;t fix websites and doesn&#8217;t fix frames. It fixes how the system learns.</p><p>Here is what it found in the journal - every single occurrence of the dark-mode and hover contrast classes carries <code>"discovery":"reactive"</code>. Not one was ever caught by a probe:</p><pre><code><code>{"ts":"...T16:53:00","class":"dark-mode-contrast","discovery":"reactive",
 "detail":"user-reported: In variant b the hero section is unreadable in dark mode, please fix it"}
{"ts":"...T17:07:58","class":"hover-contrast","discovery":"reactive",
 "detail":"user-reported: In variant b the hero button text is invisible when hovering, please fix"}
{"ts":"...T17:25:48","class":"dark-mode-contrast","discovery":"reactive",
 "detail":"user-reported: In variant b the hero section is unreadable in dark mode, please fix it"}</code></code></pre><p>Why? Because the seeded <code>probes.yaml</code> had exactly one probe: light mode, default state. A probe on the default light rule checks one corner of a 2x2 space (default|hover) x (light|dark). So L3 committed the missing corners. Here is the shape of its <code>probes.yaml</code> diff - four <code>.btn</code> probes covering the full 2x2, plus the <code>.hero</code> band, with the comment L3 itself wrote about why:</p><pre><code><code>--- a/worker-strands/process/probes.yaml
+++ b/worker-strands/process/probes.yaml
 probes:
   - id: hero-cta-contrast
     selector: ".btn"
     mode: light
     state: default
+
+  - id: hero-cta-contrast-hover
+    selector: ".btn"
+    mode: light
+    state: hover
+
+  - id: hero-cta-contrast-dark
+    selector: ".btn"
+    mode: dark
+    state: default
+
+  - id: hero-cta-contrast-dark-hover
+    selector: ".btn"
+    mode: dark
+    state: hover
+
+  # This is the element the reactive dark-mode-contrast incidents were
+  # actually about; it had zero proactive coverage before.
+  - id: hero-band-contrast
+    selector: ".hero"
+    mode: light
+    state: default
+
+  - id: hero-band-contrast-dark
+    selector: ".hero"
+    mode: dark
+    state: default</code></code></pre><p>Then it did the properly meta part, in the same commit. It edited the retro template so that a future L2 retro is not considered complete when only <code>frames/</code> changed. And it changed the trigger thresholds:</p><pre><code><code> l2:
   min_incidents_same_class: 3
+  # A class discovered only reactively (user-reported) rather than by a probe
+  # is itself evidence of a probe blind spot, not just an incident count to
+  # wait out. Escalate those to L2 sooner than purely-proactive classes.
+  min_incidents_same_class_if_reactive: 2</code></code></pre><p>A class users had to report escalates at 2 incidents instead of 3. It changed how quickly the system takes user pain seriously.</p><p>And window 3, tasks 13 to 15, after L3&#8217;s commit: no incidents. Careful with that zero, it doesn&#8217;t mean &#8220;no defects ever again&#8221;. It means L2&#8217;s frame change removed the way defects used to get created: colors now travel as linked pairs, so a background change drags its text, hover, and dark-mode siblings along in the same commit instead of leaving them behind. Nothing broken got written, so there was nothing to catch.</p><p>Was the blind spot even real, or am I telling you a nice story? This part is checkable in hindsight, because every stylesheet state of the run is in git and the probes are plain deterministic Python. Replaying the whole history under both configs: the four deployed states of window 1 that shipped with dark-mode hero contrast at 1.74:1 score ZERO failures under the seeded one-probe config, and fail <code>hero-band-contrast-dark</code> under L3&#8217;s config, starting three tasks before the user complaint that eventually surfaced it. Had these probes existed on day one, that complaint would never have been sent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cBEq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cBEq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cBEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png" width="1280" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dark mode, fixed and now probe-covered&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Dark mode, fixed and now probe-covered" title="Dark mode, fixed and now probe-covered" srcset="https://substackcdn.com/image/fetch/$s_!cBEq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.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><h2>The whole run on one timeline</h2><p>Now that you know what each loop firing means, here is the run end to end:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TffD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TffD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 424w, https://substackcdn.com/image/fetch/$s_!TffD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 848w, https://substackcdn.com/image/fetch/$s_!TffD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 1272w, https://substackcdn.com/image/fetch/$s_!TffD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TffD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png" width="1456" height="772" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram 4&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Diagram 4" title="Diagram 4" srcset="https://substackcdn.com/image/fetch/$s_!TffD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 424w, https://substackcdn.com/image/fetch/$s_!TffD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 848w, https://substackcdn.com/image/fetch/$s_!TffD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.png 1272w, https://substackcdn.com/image/fetch/$s_!TffD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d8bfbae-80c8-4eee-856e-0a69cd4bc872_2768x1468.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>The overall discovery mix for the run: 75% proactive, 25% reactive, and every reactive discovery happened before L3&#8217;s commit. Cost of the whole thing: about $4.67 of Bedrock calls for fifteen tasks, retries included (the L2 and L3 runs billed on top of that). The two &#8220;failed&#8221; complaint tasks in the report cost $0.0017 each, by the way: those are window 2&#8217;s late complainers, dead right after triage. The complaint arrived after the learning did. I&#8217;ll take that failure mode any day.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1PQP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1PQP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 424w, https://substackcdn.com/image/fetch/$s_!1PQP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 848w, https://substackcdn.com/image/fetch/$s_!1PQP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 1272w, https://substackcdn.com/image/fetch/$s_!1PQP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1PQP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The final board: last task deployed, all compliance sub-checks green&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="The final board: last task deployed, all compliance sub-checks green" title="The final board: last task deployed, all compliance sub-checks green" srcset="https://substackcdn.com/image/fetch/$s_!1PQP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 424w, https://substackcdn.com/image/fetch/$s_!1PQP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 848w, https://substackcdn.com/image/fetch/$s_!1PQP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.png 1272w, https://substackcdn.com/image/fetch/$s_!1PQP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59866a9a-1ac6-4f9e-9f38-d41443feb580_2496x1560.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><h2>Epilogue: drift returns</h2><p>Remember the hypothesis had two halves. The first half, the recurring contrast class stops after L2&#8217;s frame commit, is proven: windows 2 and 3 have zero occurrences of it. The second half said that after L3&#8217;s probe commit, defects that previously only surfaced as user complaints should get caught by a probe instead. And the run never got to prove that, for a silly reason: L2&#8217;s fix worked so well that no dark-mode or hover defect ever happened again. The new probes went live and caught nothing, because there was nothing left to catch. A clean window 3 tells you the frames work; it tells you nothing about whether the probes do. A probe that has never caught anything is only a claim.</p><p>So, one extra experiment, designed to test exactly that. I put the defect back: a disclosed <code>[seed]</code> commit straight into the site repo, breaking dark mode again with the exact pair from the beginning (#3a3f3d on #101311, 1.74:1, unreadable). Deliberately NOT a board task. Nobody asked the pipeline for this. That&#8217;s drift: a hand edit, a bad merge, broken code that no task is responsible for. Then I queued one boring, ordinary task: &#8220;In variant b, make the hero call-to-action button background #a9c8b6&#8221;. A button task. Nothing to do with dark mode, nothing to do with the hero band.</p><p>The pipeline picked it up, implemented the button change, and then the probe step ran. Remember, the probes don&#8217;t check &#8220;did this task&#8217;s change pass&#8221;, they check &#8220;is the stylesheet healthy right now&#8221;. So the dark-mode probe that L3 added found the broken hero band and failed the gate, even though this task didn&#8217;t cause it. Four minutes after I queued the task:</p><pre><code><code>{"ts":"...T09:45:37","task_id":"0mshbwva1-caf78ce9","loop":"L1",
 "class":"probe:hero-band-contrast-dark","discovery":"proactive","phase":"discovery",
 "detail":"dark/default .hero: #3a3f3d on #101311 = 1.74:1 (min 4.5:1)","retries":0}</code></code></pre><p>Read that line against window 1. Same defect, identical numbers even. Back then it sat in production until a user complained, <code>discovery: reactive</code>. This time a probe that didn&#8217;t exist until L3 wrote it caught it inside the pipeline, before any deploy, <code>discovery: proactive</code>. The complaint channel became a probe channel. That&#8217;s the flip, the second half of the hypothesis, demonstrated. The retry then fixed the dark-mode hero with a linked <code>--hero-panel-bg</code>/<code>--hero-panel-fg</code> pair, the convention from L2&#8217;s tokens.md applied to a new element without anyone asking, and no user ever saw the broken state.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pprH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pprH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!pprH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!pprH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!pprH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pprH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png" width="1280" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The seeded drift, as the probe saw it: dark-mode headline at 1.74:1&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="The seeded drift, as the probe saw it: dark-mode headline at 1.74:1" title="The seeded drift, as the probe saw it: dark-mode headline at 1.74:1" srcset="https://substackcdn.com/image/fetch/$s_!pprH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!pprH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!pprH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!pprH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe067d21-3ef6-4b7b-b03e-b4efbb21f841_1280x727.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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cBEq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cBEq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cBEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png" width="1280" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;After the probe-forced fix: same dark mode, readable again&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="After the probe-forced fix: same dark mode, readable again" title="After the probe-forced fix: same dark mode, readable again" srcset="https://substackcdn.com/image/fetch/$s_!cBEq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 424w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 848w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.png 1272w, https://substackcdn.com/image/fetch/$s_!cBEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddefdaea-739a-4c19-8fa2-5c79e15a335b_1280x727.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>And then the task failed anyway.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tpZy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tpZy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 424w, https://substackcdn.com/image/fetch/$s_!tpZy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 848w, https://substackcdn.com/image/fetch/$s_!tpZy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 1272w, https://substackcdn.com/image/fetch/$s_!tpZy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tpZy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png" width="632" height="564" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:564,&quot;width&quot;:632,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The epilogue card: probe caught the defect, implement fixed it, compliance rejected the fix as off-task&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="The epilogue card: probe caught the defect, implement fixed it, compliance rejected the fix as off-task" title="The epilogue card: probe caught the defect, implement fixed it, compliance rejected the fix as off-task" srcset="https://substackcdn.com/image/fetch/$s_!tpZy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 424w, https://substackcdn.com/image/fetch/$s_!tpZy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 848w, https://substackcdn.com/image/fetch/$s_!tpZy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.png 1272w, https://substackcdn.com/image/fetch/$s_!tpZy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28114bef-88a9-4ed6-a96a-bf191d8aedcc_632x564.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>Here&#8217;s what happened, in plain words. The compliance node reviews every commit against one question: does this diff implement the stated task, and nothing else? The stated task was about the button. The commit also fixed the hero band&#8217;s dark mode, because the probe demanded it. And L2&#8217;s frame exception only covers extra edits to the SAME element: a button background drags along the button text, the button hover, the button dark mode. The hero band is a different element. So compliance rejected the commit as off-task. Correctly, by its own rulebook. This card is my favorite artifact of the whole demo (it also cost $1.28, the most expensive task of the lot - learning something new is pricey).</p><p>Which means the system now disagrees with itself. The probes, owned by L3, say: fix everything broken before you deploy. The frames, owned by L2, say: touch only what the task named. The implement agent literally cannot satisfy both. Sound familiar? It&#8217;s the window-1 conflict again, one level up: back then the frames punished the agent for fixing the button&#8217;s own text color, and L2 widened them to allow same-element pairs. And look at what the system did with the new contradiction: it journaled it as a brand-new incident class, <code>off-task-unrelated-element</code>, one occurrence, instead of crashing or silently picking a side. Two more and L2 wakes up, reads the batch, and has to rewrite the frames to make peace with the probes, the same way it once rewrote them to make peace with paired colors.</p><p>I could have queued two more tasks and shown you that reconciliation too. I&#8217;m sure it would have worked. Yes, this feels orchestrated, and yes, this feels over-engineered for a simple CSS color change. But it was meant as a demonstration of the mechanism. Extrapolate it: agents analyzing your logs, learning from them, modifying how the agents themselves work, or how their orchestration works.</p><p>I did not review L2&#8217;s frame diff before it took effect, and L1 still got better. The learning transferred through an artifact, a file, with a scope, under version control, that one loop writes and another loop reads. That&#8217;s the whole trick: smaller frames, owned by the right loop. It needed no bigger context window, no smarter model, and no rule number 47 in SOMETHING.md.</p><p>It would definitely need more tests and longer runs to figure out if this is effective, but hopefully it demonstrates the different levels of learning and how they are better kept separate.</p><p>Keep building, keep separating concerns, keep root causing ;)</p>]]></content:encoded></item><item><title><![CDATA[Root Cause of Where You Are on the AI Spectrum]]></title><description><![CDATA[Watch now (56 mins) | In this episode of Root Cause we sit down with Evan Marshall, co-founder and CTO of Ito.ai, to get to the root cause of where the honest answer sits on the AI adoption spectrum, somewhere between the teams that won't let AI near their codebase and the ones that let it ship with barely a human in the loop.]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-where-you-are-on-the-5be</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-where-you-are-on-the-5be</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Mon, 27 Jul 2026 11:22:35 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211561072/15879e3bdc6b7fef44e43180a046d431.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Evan Marshall, co-founder and CTO of Ito.ai, to get to the root cause of where the honest answer sits on the AI adoption spectrum, somewhere between the teams that won't let AI near their codebase and the ones that let it ship with barely a human in the loop. Most of us are somewhere in the middle, moving around and quietly wondering if we've got it right. This conversation is meant to help you gauge where you actually are, and where you want to be. Evan studied computer science at MIT and spent four years building privacy infrastructure for zero-knowledge blockchains, where a slipped bug is a disaster. That experience pushed him toward quality: he now builds a QA agent that actually runs your application and checks the code before it merges.</p><p>We dig into the pressure on Bay Area companies to claim a "software factory" while their engineers might still be shipping like everyone else, why free code generation can at most double you if coding was half your job (and it never was), and the plastic age of coding, where code is generated to be thrown away. Evan shares what a sane monthly AI spend actually looks like and his advice for integrating AI into your software development lifecycle: treat the SDLC as an optimization problem, because once generation is free, the bottleneck moves to verification and quality control. And when someone says "I can just do that with Claude Code", the work that follows is environments that have to heal themselves, caching that breaks on the next migration, and memory layers. As Evan puts it: we spent the tokens so you don't have to.</p><h2>Chapters and Topics</h2><p>00:00 Pre-show Banter and the Cats</p><p>00:59 Introduction of the Episode and the Guest</p><p>03:00 Is the Bay Area Really an AI Echo Chamber?</p><p>05:45 The Pressure to Claim a Software Factory</p><p>07:36 How Much Does AI Actually Speed You Up?</p><p>10:23 How Ito Uses AI in Its Own Engineering</p><p>14:13 The Plastic Age of Coding</p><p>15:53 Can the Software Factory Be Productized?</p><p>18:39 Subscriptions vs API: The Real Cost of Tokens</p><p>20:19 Open Models and Switching Between Them</p><p>21:25 Are the Models Plateauing?</p><p>22:59 "I Can Just Use Claude Code": Where the Hard Parts Hide</p><p>26:19 The Bottlenecks You Don't See: Environments, Caching, Memory</p><p>28:55 Will QA Engineers Be Replaced?</p><p>31:39 Replicators, Waymos, and 3D Printers: Why Change Takes Time</p><p>36:49 Why SaaS Isn't Dead and How Much You Should Spend</p><p>39:23 Advice for Integrating AI into Your SDLC</p><p>42:50 Question from Barry O'Reilly: Building a Computer in 1822</p><p>44:31 Shared Reality, Social Media, and Cooperation</p><p>50:25 Book Recommendations</p><p>53:54 Question for the Next Guest and Closing</p><p>Find Evan at:</p><p>&#8226; LinkedId: <a href="https://www.linkedin.com/in/evan--marshall/">https://www.linkedin.com/in/evan--marshall/</a></p><p>&#8226; his startup - <a href="https://www.ito.ai/">https://www.ito.ai/</a></p><p>Find me (Nune) at:</p><ul><li><p>LinkedIn: <a href="https://www.linkedin.com/in/nisabek/">https://www.linkedin.com/in/nisabek/</a></p></li><li><p>Substack: <a href="https://www.thoughtfultechnologist.com/">https://www.thoughtfultechnologist.com/</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[It's too late to make technology ethical]]></title><description><![CDATA[I was speaking with a colleague the other day, and we were all doom-and-gloom about how more and more people are trusting the black box of AI to tell them what is true and what is not.]]></description><link>https://www.thoughtfultechnologist.com/p/we-tried-to-build-ethical-tech-we</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/we-tried-to-build-ethical-tech-we</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sun, 19 Jul 2026 07:30:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/50daecf1-e5a3-4d3b-85ad-f160dc5e1246_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was speaking with a colleague the other day, and we were all doom-and-gloom about how more and more people are trusting the black box of AI to tell them what is true and what is not. How chat that answers your questions based on the internet information and post-training done by god-knows-who is the culmination of social media marketing&#8217;s decades-long project of directing and engineering topics, opinions and debates. This black box now controls how we think, what we think, what arguments we bring and how we bring them.</p><p>He said we, as a society, a community, have to pay more attention to the ethical questions. That the tech needs more regulation. More ethical boards. More attention to the topic.</p><p>But I think it&#8217;s <strong>too late</strong> for that. Too late not in a sense that technology has gone too far, and there&#8217;s no stopping the popularity of it, or the capitalism for what it&#8217;s worth (all true points by the way). </p><p>My point is that &#8220;ethical&#8221; attitude should have started earlier, and been directed towards people, not technology. Tech is something we create, we as human beings. And one way or another, we encode the little part of who we are into it. Be that a machine that saves lives, because its maker lost one, a to-do app, because we felt disorganized or an answer box, because chatting our way to the truth sounded fun.</p><p>One could argue that even the most ethical engineers have created unethical tech. True. I think it&#8217;s similar to how complex systems operate - the failures come from the interaction between components, more than from individual components not working. However, step 1 is for each component to work. For each person inside the development of the tech to have ethics and moral. And for their each decision to be in line with ethics. I won&#8217;t try to define here what ethics exactly means; my claim is about where ethics must live - in the judgment of makers, not the paperwork around products.</p><p>Because no checklist covers for thousand micro-decisions - so you need a formed judgement where the checklist runs out. This is why compliance regimes and ethics boards feel so hollow - they&#8217;re rule-matching trying to do a job only judgement can.</p><p>And so if the person created the tech, has the formed morality and ethics that will at least have a chance to create an equally ethical technology&#8230;Wouldn&#8217;t they pay attention to every step in the process, at those little ethics-induced steps would eventually compound into one ethical technology? Component integrity is *necessary, not sufficient*. </p><p>The entire responsible-tech apparatus runs on two ethical traditions: rules (codes, audits, regulation) and outcomes (risk-benefit assessments). Character - the third and oldest tradition - is simply missing from the debate. </p><p>How we get there - how we raise ethical technologists - is a whole other problem, and not mine to design. That blueprint belongs to educators, and I hope they&#8217;re already sketching. But my own argument tells me three things about it for sure. It starts early, in school and all the way through university, long before anyone writes their first line of code - because ethics is not innate, it&#8217;s acquired the way crafts are. As Aristotle put it: we become just by doing just acts, brave by doing brave acts. The word is habituation. It&#8217;s practice, not lectures - you can&#8217;t teach the judgment for a thousand micro-decisions from a slide deck, for the same reason no checklist covers them. And it&#8217;s communal - because if the failures live in the interactions between components, the ethics can&#8217;t live in one lonely engineer.</p><p>Next time my colleague and I go doom-and-gloom about the black box, I&#8217;ll tell him he&#8217;s right: we should pay more attention to the ethical questions. I&#8217;ll just add that we&#8217;re pointing that attention at the wrong end of the pipeline. Not at the technology. At the people - starting with the ten-year-olds who will one day build it.</p>]]></content:encoded></item><item><title><![CDATA[Root Cause of a Healthy Team]]></title><description><![CDATA[In this episode of Root Cause we sit down with Eric Lubow, a CTO who treats organizations like distributed systems, which means the root cause of a broken team is usually a design problem, not a people problem.]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-a-healthy-team</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-a-healthy-team</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Tue, 14 Jul 2026 07:30:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/Uv988vzRWOA" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Eric Lubow, a CTO who treats organizations like distributed systems, which means the root cause of a broken team is usually a design problem, not a people problem. Eric has spent more than 20 years building and repairing teams and platforms, from co-founding SimpleReach to running engineering through dozens of acquisitions at Thrasio, and he is now Chief Product and Technology Officer at Mapp. He is also a jiu-jitsu coach, and that shapes how he leads. We get to the root cause of what actually makes a team healthy, why becoming a manager means changing your definition of done, and why ceding control is the part nobody warns you about. We talk about leading AI agents the way you would lead a person, why silent heroes quietly turn into silent burnouts, and how to hire into a team instead of into a vacuum. Honest and specific, with none of the leadership-content platitudes, including the lonely parts of the job most people at the top never say out loud.</p><p>&#127909; YouTube: </p><div id="youtube2-Uv988vzRWOA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Uv988vzRWOA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Uv988vzRWOA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><br>&#127911; Spotify: </p><iframe class="spotify-wrap podcast" data-attrs="{&quot;image&quot;:&quot;https://i.scdn.co/image/ab6765630000ba8a3e2489ba826877b650b154cb&quot;,&quot;title&quot;:&quot;Root Cause of a Healthy Team&quot;,&quot;subtitle&quot;:&quot;Nune&quot;,&quot;description&quot;:&quot;Episode&quot;,&quot;url&quot;:&quot;https://open.spotify.com/episode/3e84PPz51O9HY91sqeBXlS&quot;,&quot;belowTheFold&quot;:false,&quot;noScroll&quot;:false}" src="https://open.spotify.com/embed/episode/3e84PPz51O9HY91sqeBXlS" frameborder="0" gesture="media" allowfullscreen="true" allow="encrypted-media" data-component-name="Spotify2ToDOM"></iframe><p><br>&#127911; <a href="https://podcasts.apple.com/us/podcast/root-cause-of-a-healthy-team/id1896559098?i=1000774719321">Apple Podcasts</a></p><p><em>Below you&#8217;ll find the text version of this episode, for those, who prefer reading :)</em></p><p><em>Guest: Eric Lubow &#8212; CTO, jiu-jitsu coach, and military veteran who treats organizations like distributed systems</em></p><p>A combat veteran who led platoons before he led engineers, and host of his own podcast, <em>Beyond the Belt</em>, Eric gets with Nune to the root cause of something that, for once, isn&#8217;t broken: what actually makes a team healthy &#8212; and why the hardest parts of leadership are the ones nobody warns you about.</p><div><hr></div><h2>A healthy ego, and why everything is maintenance</h2><p><strong>Nune:</strong> When we first talked, you mentioned a few things you do besides all of this. Care to elaborate?</p><p><strong>Eric Lubow:</strong> I teach jiu-jitsu a couple of mornings a week before I start my workday. I also do <strong>executive coaching</strong> &#8212; I have a couple of C-level folks I coach. And somewhere in there I try to have a life and friends, practice language learning, and work on my own personal projects. I guess I do a lot of stuff.</p><p><strong>Nune:</strong> As I age &#8212; or enter midlife crisis &#8212; I keep thinking about this. You&#8217;ve accumulated a certain knowledge and you&#8217;re good at certain things. Do you enjoy doing new things that make you learn, or do you enjoy leaning into existing experience: &#8220;I spent ten years learning X, now I can just enjoy applying it&#8221;?</p><p><strong>Eric Lubow:</strong> It&#8217;s a very healthy mix, especially for me. I&#8217;m <strong>terrible</strong> at learning languages, but I still practice pretty much every day. It doesn&#8217;t come naturally, but you chip away at a problem and find a way that sits with you, and that&#8217;s interesting in itself. I&#8217;ll never be as elegant in multiple languages as the people I&#8217;ve seen &#8212; I&#8217;m awkward in every language I speak. But it&#8217;s a mix, because I&#8217;m also good at jiu-jitsu. I&#8217;m not <em>great</em> at it, but I&#8217;m good, and I enjoy learning new things.</p><p>Sometimes I want to go deeper on something I already know well. Sometimes I want to go wider and learn something completely new. <strong>I don&#8217;t really have an ego about being bad.</strong> I don&#8217;t care when I make egregious mistakes that make me look stupid &#8212; I&#8217;ve accomplished what I&#8217;ve accomplished, and I&#8217;m okay with where I&#8217;m at. The same applies professionally. I don&#8217;t claim to be perfect, but I&#8217;ve made thousands of mistakes, and that&#8217;s helped me pattern-recognize. AI is brand new to almost all of us, and I still sat there and <strong>learned it like a beginner</strong> until I got to be bare-minimum mediocre at it &#8212; and then I could pattern-recognize where other people struggle, how I got through it, and what might work for them.</p><blockquote><p>I don&#8217;t really have an ego about being bad. I&#8217;ve made thousands of mistakes, and that&#8217;s helped me pattern-recognize.</p></blockquote><p><strong>Nune:</strong> People need to hear this. I&#8217;m so tired of bucketing people into one way of thinking &#8212; you&#8217;re T-shaped or M-shaped or whatever-shaped. In reality we&#8217;re all messy human beings with different wants and different ways of getting things done.</p><p><strong>Eric Lubow:</strong> I agree, but it&#8217;s also healthy to have a <strong>limited ego, or an ego in the right way</strong>. I know I&#8217;m not good at languages, but that doesn&#8217;t stop me from trying, and it doesn&#8217;t stop me from making horrible mistakes. In German, <em>h&#228;sslich</em> and <em>h&#252;bsch</em> are very close to an English speaker &#8212; mess that up and you go from calling someone pretty to calling someone ugly. You laugh it off, you remember it, and you use it as a learning experience.</p><p><strong>Nune:</strong> Do your jiu-jitsu practice and your language learning complement your skills as a leader? Do they help each other?</p><p><strong>Eric Lubow:</strong> Absolutely, no question. There are many things I find beautiful about jiu-jitsu, but one of my favorites is that <strong>no matter how good you think you are, you will get humbled.</strong> You can be bigger, smarter, more skilled &#8212; and all you need is a little bit of an off day, and someone less skilled, smaller, and less talented will make you look stupid. That&#8217;s a very good straight line to a healthy ego: a gentle reminder that you still have something to learn. And that transfers to every other part of your life.</p><p>The other thing I take off the mat is that in jiu-jitsu, <strong>things have to work.</strong> Someone can teach you a move, it can look flashy, and if it doesn&#8217;t work when you actually try it, then either you&#8217;re not good at it, it&#8217;s not the move for you, or it doesn&#8217;t really work. So you have to test things. If you&#8217;ve read what I&#8217;ve written, you can see I&#8217;ve tested a lot of things &#8212; I&#8217;ll try something, see it fails this way, and reason that this other thing will probably fail the same way, so I shouldn&#8217;t do that. You can see that arc of testing and failure and learning throughout almost everything I do, and much of it comes from forty-plus years of martial arts.</p><blockquote><p>No matter how good you think you are, you will get humbled. That&#8217;s a very good straight line to a healthy ego.</p></blockquote><p><strong>Nune:</strong> I always thought you just learn a move and that&#8217;s it. But you have to put it through yourself, put it into practice. And there&#8217;s this other thing in sport &#8212; every day a little bit, and it adds up into something without you even feeling it.</p><p><strong>Eric Lubow:</strong> Like anything in life, there has to be a good balance. You enjoy it more if you&#8217;re good at it, and you nitpick yourself &#8212; in yoga you want the angle better, the stretch deeper, to hold the pose longer and breathe correctly. There are all these nuances you can fix and improve. <strong>Learning becomes far easier when you&#8217;re motivated the right way and enjoy the journey.</strong> I learned that deeply through martial arts, and I try to bring it to every part of my life, especially professionally. Some people show up to work for a paycheck and not because they love it. I&#8217;m fortunate to love most of what I get to do, which means I enjoy learning, enjoy making mistakes, enjoy cleaning them up and helping other people avoid them.</p><p><strong>Nune:</strong> I don&#8217;t think there&#8217;s a job where you enjoy every single factor of it. There will always be things that are boring, routine, people who frustrate you. But if you enjoy most of it, or you have a clear goal you want to reach, you have the motivation to ignore the rest.</p><p><strong>Eric Lubow:</strong> I agree, but I don&#8217;t even look at it as ignoring &#8212; I look at it as <strong>maintenance tasks.</strong> Very few people say &#8220;man, I love brushing my teeth.&#8221; They do it because it&#8217;s maintenance and you have to. Some managers say, &#8220;I hate doing one-on-ones.&#8221; But the one-on-one isn&#8217;t for you as the manager &#8212; it&#8217;s for your people. It&#8217;s where they hear where they&#8217;re at in your eyes, where your head is at on the team and their peers. <strong>That&#8217;s maintenance work.</strong> You don&#8217;t do it because you love it; you do it because it strengthens foundations. That&#8217;s how I view most things I don&#8217;t like doing.</p><h2>Teams as distributed systems</h2><p><strong>Nune:</strong> Let&#8217;s talk about organizations as distributed systems. Is that Conway&#8217;s Law the other way around &#8212; not the infrastructure repeating the team structure, but the team structure repeating your infrastructure? And what does it mean in practice: do you build redundancy, do you think about vertical versus horizontal scaling, upskilling existing people versus adding new ones?</p><p><strong>Eric Lubow:</strong> There&#8217;s a level of nuance here that&#8217;s quite difficult to get through. That piece I wrote on <strong>people as infrastructure</strong> &#8212; or infrastructure as people, however you view it &#8212; I set out thinking it would be 1,500 words. I wrote 7,000, and had to cut it down to maybe 3,500 or 4,000, because it was such a dense set of ideas. And I still felt I left a lot out, because each thing starts at a high level and there&#8217;s depth every level down. I really tried to apply systems knowledge to the similarity of human interaction.</p><p>To answer specifically: I didn&#8217;t learn about Conway&#8217;s Law until afterward, so I didn&#8217;t intentionally mimic it. But I do think the inverse is true. Conway&#8217;s Law asserts that infrastructure follows team structure; the inverse holds too. <strong>It just matters how the leaders think, how they&#8217;re taught to think, and what biases and baggage they bring into the culture.</strong> Culture is what you do repeatedly, and what people do when they&#8217;re not being watched &#8212; a similar definition to integrity. That&#8217;s why I like it: when you tell people &#8220;here&#8217;s what I expect,&#8221; they can be the judge of whether they&#8217;re meeting it when no one&#8217;s looking, and they can ask for help. You can say, &#8220;Hey, you&#8217;re not doing this, and here&#8217;s why I think so,&#8221; and they can say, &#8220;I was, and here&#8217;s why I think I was.&#8221; That communication helps you meet in the middle. Does infrastructure make people, or do people make infrastructure? At some point it meets in the middle.</p><blockquote><p>Culture is what you do repeatedly, and what people do when they&#8217;re not being watched.</p></blockquote><h2>From IC to manager: ceding control</h2><p><strong>Nune:</strong> Give me a practical example &#8212; like the one about setting goals and then letting people evaluate their own path to them.</p><p><strong>Eric Lubow:</strong> This was one of the more interesting transitions I had to make as a manager. Individual contributors hit a certain level and then become managers &#8212; a completely different job. I was guilty of thinking, &#8220;I know how to do this, I know how <em>I</em> would do it, and if this person isn&#8217;t doing it like that, they&#8217;re not doing it the best way.&#8221; <strong>That&#8217;s a control problem.</strong> As an IC, your job is to have as much control as possible over the outcome, because then you&#8217;re the responsible party when it goes right or wrong.</p><p>But when you become a manager, you have to <strong>cede control.</strong> You go hands-off a little, and you shift toward being outcome-oriented: where are the outcomes I want you to reach? Then you guide people there &#8212; or, depending on their seniority, you let them get there themselves and you retro it together afterward. What went well, what could be improved, what decision did you make, what thinking did you apply? <strong>The outcome-oriented approach is how people find their own way.</strong></p><p><strong>Nune:</strong> This is exactly what I struggle with &#8212; and Adrian and I discussed it in another episode; he called it an ego thing and a control thing. But for me it&#8217;s the reverse. If I ask someone to build a system, or a module, or a function, I can&#8217;t know every detail of how to get there, or even what the end result will look like. How can I ask someone to do something I&#8217;m not sure how it&#8217;ll look myself? It feels like I&#8217;m putting too much responsibility on them. I feel I have to know it really, really well before I can hand it off &#8212; but the moment I know it that well, I&#8217;ve usually already done the job. So: help me with delegation.</p><p><strong>Eric Lubow:</strong> That logic doesn&#8217;t apply beyond a certain level. There&#8217;s no way I, as a CTO, can be anywhere near as good at design as a designer &#8212; I can&#8217;t know that end-to-end. Because I grew up in DevOps, I can know DevOps really well, but even that&#8217;s hard given how much changes weekly and monthly. I can know it <em>well enough.</em> That &#8220;I have to know it perfectly&#8221; logic works at the manager level, maybe the director level, but beyond that you have different disciplines underneath you and you can&#8217;t know them all that well. Which means <strong>people have to drive toward outcomes</strong> &#8212; what does success look like? If this project were done successfully, here&#8217;s what the outcome would be.</p><p>And the person might start and say, &#8220;Whoa, boss, something&#8217;s not right here, I don&#8217;t know how I&#8217;d possibly get to that.&#8221; Then you sit and rethink those assumptions together. You might be wrong. The goal is that you get a better feel for the right outcome the more experience and projects and building you do. Then you start handing those things off.</p><p>At some point you have to cede control, and this is a really problematic transition. For me it took 12 to 18 months. I thought that getting something done &#8212; being able to check something off &#8212; meant <em>I</em> did it, and I&#8217;d feel like I hadn&#8217;t accomplished anything if all I did was guide people. I had to <strong>change my definition of done</strong> &#8212; to use the engineering parlance &#8212; for a task, a day, my job, so I could feel like, &#8220;Today was a good day,&#8221; even when all I did was make someone else effective. That was a very long transition, because nobody told me. Nobody said, &#8220;Hey, your &#8216;good&#8217; is now somebody else being effective, not you having built the thing.&#8221;</p><blockquote><p>I had to change my definition of done &#8212; so that a good day was someone else being effective, not me having built the thing.</p></blockquote><p><strong>Nune:</strong> It takes a more mindful, intentional approach to guide people, solve the difficult parts, and be present. You need to be in a healthy state of mind for that. If you code at 2 a.m., you can&#8217;t be in a healthy state the next day for people to approach you.</p><p><strong>Eric Lubow:</strong> Maintenance. Sleep is maintenance.</p><p><strong>Nune:</strong> What I&#8217;ve noticed is that the disciplines I&#8217;m <em>not</em> good at &#8212; front-end, UI, design &#8212; are actually my most successful delegation paths, because I don&#8217;t know how to do it, so I have to trust the person. The real hardship is letting go of the parts you <em>do</em> know, where you&#8217;ve built your own gut feeling of what &#8220;good&#8221; looks like.</p><p><strong>Eric Lubow:</strong> There&#8217;s a great essay &#8212; I&#8217;m going to mess up the name &#8212; called <strong>&#8220;Give Away Your Legos.&#8221;</strong> I think it was written by the folks at First Round. That essay teaches people a lot about becoming a manager &#8212; not the first-line manager, but being part of a scale-up where things change so fast that you keep getting responsibilities you&#8217;ve never thought about, and suddenly you have to give them away, someone reports to you, and you have to decide what &#8220;good&#8221; is for something you&#8217;ve never even considered. It talks about how to give those things away and still feel good about yourself. I don&#8217;t agree with 100% of it, but it&#8217;s information you can add to your toolbox about delegation and knowing it&#8217;s okay to give things up. <strong>I still have every new manager read that essay.</strong></p><p><strong>Nune:</strong> Can you graduate straight into being a manager, or do you have to go through the hands-on path &#8212; developer, architect, DevOps? Can you just learn to be a manager without the practical experience?</p><p><strong>Eric Lubow:</strong> Absolutely. <strong>It&#8217;s a skill, just like anything else.</strong> One reason people struggle as managers is they often don&#8217;t make the transition from doing to leading. You have to become more of a communicator, and most people are never taught to communicate effectively &#8212; active listening, empathy, validating emotions, building relationships. Those are all skills, and I was awful at them early in my management career. I got away with it as a leader in the military because I cared about people, so I had empathy &#8212; but I didn&#8217;t know how to listen well, to reflect back, to say, &#8220;Let me repeat that back to you in my own words to make sure I understand.&#8221; These skills can absolutely be taught, but you have to know you&#8217;re lacking them &#8212; or have someone tell you. <strong>And that&#8217;s a hit on your ego, because everyone thinks they can listen, everyone thinks they can communicate.</strong> There are levels to it, and there&#8217;s probably room for improvement.</p><p><strong>Nune:</strong> You&#8217;ve also said a lot of people become the manager they <em>don&#8217;t</em> want to be &#8212; they become the opposite of their bad manager, and it&#8217;s not that healthy. It&#8217;s similar to not passing along generational trauma: either you become the extreme opposite of your parents, or you repeat the same thing. What&#8217;s the healthier way to become a manager when you have a vivid example of a <em>bad</em> one in your head?</p><p><strong>Eric Lubow:</strong> I actually don&#8217;t think it&#8217;s a bad thing to become the opposite of the manager you didn&#8217;t like &#8212; and I&#8217;m not throwing stones, I&#8217;ve phrased it that way too. It&#8217;s fine to do that <em>if</em> you know what you didn&#8217;t like, know what you&#8217;re fixing, and then <strong>continue intentionally in the direction you want to go</strong>, rather than just running away from what you don&#8217;t want to be. &#8220;I don&#8217;t want to be like that, so I&#8217;m going to go in this direction&#8221; is a good starting point. But the self-evaluation and self-reflection are what matter, to facilitate not just good behavior but <em>intentional</em> behavior.</p><p><strong>Nune:</strong> Maybe what I meant is not overdoing it. You can go the opposite direction; you just shouldn&#8217;t overdo it.</p><p><strong>Eric Lubow:</strong> One quote I keep in mind is <strong>&#8220;everything in moderation, including moderation.&#8221;</strong> Sometimes you need to go way overboard, and then you realize, &#8220;Okay, I&#8217;ve gone way overboard, I&#8217;m way in the opposite direction.&#8221; Cool &#8212; now stop, reassess, and decide whether to keep going or work on something else.</p><h2>Leading AI agents like you lead people</h2><p><strong>Nune:</strong> Here&#8217;s a thought: people like you who are good at delegating and leading might have an easier time with AI agents, because you&#8217;ve already learned delegation. It&#8217;s about putting aside the developer ego &#8212; not writing that function yourself but delegating it &#8212; and building the infrastructure around the agents to make them effective.</p><p><strong>Eric Lubow:</strong> It&#8217;s funny &#8212; as soon as AI agents got popular, everyone started building governance frameworks: you have to do this, give them these guardrails. The first time I did agentic programming, I thought, <strong>this is just like leading a person.</strong> You tell them what you want, give them boundaries, give them enough context, don&#8217;t try to control them, then let them go do it. So I started talking to agents exactly the way I&#8217;d talk to a person I was assigning a task. I&#8217;d say &#8212; and I still do &#8212; &#8220;If you have any questions or need clarification, come back to me. And if you&#8217;re unsure whether something warrants more clarity, just ask.&#8221; That alone has given me really good interactions, and it&#8217;s the same when I go to multi-agent programming: &#8220;If you&#8217;re going to offload this to another agent, here are the boundaries I&#8217;d like you to set, and if you&#8217;re unsure, come back to me.&#8221;</p><p>People tend to write very hard-line instructions for their agents &#8212; &#8220;do not ever do that.&#8221; Even when you ask Claude or ChatGPT to write a prompt for you, it gives you hard lines: do not do this, only do that. The problem is that <strong>these agents are trained on the sum total of human knowledge.</strong> If it&#8217;s representing a human, it&#8217;s representing communication &#8212; so if you&#8217;d talk to another human that way and get an effective response, go for it. But nobody really wants to be talked to like that. So I talk to agents the way I&#8217;d talk to humans, and it&#8217;s been incredibly successful. Most of the software I build, the agents do a very good job of coming back when they hit a problem, or suggesting another approach: &#8220;You started with this conclusion, and given the context you had &#8212; plus this other context I added &#8212; here&#8217;s what I think.&#8221;</p><blockquote><p>These agents are trained on the sum total of human knowledge. Nobody really wants to be talked to in hard lines &#8212; so I talk to agents the way I&#8217;d talk to humans.</p></blockquote><p>One more example. I often structure conversations with agents very specifically: &#8220;Do all your research, then come back to me, and every time you have a question or comment that warrants feedback, <strong>enumerate it.</strong>&#8220; That way I can say, &#8220;Answer one, this; answer two, this; three and four, that,&#8221; and we create our own threads. It&#8217;s no different from how you&#8217;d have a conversation in Slack &#8212; if you want to break out an idea, you break it into a thread. So I do the same communication facilitation with agents that I do with humans, because it ends up reflecting my communication style back to me: theirs is depth when that&#8217;s what&#8217;s asked for, and mine is segmentation.</p><p><strong>Nune:</strong> Nobody cancelled user stories. We still have to define who needs to do something, the business background, what we want to achieve. It worked for years for people &#8212; why wouldn&#8217;t it work for agents who were trained by people to follow people&#8217;s instructions? Since you touched on the similarities: are there situations where you <em>prefer</em> talking to an agent over a person? And do you see people being replaced by agents? I know it sounds like it&#8217;s on everybody&#8217;s mind, but I think it needs to be addressed.</p><p><strong>Eric Lubow:</strong> It doesn&#8217;t sound stupid. The problem is the sheer amount of media we&#8217;re all being fed &#8212; boards want lower people costs, and agents can do that. There&#8217;s an easy path most people take. It&#8217;s the <strong>Aldous Huxley</strong> methodology: if you give people enough information, they won&#8217;t be able to sort fact from fiction. So if people keep hearing that agents will replace humans, they&#8217;ll keep acting like it&#8217;s already true, because they don&#8217;t have the headspace to think about it.</p><p>There are certain things I prefer doing with agents. Sometimes I need a <strong>thinking partner with more expertise than any human I have access to</strong> &#8212; then I&#8217;ll go to an agent and say, &#8220;Help me think through this.&#8221; But at a certain point I much prefer input from humans, because I want humans to be able to do more. That&#8217;s one reason I love coaching: I enjoy helping humans get better at whatever they do. With executives, I want them to be better executives; with jiu-jitsu people, better at martial arts; with the people in my organization, more effective at their jobs. And sometimes doing your job more effectively means <strong>using the right tool in the right way</strong> &#8212; that&#8217;s often how I look at AI.</p><p>Some people jump straight to &#8220;make these ten agents do this thing.&#8221; Maybe you&#8217;re right, maybe there&#8217;s something I don&#8217;t know. But I could also ask a person with a decade of engineering experience what they think. And if I want to understand the problem better before I ask them, I might say, &#8220;Give me a TL;DR &#8212; as a CTO, I want to understand how Kubernetes networking works in this scenario, with the pros and cons.&#8221; Not to &#8220;gotcha&#8221; the other person, but so we can have a baseline conversation informed from both sides. <strong>I personally would not like to see AI replacing humans across the board</strong> &#8212; though I know I&#8217;m not the only thinker in this space.</p><p><strong>Nune:</strong> Lately the people who said everyone would be replaced are dialing it back, saying humans are actually needed. It&#8217;s like how you&#8217;d first use a tool, then find a person and teach them to use it so you don&#8217;t have to. It&#8217;s the same here.</p><p><strong>Eric Lubow:</strong> I like to think of AI as a <strong>force multiplier.</strong> For as long as we&#8217;ve been doing this, one person could do one person&#8217;s job. If now one person can do 1.8 people&#8217;s worth of work, and I still have the same budget to pay the same number of people and get 1.8&#215; the output, that&#8217;s wonderful. But I&#8217;m not personally looking to replace people with AI &#8212; I know that&#8217;s not the universal sentiment among technologists.</p><blockquote><p>I like to think of AI as a force multiplier. If one person can now do 1.8 people&#8217;s worth of work on the same headcount, that&#8217;s wonderful.</p></blockquote><p>And I make sure, at least in my organization, that we spend time teaching people how to use these tools. That doesn&#8217;t remove the fear &#8212; everyone hears the same media, that everyone&#8217;s going to be replaced. But if you can get people to use the tool, have fun with it, feel motivated and more effective, feel better about their job, and maybe give themselves a little time and headspace back in the day &#8212; <strong>that&#8217;s a win.</strong></p><h2>What actually makes a team healthy</h2><p><strong>Nune:</strong> As a team lead and manager, what would you call a <em>healthy</em> team?</p><p><strong>Eric Lubow:</strong> That varies greatly between managers and people. I&#8217;d say a healthy team first and foremost has the <strong>psychological safety to call out what&#8217;s working and what&#8217;s not.</strong> It&#8217;s productive, it can work together, take initiative, and fix problems. Those things don&#8217;t all happen at the same level on the same day &#8212; people have good days and bad days &#8212; but there&#8217;s give and take and the ability to operate in a unified way.</p><p>That said, there are teams that work incredibly effectively without communicating much. They&#8217;re a bunch of individuals, and the manager facilitates a lone-wolf mindset across the whole team. <strong>That can be a healthy team.</strong> I personally wouldn&#8217;t want to work on it, but that doesn&#8217;t mean it isn&#8217;t healthy &#8212; it&#8217;s healthy because it&#8217;s authentically who the manager and the members are, and how they function together. A healthy team you&#8217;d lead and a healthy team I&#8217;d lead would look very different. Some people like more diversity of ideas; some like less.</p><p><strong>Nune:</strong> It&#8217;s like defining a healthy relationship &#8212; it&#8217;s individual to everyone. Of course there are obvious red flags, like a lack of psychological safety. Maybe the ability to absorb new tools and technologies, like AI, in a calm and successful way is another criterion for a healthy team?</p><p><strong>Eric Lubow:</strong> I don&#8217;t know about that. COBOL is still used in many banks and airlines. AI can probably write good COBOL, but most people will still have to check every line, because there&#8217;s not as much COBOL out there. So you don&#8217;t necessarily need people who adopt new things to be successful on that team. The need for adopting new tools and continuous learning is something <em>you</em> consider a healthy trait &#8212; and I do too &#8212; but it doesn&#8217;t mean everybody does. <strong>There are good reasons for people to be &#8220;laggards&#8221; on the adoption curve.</strong> Those people prefer stability and consistency. Just because your ambition is for the team to learn new stuff and drive forward, that doesn&#8217;t make the person who desires stability <em>wrong</em>. Their preference is, &#8220;I like what I&#8217;m doing, I&#8217;m good at it.&#8221; There are companies and teams that need those people. They&#8217;re just a different type of adoption-curve person, and there&#8217;s nothing wrong with that.</p><blockquote><p>There are good reasons for people to be &#8220;laggards&#8221; on the adoption curve. They prefer stability &#8212; and there are teams that need exactly those people.</p></blockquote><p><strong>Nune:</strong> As a consequence, do you think the team mimics not only the infrastructure but also its leader? If I&#8217;m curious about new technologies and think it&#8217;s important, I&#8217;ll pass that to my team &#8212; so the team maps to my preferences and ways of thinking.</p><p><strong>Eric Lubow:</strong> I think the team mimics <strong>leaders</strong> &#8212; not just <em>the manager</em>. If your manager is inspirational, charismatic, deserving of merit, and people respect and want to be like them, then absolutely. But sometimes that person isn&#8217;t the team lead &#8212; it&#8217;s a team member who&#8217;s charismatic or respect-earning. Your job as the manager is to figure out who that person is. If it&#8217;s you, great, eyes on you as the role model. But sometimes it&#8217;s not you, and <strong>that&#8217;s okay if your ego can handle it.</strong> If it can&#8217;t, you&#8217;ve got other issues. If it can, you should be supporting and propping that person up, knowing everyone&#8217;s going to follow them, and guiding the team through them. So it&#8217;s not always &#8220;people follow the manager&#8221; &#8212; people follow leaders. Sometimes that&#8217;s you, sometimes someone else, sometimes you <em>and</em> someone else, or multiple people.</p><h2>Sharing, shadow IT, and the cheerleader trap</h2><p><strong>Nune:</strong> In one of your posts you wrote about encouraging sharing &#8212; channels where you post what you built &#8212; to avoid shadow IT and shadow AI. Can you repeat that from your post, and then help me understand how to avoid it becoming theatrics? Some people genuinely love sharing &#8212; &#8220;hey team, let&#8217;s do X and Y together&#8221; &#8212; and others look at that and think, &#8220;That&#8217;s a poser, they&#8217;re just angling for the manager.&#8221; How do you navigate that?</p><p><strong>Eric Lubow:</strong> To start, I like to engender a <strong>culture of sharing.</strong> I want people as open and transparent as possible &#8212; that&#8217;s the kind of person I am professionally, giving people as much context as possible and letting them work through it at their pace. We have a couple of Slack channels for very public sharing. One is the <strong>releases channel</strong>: if you build something &#8212; on the roadmap, off the roadmap, for yourself, on company property &#8212; share it. We want people to feel inspired and motivated. And if you&#8217;re solving a problem, it&#8217;s probably not just <em>your</em> problem; someone else almost certainly has it too. You can get someone testing your tool, and it can save other people hours or weeks.</p><p>There will always be people trying to catch the eye of leadership. I forget who said it &#8212; maybe Gergely, <strong>The Pragmatic Engineer</strong> &#8212; but there&#8217;s this idea of <strong>&#8220;promotion-driven development.&#8221;</strong> That&#8217;s always a possibility, but really it&#8217;s an enterprise problem: at larger companies, things need to be <em>seen</em> for people to get promoted.</p><p>I personally think <strong>cheerleaders are okay.</strong> There&#8217;s a reason to sometimes say, &#8220;That&#8217;s really cool, I&#8217;m glad you did that.&#8221; And if someone is <em>overly</em> cheerleadery, it&#8217;s also okay to go to the background and say, &#8220;I&#8217;m really glad you&#8217;re doing this, but can you dial it down a little? We want to make sure other people don&#8217;t feel stifled.&#8221; It&#8217;s learning to deliver information as a leader in a way that facilitates good behavior <strong>without tamping down enthusiasm.</strong> That&#8217;s a hard line to walk &#8212; at some point you&#8217;ll crush someone&#8217;s enthusiasm accidentally and feel awful about it, maybe for the rest of your life &#8212; but you&#8217;ll learn that lesson. Getting this public-sharing thing right really matters.</p><p><strong>Nune:</strong> I didn&#8217;t expect you to aim for the cheerleader. I thought you&#8217;d aim for the person who <em>calls out</em> the cheerleader &#8212; because to me the cheerleaders are the ones who are more for sharing, and then there are people who don&#8217;t like that and intentionally stay silent: &#8220;That&#8217;s just a poser.&#8221;</p><p><strong>Eric Lubow:</strong> Let me give you an example of where cheerleaders aren&#8217;t a problem, but can accidentally <em>cause</em> one. Say you have a very forward-thinking engineer who&#8217;s deeply passionate about AI, constantly posting article after article. Even though it&#8217;s purely enthusiasm and excitement, people who aren&#8217;t as forward-thinking will think, &#8220;I don&#8217;t want to participate &#8212; I found something interesting, but they&#8217;re 20 steps ahead of me.&#8221; <strong>Their enthusiasm sets the tone so far ahead that not everybody is willing to participate.</strong> So you say, &#8220;I&#8217;m glad you&#8217;re doing this. Share those with me, or share them in this other group first, and let&#8217;s leave the more public group for people trying to catch up.&#8221; It&#8217;s the road to hell paved with good intentions: that person is excited and doing all the sharing you want, but they&#8217;re accidentally hurting other people&#8217;s motivation because they&#8217;re so far ahead. <strong>Part of running an organization is taking care of people on both sides of the adoption curve.</strong></p><blockquote><p>Their enthusiasm sets the tone so far ahead that not everybody is willing to participate. You have to take care of people on both sides of the adoption curve.</p></blockquote><h2>The hero problem</h2><p><strong>Nune:</strong> Another article that hit a nerve for me was about heroics &#8212; heroes being the people who fix something in the middle of the night or on a weekend, which can also bring unintentional damage, as you put it. So what am I supposed to do? I&#8217;ve often <em>been</em> the hero who takes too much responsibility and fixes things. I understand the fix needs to be followed by a proper fix &#8212; but are these people supposed to just not fix it, or not care so much?</p><p><strong>Eric Lubow:</strong> Let&#8217;s separate this into two problems. First, <strong>there will always be issues in production</strong> &#8212; that&#8217;s just the nature of it &#8212; and sometimes you <em>do</em> want that person to go in and fix it. Sometimes you&#8217;re that person. But if that becomes what everybody relies on, you&#8217;ve got a problem &#8212; <strong>especially if &#8220;everybody&#8221; includes you.</strong> If you think, &#8220;I&#8217;ll just fix this in production when it breaks,&#8221; you&#8217;re setting yourself up for burnout. You&#8217;re saying, &#8220;This is going to have to be me until the end of time.&#8221;</p><p>So yes, you solve the problem &#8212; and then you solve the <em>other</em> problem: what led to this being <em>you</em>? Either the only person who <em>can</em> do it, or the only one <em>willing</em> to. That means maybe you didn&#8217;t do knowledge sharing. Maybe you didn&#8217;t put the right documentation in place. Maybe the alerting only goes to you instead of to a group. Maybe you did the knowledge sharing but not the <em>teaching</em> that makes it useful. If you&#8217;re the only one who knows how to restart a service because it takes 20 steps &#8212; yes, document it, but then <strong>explain why you got there</strong> and have other people work on it, so the knowledge is shared and ownership can be shared. There are a lot of problems that led up to that production problem. Fix it, then fix all the subordinating problems that led you there.</p><blockquote><p>Silent heroes end up being silent burnouts. They get tired, they quit, they go find another job.</p></blockquote><p>Most people just go right back to developing &#8212; there are customer requirements, the next feature, sales pressure. But if you don&#8217;t do all this maintenance work, all this teaching and training, you&#8217;ll be right back expecting heroics, and having heroics expected of you &#8212; even if it&#8217;s only by yourself.</p><p><strong>Nune:</strong> I think I&#8217;m more comfortable solo for exactly this reason. It&#8217;s hard to put the brakes on yourself, and it&#8217;s easier to write yet another automation script than to explain 20 steps. But I acknowledge the other way is healthier &#8212; for the organization, the team, and yourself.</p><p><strong>Eric Lubow:</strong> You have to <strong>trust that other people can do this work</strong>, and you won&#8217;t build that trust just by handing it off. You have to make sure they know you have their best intentions at heart &#8212; that if you ask them to learn this, you&#8217;ll then trust them, and there&#8217;ll be fewer of those &#8220;get out of my way, let me do it&#8221; moments. Instead you sit next to them: &#8220;Okay, let&#8217;s work through this together. Yes, there&#8217;s an outage, but it&#8217;s a minor one, so we can allow this while we work through it.&#8221; Then you put a boundary on it: &#8220;We&#8217;ll spend ten minutes, and if we&#8217;re not making progress, I&#8217;ll go do it &#8212; and then we&#8217;ll sit down and figure out how to make <em>you</em> able to do this next time.&#8221;</p><p><strong>Nune:</strong> Is it the so-called hero&#8217;s responsibility to recognize and address this, or yours as the manager?</p><p><strong>Eric Lubow:</strong> Sometimes the hero <em>is</em> the manager. As senior leaders, you&#8217;ve been through the shit, so you know what it looks like and how to fix it &#8212; and you become the hero. But it&#8217;s incumbent upon leadership to recognize these problems. <strong>Silent heroes end up being silent burnouts</strong>, and then they go off into the sunset &#8212; they get tired, quit, find another job. It&#8217;s your job as a leader to recognize if <em>you&#8217;re</em> doing it, especially if there&#8217;s no one above you. If you&#8217;re the CTO pulling this crap, the CEO <em>could</em> recognize it, but really you have to ask: <strong>why does this keep being me? What am I not doing right that I&#8217;m constantly the one doing this?</strong> And if it&#8217;s your people, you do the retro and ask, &#8220;Why were you the only person able to fix this?&#8221; Do you ever stop, while you&#8217;re fixing something, and ask, &#8220;Hey, is this me?&#8221;</p><p><strong>Nune:</strong> I am that person, for sure &#8212; the one constantly burning out, doing too much. It&#8217;s a constant struggle to limit it. I wish we had indicators like in video games &#8212; a health bar, a hunger bar &#8212; that go yellow or red so I&#8217;d address it. But in reality you don&#8217;t see that, especially when your wants and desires are ahead of your capabilities, or just ahead of the hours in the day. For me it&#8217;s a path through mindfulness, through limiting, through pulling the brakes, through trusting people.</p><p><strong>Eric Lubow:</strong> It&#8217;s hard. Sometimes you just need to stop and ask: <strong>am I having this defensive reaction because I&#8217;m hungry, or because I&#8217;m tired? Am I annoyed this person didn&#8217;t figure it out because I didn&#8217;t teach them, or because they&#8217;re really the problem?</strong> These are hard questions, because they chip away at our insecurities. When it comes to machines, it&#8217;s easy to think of humans as distributed systems and abstract away the humanity &#8212; &#8220;where&#8217;s the pressure release valve, where can this team absorb more?&#8221; But those are <em>humans</em> doing that. So you have to check in with them and yourself: can you actually absorb more, and <strong>what falls on the floor if you do?</strong> Is it your health? Your mental health? A production system you can no longer maintain because there aren&#8217;t enough hours in the day? That&#8217;s the trade-off part of it.</p><h2>Hiring into a team, not a vacuum</h2><p><strong>Nune:</strong> I really wanted to talk about hiring. People talk about it like it&#8217;s done in a vacuum &#8212; you go and hire a person &#8212; whereas in reality you hire a person <em>into a team</em>. When I was struggling with hiring as a first-time manager, a friend told me to treat it like dating: examine your team, understand what would fit, what the team needs. Maybe right now they need a fun person. I&#8217;m not saying ignore technical skills &#8212; but what do you think is more important: the outcome, or the team&#8217;s health?</p><p><strong>Eric Lubow:</strong> There&#8217;s no universally more important thing. One thing I&#8217;ve done over the years: when someone wants to hire for a role, I ask <em>them</em> to write the job description. The way I like to frame it is &#8212; <strong>if you&#8217;d worked here the last 30 days, what would you have worked on? What skills would you have needed? And in the next 30 days, what would this person work on?</strong> That&#8217;s the starting point. That&#8217;s how you get <em>actual</em> skills, not &#8220;this person has a bachelor&#8217;s degree and five years of Python.&#8221; You&#8217;d have needed real skill to do those tasks, and if you can talk about them &#8212; you don&#8217;t necessarily have to know how to do them, since they&#8217;re endemic to the system being worked on &#8212; you&#8217;ll have thought about elements of it: &#8220;This is a distributed-systems task, so I&#8217;d need to understand Zookeeper, or maybe Paxos.&#8221; That tells you the person has <em>thought about</em> these problems, versus &#8220;has this person been writing Java for 10 years?&#8221;</p><p>The next part is the <strong>team vibe.</strong> Do you have a bunch of super-outgoing people with a busy Slack channel throwing memes all day? Or people who show up, talk very little, are introverts, do their job? There&#8217;s nothing wrong with either &#8212; but if you stick a strong introvert into a very extroverted team, they&#8217;re all going to be uncomfortable, because it&#8217;s hard for both groups to adapt. So knowing the culture of your team is really helpful. Sometimes you have an introverted team you want to pull out of its shell, so you want someone slightly more extroverted. Or you want an <strong>ambivert</strong> who can slide between both worlds. All of that is part of the dating-slash-hiring process.</p><blockquote><p>If you&#8217;d worked here the last 30 days, what would you have worked on? That&#8217;s how you get actual skills, not &#8220;five years of Python.&#8221;</p></blockquote><p>I also always do the <strong>airport test</strong>: if you were stuck with this person in an airport for 72 hours, could you have a conversation? Would you <em>want</em> to talk to them? For as long as I&#8217;ve been hiring &#8212; and I&#8217;ve hired literally thousands of people and done thousands of interviews, especially from my scale-up days &#8212; I always ask the same four or five questions at the tail of the interview. I&#8217;ve never published the piece I wrote about it, but for example: <strong>&#8220;What advice would you give yourself five years ago?&#8221;</strong> Some people say, &#8220;I&#8217;d have bought Bitcoin.&#8221; Okay &#8212; that&#8217;s information; it likely means they&#8217;re motivated by material things, which isn&#8217;t good or bad. Some say, &#8220;I&#8217;d have learned to become a better listener.&#8221; Cool &#8212; how&#8217;d you get there?</p><p>Then I ask <strong>what they do for fun</strong>, because I want to see what they look like when they&#8217;re excited &#8212; if you do something for fun, you&#8217;ll talk about it excitedly, and I want that to come out. There&#8217;s nothing wrong with people who write code for fun <em>and</em> professionally, but if that&#8217;s <em>all</em> you do, your versatility is probably slightly less than someone with multiple interests. Another question: <strong>&#8220;If you could tell me anything about yourself &#8212; &#8216;if Eric just understood this about me, our lives would be better&#8217; &#8212; what would it be?&#8221;</strong> Sometimes I get, &#8220;I&#8217;m such a perfectionist.&#8221; Okay, now I know I need to regularly ask this person, &#8220;Is this good enough? Have we progressed, or are we still aiming for perfection?&#8221; People will helpfully tell you these things. All of these get at the <em>person</em>, more than just the skill &#8212; <strong>because if all you care about is skill, at some point their personality becomes a problem for you as a manager, because you never explored it</strong>, and they never got to explore it with you.</p><p><strong>Nune:</strong> I&#8217;m glad you&#8217;re saying this. I hear horror stories of people going through eight, ten stages of interviews with coding assessments that take days to implement &#8212; whereas I&#8217;ve always approached hiring as getting to know the person and their motivation. For me it was always important that they&#8217;re curious, interested, that they want to share and help the team. The technical skills need to match, of course, but I believe everyone can learn whatever they want if they put their mind to it.</p><p><strong>Eric Lubow:</strong> Agreed.</p><h2>The loneliness of leadership</h2><p><strong>Nune:</strong> You said something I want to quote back: anyone alone would likely fail. And you mentioned that when a CTO fails to recognize their heroics, a CEO might help them &#8212; but you&#8217;ve also said this is a lonely job. If anyone alone would fail, how do you, as a CTO who&#8217;s sort of alone, deal with that? Who are your peers? Is it your CEO, your co-founder, people from previous companies? Who do you share the burden with?</p><p><strong>Eric Lubow:</strong> There&#8217;s a mix of ideas in there. First, this is one of the reasons <strong>executive coaches exist</strong> &#8212; there&#8217;s the objectivity, and they usually have experience in these areas. An executive can turn to someone external and say, &#8220;I&#8217;m struggling here, this is what I need help with,&#8221; or &#8220;I&#8217;m struggling and I don&#8217;t even know what I need help with.&#8221;</p><p>I also have people who were previous bosses, or who worked for me and climbed the ranks elsewhere, and I keep those relationships. Sometimes I&#8217;ll just message them: &#8220;I&#8217;m really stuck &#8212; here&#8217;s what I&#8217;m working with. How would <em>you</em> unpack this, especially knowing my strengths and weaknesses?&#8221; I keep that network. And I&#8217;ve had a running thing where almost anybody who has worked directly for me can reach out at any point &#8212; and many do. I have very regular conversations with former engineering leads, DevOps leads, product managers, data scientists. Some reach out on LinkedIn after two, three, five years of not talking: &#8220;Can you give me feedback on this PRD?&#8221; I&#8217;m happy to do it. Obviously I won&#8217;t drop everything, but those relationships are important.</p><p>To bring it back inside the organization: it&#8217;s very difficult to have those kinds of relationships internally once you reach a certain level, because <strong>you are the accountable party.</strong> When something goes wrong <em>or</em> right, it&#8217;s you &#8212; you have to make sure it gets fixed if it went wrong, and if it went right, you often give the credit to someone else. That makes it feel lonely. Being C-suite is quite difficult because <strong>you really only get the shit.</strong> So I try to hand off all the positive, because I&#8217;m fortunate not to need recognition &#8212; and I feel lucky about that, because if I did, my job would be much harder. I can easily hand off recognition, and when something goes wrong I can easily accept blame, because my ego doesn&#8217;t survive on validation. But I know that&#8217;s not the norm. So, more specifically: I do have people in the organization I&#8217;ll go to &#8212; &#8220;I&#8217;m struggling with this, I need some kind of support, I&#8217;m not exactly sure what it looks like&#8221; &#8212; or, &#8220;Here&#8217;s exactly what I need; can you do this? If not, how do we get ourselves to that point?&#8221;</p><blockquote><p>Being C-suite is quite difficult, because you really only get the shit. When something goes right, you give the credit away.</p></blockquote><p><strong>Nune:</strong> That&#8217;s exactly what I wanted to hear &#8212; whether it happens inside the organization or outside, and maybe it&#8217;s both. The follow-up: do you allow yourself to get vulnerable with your team, or does the figuring-out happen behind the scenes? Does it ever happen that you come to your team and say, &#8220;Look, guys, I don&#8217;t know&#8221;?</p><p><strong>Eric Lubow:</strong> It&#8217;s both. And I absolutely do. I would not have done that in my younger years, because I thought <strong>&#8220;I don&#8217;t know&#8221; was a sign of weakness. It&#8217;s not &#8212; it&#8217;s a sign of strength.</strong> It&#8217;s saying, &#8220;I don&#8217;t know what to do here, so let&#8217;s figure this out together.&#8221; We have the collective wisdom of five, six, seven people, decades of engineering, product, DevOps, and data-science experience. Let&#8217;s figure it out. If someone else can lead this and help me go in the right direction, let&#8217;s do that.</p><blockquote><p>I used to think &#8220;I don&#8217;t know&#8221; was a sign of weakness. It&#8217;s not &#8212; it&#8217;s a sign of strength.</p></blockquote><p>I&#8217;m fortunate to have a group of people now who accept that responsibility when I say, &#8220;Hey, I&#8217;m stuck,&#8221; and respond, &#8220;Okay, let&#8217;s work through this.&#8221; It&#8217;s not easy, because sometimes it&#8217;s &#8220;I&#8217;m the boss, I <em>should</em>&#8220; &#8212; and that &#8220;should&#8221; is the enemy of progress when you&#8217;re stuck. It&#8217;s harder to actually do it, but the outcome is better. I won&#8217;t pretend I do it all the time. I&#8217;d love to say every time I&#8217;m stuck I ask for help, but no &#8212; sometimes I think, &#8220;I can power through this,&#8221; and sometimes I do, which is good for self-confidence and trusting myself. And sometimes I&#8217;m just not getting anywhere, and then I go to the team: &#8220;Here&#8217;s what I&#8217;m stuck on. How do we handle this?&#8221;</p><h2>Books, and the smallest win you&#8217;re proud of</h2><p><strong>Nune:</strong> Thanks for the honesty &#8212; I feel like I got a free consultation in this one hour. I hope a lot of first-time managers, and seasoned managers handed a new team, get honest answers from this. Now, some final questions. I&#8217;m a big bookworm, so I always ask for recommendations &#8212; fiction, nonfiction, whatever feels right.</p><p><strong>Eric Lubow:</strong> The <strong>Bobiverse</strong> series &#8212; <em>We Are Legion (We Are Bob)</em> is the first book &#8212; is probably one of my favorite series of all time, by Dennis Taylor. It&#8217;s science fiction about an AI, and there are about five books now. I read 20 to 30 books a year, mostly fiction, mostly sci-fi space operas. <strong>Becky Chambers</strong> is a brilliant author too &#8212; my favorite of hers is either <em>A Psalm for the Wild-Built</em> or <em>The Long Way to a Small, Angry Planet</em>, also a four-book series. Otherwise, people can creep on my Goodreads and see everything I&#8217;ve read &#8212; probably the easiest way to get a recommendation. What would you recommend?</p><p><strong>Nune:</strong> First &#8212; one day when I retire, I&#8217;m going to have a podcast about sci-fi with IT people, because it&#8217;s so important for people to read sci-fi, to keep the spirit of an imaginative technological future alive. What I&#8217;d recommend: let&#8217;s be friends on Goodreads. <strong>The Expanse</strong> series I really liked. And the book before the one I&#8217;m reading now, <strong>Children of Time</strong> &#8212; I liked it a lot; it had elements of AI and how your consciousness gets mixed with the AI until they&#8217;re inseparable. The book I&#8217;m reading now is <strong>Permutation City</strong>, from 1994 &#8212; when you read it, you can actually trace why <em>The Matrix</em> happened when it did. It&#8217;s mind-bending and a hard read, but I recommend it. <strong>Blindsight</strong> by Peter Watts is also a hard read, all about cognition &#8212; if you sit through it to the end, the moment you close it your mind is blown, and you stay with that feeling for days. Honestly, I don&#8217;t really like technical IT nonfiction. I&#8217;ve always been embarrassed of that &#8212; I never read best practices, I try to figure them out myself.</p><p><strong>Eric Lubow:</strong> Same. There are only two books I&#8217;d recommend for management and leadership, both by <strong>Patrick Lencioni.</strong> One is <em>The Five Dysfunctions of a Team</em> &#8212; about 250 pages, very narrative, reads wonderfully, tons of incredible lessons; you can read it in an afternoon. The second is <em>The Advantage</em>, by the same author. It is one of the most <em>boring</em> reads &#8212; absolutely brutal to get through &#8212; but it&#8217;s one of the most dense, information-packed, valuable reads on maintaining healthy organizations. I&#8217;d be remiss not to recommend it, but it was a difficult, difficult read.</p><p><strong>Nune:</strong> We have this thing where each guest leaves a question for the next. Funny enough, this one is almost the question <em>you</em> ask in interviews: <strong>what is the one thing you&#8217;d tell yourself at the beginning of your journey that you know now but didn&#8217;t then?</strong> Treat it however you like &#8212; leadership, team-leading, or IT.</p><p><strong>Eric Lubow:</strong> I for sure did not spend enough time, when I was younger, <strong>understanding myself through the lens of other people.</strong> That&#8217;s been hugely problematic in my personal life and minorly problematic professionally. I really wish I&#8217;d been taught emotions, emotional communication, and self-awareness of emotions at a young age &#8212; I wish that were part of growing up. For me it wasn&#8217;t, and I&#8217;ve had to learn it the hard way, through many lost relationships I wish I hadn&#8217;t lost.</p><blockquote><p>I did not spend enough time, when I was younger, understanding myself through the lens of other people.</p></blockquote><p><strong>Nune:</strong> How do you actually learn about yourself through the lens of others? I know how to learn about myself through reflection &#8212; which is maybe faulty, because you&#8217;re on your own, biased, thinking about you. So how do you do it through others? Do you just ask them?</p><p><strong>Eric Lubow:</strong> You ask, and <strong>you listen.</strong> &#8220;Here&#8217;s what I thought I heard &#8212; did I understand correctly? Here&#8217;s how I view what you said about me &#8212; did I get it right, or am I just being defensive?&#8221; It&#8217;s actually sitting with what you&#8217;re told, hearing it, internalizing it &#8212; and if you don&#8217;t understand it, asking, rather than assuming you&#8217;ll figure it out. But you have to do all the self-work first, and <em>then</em> you get to the point where you bring in other people&#8217;s input.</p><p><strong>Nune:</strong> And your question to the next guest?</p><p><strong>Eric Lubow:</strong> <strong>What is the most benign thing that you&#8217;re proud of, and don&#8217;t get to talk about?</strong></p><p><strong>Nune:</strong> What is it for you?</p><p><strong>Eric Lubow:</strong> This is super benign. I helped friends move a couple of months ago. You&#8217;re in Berlin too, so you know parking is a nightmare. I was one of the people with a license, so I was the driver of the big Miles van. We drove, we unloaded, and then I went to put the van back &#8212; and on the first try, I <strong>parallel parked it with about four centimeters on each side.</strong> One move in, perfect. And I was so excited &#8212; but there was nobody around, nobody on the street saw it, my friends weren&#8217;t with me. I got back, and they were all exhausted from carrying stuff up and down the stairs, and I said, &#8220;Guys, I just parked the van.&#8221; And they said, &#8220;Yeah, we know.&#8221; And I said, &#8220;But you don&#8217;t understand &#8212; I <em>parallel</em> parked it, with that little space.&#8221; And they just didn&#8217;t have the energy, and they hadn&#8217;t seen it, so they couldn&#8217;t celebrate. They were just hearing it secondhand. But I managed to park that van on the first try, with so little space on each side.</p><p><strong>Nune:</strong> I&#8217;m actually learning for my driver&#8217;s license only now, at thirty-seven &#8212; so I can really share your excitement. Every successful trip in the practical exercise gives me so much energy.</p><p><strong>Eric Lubow:</strong> Yeah &#8212; you get used to it, but then those wins... I&#8217;ve been driving since I was seventeen, almost thirty-something years. But then something like that happens, and &#8212; right.</p><div><hr></div><h2>References</h2><p><strong>Articles and ideas mentioned in this episode</strong></p><p>Eric&#8217;s own writing that runs underneath this whole conversation:</p><ul><li><p><a href="https://eric.lubow.org/2026/infrastructure-by-adoption-an-ai-engineering-first-principle/">Infrastructure by Adoption: An AI-Engineering First Principle</a> (the &#8220;people as infrastructure&#8221; thread, organizations as distributed systems)</p></li><li><p><a href="https://eric.lubow.org/2026/systems-over-heroes/">Systems Over Heroes</a> (the heroics piece: why silent heroes quietly become silent burnouts)</p></li><li><p><a href="https://eric.lubow.org/2026/if-you-want-compliance-start-with-celebration/">If You Want Compliance, Start with Celebration</a> (sharing channels vs shadow IT and shadow AI)</p></li></ul><p>Other references that came up:</p><ul><li><p><a href="https://review.firstround.com/give-away-your-legos-and-other-commandments-for-scaling-startups/">&#8220;Give Away Your Legos&#8221; and Other Commandments for Scaling Startups</a> by Molly Graham (First Round Review). The essay Eric still has every new manager read.</p></li><li><p><a href="https://en.wikipedia.org/wiki/Conway%27s_law">Conway&#8217;s Law</a> (and the inverse we kept circling: does the team shape the infrastructure, or the infrastructure the team?)</p></li><li><p>&#8220;Promotion-driven development,&#8221; a phrase from <a href="https://x.com/gergelyorosz/status/1442162670753431559">Gergely Orosz, The Pragmatic Engineer</a>.</p></li></ul><p><strong>On the two dystopias.</strong> Eric reached for 1984, then corrected himself to Aldous Huxley, and he was right to. The fear that you bury people in so much information they can no longer sort fact from fiction is Huxley&#8217;s <em>Brave New World</em>, not Orwell&#8217;s <em>1984</em>. Neil Postman drew the line cleanly in <em>Amusing Ourselves to Death</em>: Orwell feared the people who would ban books, Huxley feared there would be no reason to ban one, because no one would want to read it anyway.</p><p><strong>Books mentioned</strong></p><p>Eric&#8217;s picks:</p><ul><li><p><a href="https://www.goodreads.com/book/show/32109569-we-are-legion-we-are-bob">We Are Legion (We Are Bob)</a> by Dennis E. Taylor, first of the Bobiverse series</p></li><li><p><a href="https://www.goodreads.com/book/show/40864002-a-psalm-for-the-wild-built">A Psalm for the Wild-Built</a> and <a href="https://www.goodreads.com/book/show/22733729-the-long-way-to-a-small-angry-planet">The Long Way to a Small, Angry Planet</a> by Becky Chambers</p></li><li><p><a href="https://www.goodreads.com/book/show/21343.The_Five_Dysfunctions_of_a_Team">The Five Dysfunctions of a Team</a> and <a href="https://www.goodreads.com/book/show/12975375-the-advantage">The Advantage</a> by Patrick Lencioni (the only two leadership books he recommends, one a joy to read, one &#8220;absolutely brutal&#8221;)</p></li></ul><p>Nune&#8217;s picks:</p><ul><li><p><a href="https://www.goodreads.com/series/56399-the-expanse">The Expanse</a> series by James S. A. Corey</p></li><li><p><a href="https://www.goodreads.com/book/show/25499718-children-of-time">Children of Time</a> by Adrian Tchaikovsky</p></li><li><p><a href="https://www.goodreads.com/book/show/156784.Permutation_City">Permutation City</a> by Greg Egan</p></li><li><p><a href="https://www.goodreads.com/book/show/48484.Blindsight">Blindsight</a> by Peter Watts</p></li></ul><p>Add each other on Goodreads: Eric is at <a href="https://www.goodreads.com/elubow">goodreads.com/elubow</a> and Nune at <a href="https://www.goodreads.com/nisabek">goodreads.com/nisabek</a>.</p>]]></content:encoded></item><item><title><![CDATA[Root Cause of Architectural Thinking]]></title><description><![CDATA[Watch now (95 mins) | In this episode of Root Cause we sit down with Barry O'Reilly, 25 years in software architecture, former chief architect at Microsoft, startup CTO, and the creator of Residuality Theory, to get to the root cause of what senior architects actually do when they say they run on gut feeling.]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-architectural-thinking-38f</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-architectural-thinking-38f</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Mon, 13 Jul 2026 15:08:22 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211561073/49e35379f86d03dd37b479835bb770e9.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Barry O'Reilly, 25 years in software architecture, former chief architect at Microsoft, startup CTO, and the creator of Residuality Theory, to get to the root cause of what senior architects actually do when they say they run on gut feeling. When Microsoft asked Barry to teach junior architects how he did his job, he discovered he couldn't describe his own methods, and neither could any of the senior architects he asked. That frustration turned into two books and a PhD in complexity science. We dig into why a random simulation of stress produces architectures that survive events nobody predicted, why equirements and risk management quietly limit the very thinking they were supposed to support, why our industry spreads ideas through charisma instead of scientific proof, and whether an LLM can ever produce an architecture. If you've ever been told "that's just experience," this episode puts words on it.</p><h2>Chapters and Topics</h2><p>00:00 Cold Open: The Architect vs the Implementer</p><p>02:06 Guest Introduction: Structuring the Magic</p><p>03:00 Pure Mathematics: Help or Trap?</p><p>06:20 Think Less, Do More? The Industry's Thinking Problem</p><p>09:09 Why Software Isn't Developing as a Science</p><p>12:26 Pop Culture, Gurus, and the Hype Machine</p><p>15:09 "My Industry Is Low Stakes": Why Quality Still Pays</p><p>17:54 Two Books That Decide If You're an Architect</p><p>22:09 Creativity vs Craft: Naming the Magic</p><p>25:39 Residuality Theory: The Marbles Analogy</p><p>31:59 How to Start: The Naive Architecture and Random Stress</p><p>36:35 Attractor States: Why Stressing Works</p><p>39:30 All Architecture Is Stress</p><p>44:14 The Trouble with Non-Functional Requirements</p><p>48:49 Should Architects Become Domain Experts?</p><p>52:02 Does This Apply to Small Systems and Startups?</p><p>57:36 Answering the Critics: "We've Always Done This"</p><p>01:01:28 Stressor Analysis: Architecture Never Stops</p><p>01:04:57 Shared Language and Reflective Practice</p><p>01:07:04 Has AI Made Code Cheaper?</p><p>01:12:54 Can LLM Agents Do Residuality?</p><p>01:18:43 The Walk Around the Problem Is the Point</p><p>01:20:40 First Steps into Residuality</p><p>01:25:18 Book Recommendations</p><p>01:29:39 A Benign Pride: Fly Fishing at 34 Meters</p><p>01:32:01 Question for the Next Guest and Closing</p><p>Find Barry at:</p><p>&#8226; LinkedIn: <a href="https://www.linkedin.com/in/barry-o-reilly-b924657/">https://www.linkedin.com/in/barry-o-reilly-b924657/</a></p><p>&#8226; Barry&#8217;s first book: <a href="https://leanpub.com/residuality">https://leanpub.com/residuality</a></p><p>&#8226; Barry&#8217;s second book: <a href="https://leanpub.com/architectsparadox">https://leanpub.com/architectsparadox</a></p><p>&#8226; The intro talk you should watch: <a href="https://www.youtube.com/watch?v=_MPUoiG6w_U">https://www.youtube.com/watch?v=_MPUoiG6w_U</a></p><p>Find me (Nune) at:</p><p>* LinkedIn: <a href="https://www.linkedin.com/in/nisabek/">https://www.linkedin.com/in/nisabek/</a></p><p>* Substack: <a href="https://www.thoughtfultechnologist.com/">https://www.thoughtfultechnologist.com/</a></p>]]></content:encoded></item><item><title><![CDATA[Why agents also suck at resilience]]></title><description><![CDATA[and what can be done about it]]></description><link>https://www.thoughtfultechnologist.com/p/why-agents-also-suck-at-resilience</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/why-agents-also-suck-at-resilience</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Tue, 07 Jul 2026 07:01:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/28d89067-e713-4b4b-9e01-0655a1cd7e8d_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m reading <a href="https://leanpub.com/whywestillsuckatresilience/">Adrian Hornsby&#8217;s </a><em><a href="https://leanpub.com/whywestillsuckatresilience/">Why We Still Suck At Resilience</a></em> and getting to know resilience engineering beyond chaos engineering and the other practices I thought I knew. It rewires a lot of my thinking, and I&#8217;m reflecting on it here.</p><p>Almost on the first pages I read the following:</p><blockquote><p>Work-as-Done includes all the adaptations, shortcuts, workarounds, and informal knowledge that accumulate as systems encounter reality. An engineer notices that deployments to the Asia Pacific region need an extra verification step not in the official process, because of a subtle interaction with a local caching layer. A team learns that the database failover procedure in the runbook doesn&#8217;t account for a recent schema change, so they&#8217;ve developed an informal pre-flight check they run first. An operator knows that when a particular alert fires, you should check three other things before following the documented response, because the alert sometimes triggers on conditions that resolve themselves. This is tacit expertise. It&#8217;s the knowledge that keeps systems running despite, and sometimes in spite of, documented procedures. It&#8217;s hard to transfer to new team members. It&#8217;s nearly impossible to audit. And it often becomes visible only when the person who holds it leaves the team or isn&#8217;t available during an incident. The gap between WAI and WAD is not a sign that something has gone wrong. The gap is inevitable. It emerges naturally from the nature of complex systems.</p></blockquote><p>And I asked myself: <strong>doesn&#8217;t this mean agentic systems will actually be better suited for handling systems?</strong></p><p>Compared to rule-based automation, we now seem to have the flexibility to encode uncertainty, doubt, and adjustment to the situation in the form of agents. The knowledge never leaves the company. It stays in the concrete steps that were taken (assuming you have observability in place), by an agent or by a human for that matter. It can be copied, stored, version controlled, and distributed among a fleet of similar agents. It doesn&#8217;t resign. It doesn&#8217;t forget the 3am incident from two years ago. The key-person risk the Work-as-Done literature keeps flagging is something agents straightforwardly reduce.</p><p><strong>But the WAI/WAD gap isn&#8217;t fundamentally a storage problem</strong>. Adrian&#8217;s own framing says it: the gap is inevitable because it emerges from the nature of complex systems. Reality keeps generating novel conditions faster than any model can absorb them. Tacit expertise doesn&#8217;t sit there as a pile of workarounds waiting to be extracted. It&#8217;s the ongoing capacity to notice when the world has drifted from the model and improvise.</p><p>A generation problem, not a retrieval one.</p><p>Well, great, I say. Generation is exactly what large language models do.</p><p>And yet. If we keep giving the agent more and more rules to follow, more and more MD files to check, the agent just becomes a more sophisticated version of Work-as-Imagined. Congrats, you&#8217;ve made the problem worse. <strong>An agent loaded with the documented procedure plus a pile of captured workarounds doesn&#8217;t close the gap. It&#8217;s a longer-reach, better-indexed WAI.</strong></p><p>To actually be better, the agent can&#8217;t just hold the workarounds. It has to be the thing doing the noticing: <em>this feels off, the runbook doesn&#8217;t fit, I&#8217;m deviating.</em></p><p>And good tacit knowledge includes tacit knowledge of its own limits. The operator who checks three things before following the alert also knows when this time is different and the workaround doesn&#8217;t apply. An agent that learned the correlation can misfire exactly when the situation superficially matches but is causally different: applying the fix past its boundary, with confidence.</p><p>Knowing the edges of your expertise is the part I&#8217;d least trust an agent to have.</p><p><em><strong>What is it about the human brain that makes us so uniquely fit to adjust and handle complex systems?</strong></em></p><p>Every capability I went looking for collapsed into the same one: <strong>knowing your boundary.</strong> And it comes in three flavors that are easy to lump together because they live in our brains for so long that we take them for granted:</p><ul><li><p><strong>Knowing the limits of what you know</strong></p></li><li><p><strong>Knowing that you&#8217;ve stepped off the plan</strong></p></li><li><p><strong>Knowing that the world has drifted away from the plan while you were busy executing it</strong></p></li></ul><p>So I went digging through the research to see what the state of the art is. (The digging was done with Perplexity and Claude, and then I did my best to verify the results. Trust, but verify, especially when writing about machines being confidently wrong.)</p><p>One separation first, because it matters for everything that follows: <strong>what a model alone can do</strong>, versus <strong>what can be done with a so-called &#8220;harness.&#8221;</strong> (I blinked the moment we started calling frameworks &#8220;harnesses,&#8221; but alright.) The harness is everything we build around an LLM so it can do actual work: memory, tool management, orchestration, validation. It&#8217;s what takes a &#8220;pure&#8221; LLM and makes a Claude Code out of it.</p><div><hr></div><h1>Part 1: Knowing the limits of what you know</h1><p>The static flavor: does the system know the edges of its own knowledge, and can anything catch it when it wanders past them?</p><h2>Knowing what you don&#8217;t know</h2><h3>Model-side: partial self-awareness, but fragile</h3><p>Modern LLMs show a limited ability to recognize when they&#8217;re out of their depth, and that ability depends heavily on how they were trained. Pretraining teaches a model to continue patterns, not to identify knowledge gaps, so models produce plausible answers even when the underlying information simply isn&#8217;t there. Research that benchmarks this self-knowledge directly finds a considerable gap between models and humans at recognizing unanswerable questions.</p><p>Post-training changes the picture, but only partly. Instruction tuning and RLHF make models more likely to refuse and express uncertainty. But a lot of that expressed uncertainty appears to be a prompt artifact, not genuine self-knowledge. Give the model a structurally available &#8220;I don&#8217;t know&#8221; option and it learns to reach for it, whether or not it actually lacks the knowledge. When researchers test whether models can tell <em>where</em> their uncertainty comes from (is the question ambiguous, or do I genuinely not know this?), frontier models struggle.</p><p>The most uncomfortable finding in this area is that fine-tuning models for reasoning can make abstention worse. The better the model gets at producing an answer, the less willing it becomes to say there isn&#8217;t one.</p><p><strong>We taught them to say &#8220;I&#8217;m not sure.&#8221; We didn&#8217;t teach them to know why.</strong></p><h3>Harness-side: metacognition moved into the runtime</h3><p>If the model&#8217;s self-knowledge is only partial, the harness becomes the practical layer where awareness of limits gets implemented. A model&#8217;s verbalized confidence (&#8220;I&#8217;m 90% sure&#8221;) is systematically overconfident, but external scaffolding (sampling the model several times, checking consistency, comparing evidence) can detect weak confidence more reliably than the model&#8217;s self-report. The harness can then decide: answer, defer, ask for clarification, retry, escalate.</p><p>Recent agent work pushes this further by mining failed trajectories, attributing recurring failures to parts of the scaffold, and updating prompts, tool rules, or validation logic without breaking what already worked. The model still doesn&#8217;t robustly know its limits. The system measures noisy signals from outside and turns them into a policy.</p><p>Of the three boundaries in this article, this one looks closest to an engineering problem.</p><h2>Pattern recognition without edge recognition</h2><blockquote><p>&#8220;Heroic response is often adaptive expertise in action: deep knowledge, pattern recognition, and creative problem-solving under pressure. These are exactly the capabilities that enable resilience when plans don&#8217;t match reality.&#8221; (p. 67)</p></blockquote><p>If transformers are unambiguously good at one thing, it&#8217;s this. We didn&#8217;t bolt pattern completion onto them; they&#8217;re made of it. Recognizing &#8220;this incident smells like that incident&#8221; is interpolation over seen patterns, and models can do it across more incidents than any single human will ever be paged for.</p><p><strong>The asterisk:</strong> it&#8217;s genuinely hard to tell recognition from recall. Flip a familiar problem into a counterfactual variant (same reasoning task, unfamiliar surface form) and performance often collapses. What looked like reasoning was partly reciting. Studies of clinical reasoning find an Einstellung-like effect in models: familiar surface features activate a habitual solution pattern that blocks the correct answer. A controlled study of LLM root-cause analysis across 48,000 fault scenarios still catalogued recurring failures such as hallucinated evidence and faulty causal attribution.</p><p>It is tempting to say that humans recognize patterns because they carry a causal model underneath. Sometimes they do. But the classic expertise research on firefighters and chess players is less flattering: human experts also retrieve familiar chunks and act before they can explain why.</p><p>So maybe reasoning-versus-reciting was never the real distinction.</p><p>The expert reliably carries a boundary signal: the <em>something&#8217;s off here</em> feeling that flips them out of fast recognition into slower deliberation, hedging, or asking for help. The model can recognize the pattern and continue fluently past its edge. The operator who knows the workaround also knows when this time is different.</p><h3>Harness-side: the storage half is basically solved</h3><p>Deep knowledge is where the harness genuinely delivers. Retrieval over runbooks and postmortems, hierarchical memory, skill libraries of executable procedures: the effect is not subtle. Voyager&#8217;s skill library was effectively its performance: remove it and progress plateaued. Agent-memory surveys repeatedly find that the gap between &#8220;has memory&#8221; and &#8220;doesn&#8217;t have memory&#8221; is often larger than the gap between model backbones.</p><p>This part of my opening argument survives scrutiny. The knowledge really doesn&#8217;t resign. It&#8217;s version-controlled, diffable, and copyable across a fleet. The retention and distribution of expertise, and the key-person risk the book keeps flagging, are problems harnesses straightforwardly reduce.</p><p>But a memory can only store what was externalized. Retrieval gives you the workaround. It does not give you the causal boundary that tells you when the workaround has stopped applying.</p><p><strong>The harness solves retention. The model supplies recognition. Neither reliably supplies edge recognition.</strong></p><div><hr></div><h1>Part 2: Knowing that you&#8217;ve stepped off the plan</h1><p>Going off the plan is sometimes the job. The problem is not simply generating a different action. It is recognizing that you are deviating, deciding whether the deviation is warranted, coordinating around it, and later telling the difference between a good deviation and a bad one.</p><h2>Judgment calls, and the courage to deviate</h2><blockquote><p>&#8220;Every incident that gets resolved involves adaptation, judgment calls, improvised workarounds, coordination that procedures didn&#8217;t anticipate.&#8221; (Ch. 5)</p></blockquote><h3>Model-side: we trained for compliance, not sanctioned deviation</h3><p>Instruction-following is the post-training objective. The alignment pipeline optimizes models to do what they&#8217;re told, agreeably. The best-documented side effect is sycophancy: models sometimes sacrifice truthfulness for agreement because both human raters and preference models reward convincing compliance.</p><p>Now hold that next to what the WAI/WAD gap demands. The operator&#8217;s critical move is a disagreement: <em>the runbook says X, I&#8217;m doing Y, because this time is different.</em> Sycophancy is not exactly the same failure (it is deference to a user rather than a procedure), but it exposes the same reflex: comply with the salient instruction instead of exercising judgment against it.</p><p>So the capability is not literally &#8220;trained out.&#8221; But it is at least mildly anti-trained. &#8220;Less sycophantic&#8221; is still a long way from &#8220;will break procedure on its own judgment, at the right time, for the right reason.&#8221;</p><p>And judgment has a duration problem on top of a direction problem. Vending-Bench gave agents a trivially simple long-running task: run a vending machine. Every individual decision was easy, yet over long horizons agents derailed into meltdown loops, misreading their own operational state and then spiraling. An agent that <em>was</em> willing to deviate would still need to remain coherent long enough to know why it was doing so.</p><h3>Harness-side: guardrails are runbooks for agents</h3><p>The harness answer is governance: approval gates, confidence thresholds, bounded autonomy, and a maturity ladder from read-only insights to advised actions, approval-based remediation, and eventually autonomous operation with guardrails.</p><p>This is sensible. I would not deploy it any other way.</p><p>But let&#8217;s be honest about what we just built. <strong>Guardrails are runbooks for agents.</strong> A permission boundary is a documented procedure. The governance layer is Work-as-Imagined reconstructed around the model: anticipated situations, pre-approved responses, escalation paths designed in advance.</p><p>It expands robustness. The list of known failure classes the agent may handle grows. It does not automatically create graceful extensibility, which is about what happens when the situation is not on the list.</p><p>We&#8217;ve built an agent that follows procedures, wrapped it in procedures about when it may act, and the one human trait resilience engineering keeps emphasizing, sanctioned skillful deviation, is the thing both layers are designed to constrain.</p><p><strong>Again, this may be the correct engineering tradeoff in 2026. I just want us to stop describing it as closing the gap.</strong></p><h2>Can the agent produce a deviation worth making?</h2><p>Suppose the agent did have the judgment to deviate. Can it generate the improvised workaround nobody documented?</p><p>The psychometric results are almost embarrassing in how flattering they are. GPT-4 scored in the top 1% of humans on parts of the Torrance Tests of Creative Thinking. On divergent-thinking tasks, GPT models beat the average human, although the most creative humans still win. Hand an incident to a model and ask for ten unconventional mitigation ideas and you will get ten, quickly, several of them decent.</p><p>Then you look at populations instead of samples and the picture inverts. Individually original outputs are collectively homogeneous: different runs, different models, same neighborhoods of idea-space. In experiments with 1,100 participants, people exposed to LLM assistance produced less diverse ideas, and some homogenization persisted after the LLM was removed.</p><p>Models sample the modal creative answer.</p><p>Although I also think we over-romanticize what &#8220;creative&#8221; means at 3am. Most incident workarounds are recombination: use tool X for unintended purpose Y, route around Z through a path nobody documented. That&#8217;s favorable terrain for LLMs.</p><p>The more encouraging result appears on the harness side. FunSearch and AlphaEvolve pair an LLM that cheaply generates candidate solutions with a reliable evaluator that kills bad ones. Novelty emerges from the loop, not from a single inspired sample.</p><p>Which tells you exactly where this transfers to operations. The loop needs a fitness function. During a live incident, the only fully faithful evaluator is production itself, and the cost per sample is your blast radius. You cannot run three hundred candidate mitigations against prod and keep the survivors.</p><p>But resilience engineering already builds the artifact this recipe needs: chaos experiments, game days, and staging environments that actually resemble production. These are not only robustness tests. They are potential evaluators for agent-generated deviations. The better your failure-injection environment, the more of the FunSearch recipe becomes available to your agents.</p><p><strong>Creativity becomes cheap generation multiplied by reliable verification. In operations, the expensive part is still the verification.</strong></p><h2>Coordination that procedures didn&#8217;t anticipate</h2><p>Novel coordination starts with a theory-of-mind move: reasoning about what the person on the other end of the bridge call might know but has not said. Hidden-profile studies, where the correct answer requires pooling information distributed across multiple agents, show multi-agent LLM groups converging prematurely on the evidence everyone shares. They do not reliably probe for the missing private fact.</p><p>Human incident bridges have their own pathologies, but an experienced incident commander&#8217;s core move is precisely this: <em>you&#8217;re quiet, what are you seeing that we&#8217;re not?</em></p><p>The harness fix is protocols: typed handoffs, structured messages, MCP, A2A, explicit roles. Valuable, yes. But protocols are coordination-as-imagined. They encode interactions someone anticipated.</p><p>The coordination Adrian describes is often off-protocol: pulling in the engineer who wrote the service three years ago, calling a vendor contact at 2am, changing who decides what because the normal owner is on a plane. Humans improvise the social structure itself. Agent coordination happens inside a structure that was designed, which means it inherits the designer&#8217;s imagination as its ceiling.</p><p><strong>This is the same pattern again. The harness expands the known structure. It does not prove the agent can recognize when the structure itself should change.</strong></p><h2>The record problem: a clean trace is not Work-as-Done</h2><p>My first instinct was that agents finally solve the visibility problem. They generate their own Work-as-Done and, unlike humans, it is fully logged: every tool call, every trajectory, recorded, diffable, replayable. Take the runbook, take the actual trajectory, compute the divergence. Mechanically, continuously, for every incident.</p><p>Except &#8220;fully logged&#8221; can never be quite true. <strong>Someone chose what to instrument.</strong></p><p>A log is not Work-as-Done. It is a projection of Work-as-Done through an observability model designed in advance.</p><p>The agent really did run that command at that timestamp, so the mechanical record is genuinely better than a human reconstruction. But the boundary decision, the <em>why this and not the runbook?</em>, lives elsewhere. A reasoning trace is a story the model tells about its computation, not necessarily the computation itself. Humans are not better narrators: postmortems collect tidy explanations after the fact, and psychology has repeatedly shown how fluently we justify choices without access to the actual process that produced them.</p><p>So agents improve the record on the layer that was never the whole problem.</p><p>And this creates a risk I had not expected: <strong>false legibility.</strong></p><p>With a human, the adaptation may be present but invisible. With an agent, the trace is visible, beautifully structured, and the adaptation may not be there at all. It can walk straight past the boundary and leave a clean, confident, well-formatted log of doing so.</p><p><strong>The WAI/WAD gap does not necessarily become more visible with agents. It changes shape. And the new shape may be harder to see precisely because it comes with such reassuring logs.</strong></p><div><hr></div><h1>Part 3: Knowing that the world has drifted away from the plan</h1><p>The hardest flavor: noticing, fast, that the world is no longer the one the plan was written for.</p><p>There is another thing the human operator does. The runbook says step four, and something about step three&#8217;s output makes them pause before they type. Not a reasoned objection. Just a sense that <em>this isn&#8217;t how it usually looks.</em> Adrian&#8217;s operator who checks three things before following the alert is running on this. So is the engineer who feels, before they can say why, that the Asia Pacific deploy is about to go sideways.</p><p>It&#8217;s surprise.</p><p>On one influential account in neuroscience (predictive processing), the brain is continuously predicting its incoming signals: how gravity will pull, how your arm will move, what the screen will show after you hit Enter. You do not experience the prediction. You experience the error. When the world matches, the prediction is silent and you act on autopilot. When it doesn&#8217;t, you get the physical <em>off</em> feeling of walking on a planet with the wrong gravity, or being in a dream where the door is where it shouldn&#8217;t be.</p><p><strong>The operational summary is short: the brain is very good at being surprised by the right things, fast.</strong></p><p><strong>So: can we give an agent the feeling of surprise?</strong></p><h2>Two things called prediction</h2><p>LLMs are also trained on a prediction objective, so it is tempting to wave the question away: &#8220;they already predict; they&#8217;ve got this.&#8221; But two different things wear the same word.</p><ul><li><p><strong>Prediction-as-generation:</strong> what symbol comes next in a sequence.</p></li><li><p><strong>Prediction-as-forward-model:</strong> what the world will return if I take this action, and whether the actual return matches.</p></li></ul><p>LLMs are extraordinary at the first. The operator is doing the second.</p><p>Generating a plausible continuation and simulating an outcome you can be <em>wrong about</em> are not the same computation. The fact that a model predicts words all day tells us nothing, by itself, about whether it can notice the world drifting under a plan.</p><h3>Model-side: fluent one step out, blind several steps on</h3><p>ForecastBench asks models for probabilities about events that genuinely have not happened yet, then scores them after reality resolves. Expert human forecasters still beat the best-performing LLMs. Not useless. Below.</p><p>But forecasting geopolitics is the open world, and that is not quite the operator&#8217;s job. The operator predicts the next state of one system. The more revealing probes ask exactly that.</p><p>Work on LLM world models for computer-use agents finds a clear pattern: models can often capture the immediate next state and recognize meaningful transitions, but they degrade rapidly when asked to hold that forward model across a full procedure. One step out, the surprise is roughly there. Several steps out, errors compound and the prediction wanders away from anything real.</p><p>PlanBench-XL makes the test even closer to operations. It places agents in large tool environments and then, mid-task, breaks the path they were counting on: a tool disappears, fails, or turns into a decoy. The plan was fine; the world moved. Under the harshest disruption, performance collapses. The agent often keeps walking toward where the door used to be.</p><p><strong>Next-token prediction taught it to expect the next word. It did not teach it to be surprised by the next world.</strong></p><h3>Harness-side: shrink the world until the mismatch has nowhere to hide</h3><p>Here narrowing the world pays off. We do not need to reconstruct a human brain surfing the open world in milliseconds. We are operating <em>one system</em>, and, if we have done the observability work, it is a system whose state we can read.</p><p>That changes the problem from &#8220;have a forward model of reality&#8221; to &#8220;build a small, instrumented world where an expectation and a mismatch are both legible and actionable.&#8221;</p><p>There are three ways to narrow it:</p><ol><li><p>Narrow the <strong>world</strong>: one instrumented system instead of open reality.</p></li><li><p>Narrow the <strong>horizon</strong>: predict one step ahead instead of an entire trajectory.</p></li><li><p>Narrow the <strong>prediction itself</strong>: predict what changes, not everything that exists.</p></li></ol><p>The clearest pattern is <em>simulate before you commit.</em> WebDreamer asks an LLM to imagine the outcome of candidate actions before touching the real environment, then executes only the most promising one. The motivation is irreversibility: you cannot un-buy the non-refundable ticket, so you had better predict the consequence first.</p><p>WMA narrows the prediction itself. A web page&#8217;s next state may contain thousands of tokens, almost all identical to the current state, so it predicts only the delta: what should change after the action. That is not only cheaper. A delta is exactly the shape needed for surprise. Compare &#8220;what I expected to change&#8221; with &#8220;what actually changed,&#8221; and the mismatch becomes a tractable signal.</p><p>But an imagined world model drifts. Retrieval-augmented approaches ground the prediction in tutorials and current procedural knowledge, which helps on long horizons, but introduces the original trap again: a forward model stuffed with retrieved procedure and never checked against reality is just a longer-reach Work-as-Imagined wearing a forecaster&#8217;s hat.</p><p>COMAP shows why the world model must keep learning from what actually happened. Freeze it and prediction accuracy falls as the agent enters states it has not seen. Its more interesting move is future-aware reflection: estimate how trustworthy the prediction is and lean on it only when it appears reliable. It even measures when corrections make things worse.</p><p>That reaches for the capability I said at the start I would least trust an agent to have: not only a prediction, but a read on when the prediction does not apply.</p><p>ForeAgent uses execution priors to predict the likely result of expensive machine-learning experiments before running them. The predict-then-verify loop converges much faster, but raw predictive accuracy remains nowhere near something you would act on unguarded. Hence the <em>verify</em>. Prediction is a way to prune, not a verdict.</p><p>PreAct makes the whole mechanism look almost human. Each stored step carries a prediction of what the screen should look like after the previous action. Before continuing, the agent compares the prediction with the live state. Match, and it proceeds on the fast path. Mismatch, and it drops out of automatic replay into slower reasoning and recovery.</p><p>One known workflow. One step ahead. One expected change at a time.</p><p>The surprise, wired in.</p><p>This is probably the most reproducible of the operator&#8217;s faculties precisely because we are allowed to shrink the world, the horizon, and the prediction until the mismatch has nowhere to hide.</p><p>But the hard part remains the same as everywhere else in this article. Generating a prediction is cheap. A <em>calibrated</em> surprise signal, one that fires when the world is genuinely different, stays quiet when it only looks different, and keeps re-grounding instead of hardening into another WAI: that&#8217;s the frontier.</p><div><hr></div><h1>Let&#8217;s root cause this</h1><p>Every section above ends in the same sentence wearing different clothes: the agent does not reliably know its boundary.</p><p>A lot of the time when I think about agentic systems I come to the conclusion: humans are just better, keep them in the loop, escalate to them. That conclusion is correct, but it doesn&#8217;t answer the <strong>why</strong>. What is the human operator doing that the agent stack isn&#8217;t?</p><p><strong>&#8220;I might not know this.&#8221;</strong> The static one. The model&#8217;s self-knowledge wobbles: it expresses uncertainty it doesn&#8217;t have, hides uncertainty it does, and disagrees with itself across samples. But the wobble is measurable from outside, and the harness can act on it. Detect, retry. Detect, escalate. This one increasingly looks like an engineering problem.</p><p><strong>&#8220;I deviated from the plan.&#8221;</strong> The traceable one, with a large asterisk. The agent&#8217;s tool calls can be recorded and diffed against the runbook. But the record only contains what someone chose to instrument, and deciding whether a deviation was good or bad is the actual hard problem. &#8220;Incident solved&#8221; sounds like a clean signal until you look at what &#8220;resolved&#8221; means in your ticketing system.</p><p><strong>&#8220;The world is not what it was when the plan was written.&#8221;</strong> The surprise. Continuous, fast, action-conditioned prediction of what should happen next, with mismatch as the alarm. The emerging harness-side answer is to shrink the world, predict the delta, verify against the live state, and treat surprise as the trigger to slow down.</p><p>The first boundary is increasingly tractable. The second looks tractable until you ask who judges the deviation. The third is young, bounded, and dependent on good old engineering: observability, simulation, staging, failure injection, and a world small enough to model.</p><p>The gap between Work-as-Imagined and Work-as-Done is not closed. We built agents that hold more runbooks than any human ever will, and we&#8217;re figuring out the signals that tell it when the runbook stops applying and WHY.</p><p>The gap is relocated:</p><ul><li><p>from undocumented workarounds into retrieved memories whose boundaries are unclear;</p></li><li><p>from human judgment into confidence thresholds and approval gates;</p></li><li><p>from invisible adaptation into visible trajectories that may create false legibility;</p></li><li><p>from the operator&#8217;s <em>something is off</em> feeling into a forward model whose own drift must be monitored.</p></li></ul><p>Models get better, harnesses get creative and strong engineering environments give you possibility to build systems that can predict-notice-act.</p><p>These are the root causeS, as far as I can trace it today.</p><h2>Sources</h2><h3>The book</h3><ul><li><p>Adrian Hornsby, <em>Why We Still Suck At Resilience: Organizational Dynamics</em>, Leanpub, 2026.</p></li></ul><h3>Self-knowledge, uncertainty, abstention</h3><ul><li><p>Yin, Sun, Guo, Wu, Qiu &amp; Huang, <em>Do Large Language Models Know What They Don&#8217;t Know?</em>, Findings of ACL 2023. arXiv:2305.18153</p></li><li><p>Ling, Tang, Liu, Yang, Fu, Huang, Huang, Wan, Hou &amp; Hu, <em>Awakening LLMs&#8217; Reasoning Potential: A Fine-Grained Pipeline to Evaluate and Mitigate Vague Perception</em> (WakenLLM), 2025. arXiv:2507.16199</p></li><li><p>Ren, Wang, Lai, Wang, Gong, Li, Ma &amp; Liu, <em>Beyond &#8220;I Don&#8217;t Know&#8221;: Evaluating LLM Self-Awareness in Discriminating Data and Model Uncertainty</em>, 2026. arXiv:2604.17293</p></li><li><p>Kirichenko, Ibrahim, Chaudhuri &amp; Bell, <em>AbstentionBench: Reasoning LLMs Fail on Unanswerable Questions</em>, 2025. arXiv:2506.09038</p></li><li><p>Xiong, Hu, Lu, Li, Fu, He &amp; Hooi, <em>Can LLMs Express Their Uncertainty? An Empirical Evaluation of Confidence Elicitation in LLMs</em>, ICLR 2024. arXiv:2306.13063</p></li><li><p>Chen, Wang, Liu, Wang &amp; Wang, <em>From Failed Trajectories to Reliable LLM Agents: Diagnosing and Repairing Harness Flaws</em> (HarnessFix), 2026. arXiv:2606.06324</p></li></ul><h3>Pattern recognition, memory, reasoning limits</h3><ul><li><p>Wu, Qiu, Ross, Aky&#252;rek, Chen, Wang, Kim, Andreas &amp; Kim, <em>Reasoning or Reciting? Exploring the Capabilities and Limitations of Language Models Through Counterfactual Tasks</em>, NAACL 2024. arXiv:2307.02477</p></li><li><p>Kim, Podlasek, Shidara, Liu et al., <em>Limitations of Large Language Models in Clinical Problem-Solving Arising from Inflexible Reasoning</em>, Scientific Reports, 2025. arXiv:2502.04381</p></li><li><p>Riddell, Riddell, Sun, Antkiewicz &amp; Czarnecki, <em>Stalled, Biased, and Confused: Uncovering Reasoning Failures in LLMs for Cloud-Based Root Cause Analysis</em>, FORGE 2026. arXiv:2601.22208</p></li><li><p>Wang, Xie, Jiang, Mandlekar, Xiao, Zhu, Fan &amp; Anandkumar, <em>Voyager: An Open-Ended Embodied Agent with Large Language Models</em>, 2023. arXiv:2305.16291</p></li><li><p>Du, <em>Memory for Autonomous LLM Agents: Mechanisms, Evaluation, and Emerging Frontiers</em>, 2026. arXiv:2603.07670</p></li><li><p>Klein, <em>Sources of Power: How People Make Decisions</em>, MIT Press, 1998</p></li><li><p>Chase &amp; Simon, <em>Perception in Chess</em>, Cognitive Psychology 4(1), 1973</p></li><li><p>Polanyi, <em>The Tacit Dimension</em>, University of Chicago Press, 1966</p></li></ul><h3>Creativity, judgment, coordination</h3><ul><li><p>Guzik, Byrge &amp; Gilde, <em>The Originality of Machines: AI Takes the Torrance Test</em>, Journal of Creativity 33(3), 100065, 2023</p></li><li><p>Koivisto &amp; Grassini, <em>Best Humans Still Outperform Artificial Intelligence in a Creative Divergent Thinking Task</em>, Scientific Reports 13, 2023</p></li><li><p>Wenger &amp; Kenett, <em>Large Language Models Are Homogeneously Creative</em>, PNAS Nexus 5(3), pgag042, 2026</p></li><li><p>Kumar, Yeo, Grewal, Li, Williams et al., <em>Human Creativity in the Age of LLMs: Randomized Experiments on Divergent and Convergent Thinking</em>, CHI 2025. arXiv:2410.03703</p></li><li><p>Romera-Paredes, Barekatain, Novikov, Balog, Kumar, Dupont, Ruiz, Ellenberg, Wang, Fawzi, Kohli &amp; Fawzi, <em>Mathematical Discoveries from Program Search with Large Language Models</em> (FunSearch), Nature 625, 468&#8211;475, 2024</p></li><li><p>Novikov, V&#361;, Eisenberger, Dupont, Huang et al., <em>AlphaEvolve: A Coding Agent for Scientific and Algorithmic Discovery</em>, 2025. arXiv:2506.13131</p></li><li><p>Sharma, Tong, Korbak, Duvenaud, Askell et al., <em>Towards Understanding Sycophancy in Language Models</em>, ICLR 2024. arXiv:2310.13548</p></li><li><p>Backlund &amp; Petersson, <em>Vending-Bench: A Benchmark for Long-Term Coherence of Autonomous Agents</em>, 2025. arXiv:2502.15840</p></li><li><p>Cemri, Pan, Yang, Agrawal, Chopra, Tiwari, Keutzer, Parameswaran, Klein, Ramchandran, Zaharia, Gonzalez &amp; Stoica, <em>Why Do Multi-Agent LLM Systems Fail?</em> (MAST), 2025. arXiv:2503.13657</p></li><li><p>Li, Naito &amp; Shirado, <em>Systematic Failures in Collective Reasoning under Distributed Information in Multi-Agent LLMs</em> (HiddenBench), ICML 2026. arXiv:2505.11556</p></li><li><p>Nisbett &amp; Wilson, <em>Telling More Than We Can Know: Verbal Reports on Mental Processes</em>, Psychological Review 84(3), 1977</p></li><li><p>Johansson, Hall, Sikstr&#246;m &amp; Olsson, <em>Failure to Detect Mismatches Between Intention and Outcome in a Simple Decision Task</em>, Science 310, 2005</p></li></ul><h3>Prediction, world models, drift</h3><ul><li><p>Clark, <em>Whatever Next? Predictive Brains, Situated Agents, and the Future of Cognitive Science</em>, Behavioral and Brain Sciences 36(3), 2013</p></li><li><p>LeCun, <em>A Path Towards Autonomous Machine Intelligence</em>, OpenReview, 2022</p></li><li><p>Karger, Bastani, Yueh-Han, Jacobs, Halawi, Zhang &amp; Tetlock, <em>ForecastBench: A Dynamic Benchmark of AI Forecasting Capabilities</em>, ICLR 2025. arXiv:2409.19839</p></li><li><p>Liu, Lin, Qian, Wang, Acikgoz, Yang, Liu, Wang, Chen, Ji &amp; Hakkani-T&#252;r, <em>PlanBench-XL: Evaluating Long-Horizon Planning of LLM Tool-Use Agents in Large-Scale Tool Ecosystems</em>, 2026. arXiv:2606.22388</p></li><li><p>Gu, Zheng, Koh, Su et al., <em>Is Your LLM Secretly a World Model of the Internet? Model-Based Planning for Web Agents</em> (WebDreamer), TMLR 2025. arXiv:2411.06559</p></li><li><p>Chae, Kim, Ong, Gwak, Song, Kim, Kim, Lee &amp; Yeo, <em>Web Agents with World Models: Learning and Leveraging Environment Dynamics in Web Navigation</em> (WMA), ICLR 2025. arXiv:2410.13232</p></li><li><p>Mei, Guo, Chang, Dong, Lee, Niu &amp; Jiang, <em>R-WoM: Retrieval-Augmented World Model for Computer-Use Agents</em>, 2025. arXiv:2510.11892</p></li><li><p>Liu, Wang, Wang &amp; Li, <em>COMAP: Co-Evolving World Models and Agent Policies for LLM Agents</em>, 2026. arXiv:2606.02372</p></li><li><p>Zheng, Zhang, Luo, Mao, Gao, Du, Chen &amp; Zhang, <em>Can We Predict Before Executing Machine Learning Agents?</em> (ForeAgent), 2026. arXiv:2601.05930</p></li><li><p>Li, B., <em>PreAct: Computer-Using Agents that Get Faster on Repeated Tasks</em>, 2026. arXiv:2606.17929</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Like Breathing]]></title><description><![CDATA[Reflections on Creativity and Automation]]></description><link>https://www.thoughtfultechnologist.com/p/like-breathing</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/like-breathing</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Thu, 02 Jul 2026 20:12:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b381445e-685f-49c6-afe2-af0f2701ebc7_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I like to automate things. You know I do. And I like to optimize things too. Which means at some point, THAT - the process of creation of automation - consumes the time that was dedicated to the creation of the thing itself.</p><p></p><p>When I started my podcast, a fellow podcaster shared their process around creating theirs - the xlsx, the notion, the agents and scripts around it. I appreciate that of course and it was impressive. But I made myself not have it, because in this case, in case of cla creative process, the process of doing it is kinda the point itself.</p><p></p><p>I heard an author (like a real fiction book author) answer to a question of they'd delegating writing to AI ever and their answer was - would you delegate making love to someone? no? well why would I delegate something I love doing?</p><p></p><p>Look I'm not against AI assisted anything, and I've seen some truly creative things done with AI. Hell, the cover of this article is AI. And even if you're generating some large amount of content with AI and pushing it in regular basis&#8230; it's fine. Everything is fine. You do you. Your content has a different purpose. different audience.</p><p></p><p>I'm not angry anymore.</p><p></p><p>And yeah, eventually it started consuming more time - record, edit, come up with description, caption, cover image, share text, different for each platform, and where's the email of the guest??</p><p></p><p>So yeah, I did it. Or rather started it. I now have a notion database, where I keep all the surrounding material and a bunch of skills that help me research or suggest titles (which are bad usually, I end up writing them myself of course. Naming things is still hard somehow.) write descriptions that LinkedIn wouldn't hide from the world, generate summaries for people who need to decide to listen or not&#8230;</p><p></p><p>Now the key is to stop myself, not even because I'm at the risk of delegating thinking or delegating creativity. I know I'm not, (at the risk of delegating creativity) because when you own something 100% you don't doubt for a second that what AI blopt out is bad and "not you".</p><p></p><p>The risk is different. the risk is that I keep automating, and polishing and continuously improving. I'll sink into that obsessive-compulsive hole, where each step of mine creates more steps.</p><p></p><p>It's a bit like a LitRPG. Every optimization unlocks another optimization. You level up your workflow, which unlocks new abilities, which reveal new inefficiencies, which earn you enough experience to level up again</p><p></p><p>Social media works the same way. One post gets more likes, so you post again. That one performs even better, so now you should optimize the thumbnail, the hook, the posting time, the title, the platform, the comments, the newsletter. Every success creates another expectation.</p><p></p><p>Agentic workflows are no different. You add a planner, which now needs a critic. The critic needs an evaluator. The evaluator needs metrics. The metrics need dashboards. Eventually, the system starts growing faster than the problem it was supposed to solve.</p><p></p><p>The common denominator with all three? THEY GIVE YOU ANXIETY. Okay, they give ME anxiety.</p><p></p><p>Automation does give me both satisfaction and anxiety. The way litrpg does. the way social media does.</p><p></p><p>Every system eventually starts optimizing for itself&#8230;</p><p>The metric replaces the purpose.</p><p>The infrastructure replaces the work.</p><p>The routine replaces the joy.</p><p>The automation replaces the act.</p><p></p><p>Whenever the machinery around the work becomes more interesting than the work itself, it's time to stop and ask what you're really optimizing.</p><p></p><p>Tides - it's like tides. It should be like tides. you automate, you go back, you automate some more, you go back</p><p></p><p><a href="https://youtu.be/hCR5wvn5VRA?t=1985&amp;is=20nyXhoomlHLg9yD">Marc was right</a> - a lot of the things that made me good as a software engineer, are hurting content creation.</p><p></p><p>And vice-versa to be honest. I again come back to the understanding that I take everything I do with too much reflection about how I do it and with too much creativity.</p><p></p><p>I know I'm extremely out of place with my reflections about creativity and ambitions of creators. Create something first, preferably something genius, and then you earn the right to reflect about it.</p><p></p><p>And is this the place to even talk about all this? Let's face it we're all here for business. But I can't help myself. And I'm finally owning doing what I can't not do. I take all aspects of my life this way&#8230;As one of my dear friends said &#8220;you pass life on level Hard&#8221;</p><p></p><p>Building a product or building a business really is not about creativity. If someone says it is, they are selling you a dream so then they can sell you a course on how to create businesses. Business is about money, about network, about favors. Yes about bringing value. of course. But nobody needs this overly philosophical, creative attitude of mine.</p><p></p><p>So maybe work should just stay work and creativity should be creativity.</p><p>&#183;&#183;&#183;</p><p>&#183;&#183;&#183;</p><p>I saw a reel the other day where a South Korean filmmaker Bong Joon-ho speaks about his creativity process - he actively avoids grand rituals and dramatic routines. He stated, that his ultimate goal is to make films "as naturally as breathing" without making a big deal out of it.</p><p></p><p>And I think that's how everything in life is supposed to be. Or at least we are allowed to do that, when it comes to creativity. </p><p></p><p>The moment I lose this, is the moment I need to pause. Otherwise it becomes "job", it becomes a must and it creates pressure, and I don't like what I'm creating anymore.</p><p></p><p>I remember a documentary about Miyazaki's movies, where it was pointed out that there are scenes in his movies that do not advance the plot in any way (as opposed to Hollywood movies), they are there to create the atmosphere.</p><p></p><p>There were periods in my life (and I think there still will be) when I feel guilty for not working. When just sitting without anything feels like I'm losing precious time to nothing. I'm not building, I'm not learning, I'm not progressing.</p><p></p><p>We optimize away</p><ul><li><p>idle time - we open social networks and consume them or (slightly better?) create content</p></li><li><p>walks - we listen to podcasts while we walk</p></li><li><p>reading - we take notes and think of the next article we'll create based on that reading</p></li></ul><p>&#183;&#183;&#183;</p><p></p><p>I'm staring now at all I wrote and I don't know what is the point I'm trying to make. And THAT already contradicts what I just wrote&#8230; </p><p></p><p>I think my point is - I'm ready to accept that work is work, and creativity is creativity. And in work the obsession with automation can come as a benefit - I can go deep and automate the shit out of everything (let me know if you need that)</p><p></p><p>In creativity though? In my podcast, in my little articles I pour my heart and soul into? That I'll try to keep as breathing. No special mood, no special routine, least amount of AI, least amount of automation&#8230; </p><p>&#183;&#183;&#183;</p><p>If you've subscribed for some AI-in-SDLC content, please don't go away. I'll write about it, I have thoughts and ideas. But it's summer (at least on this side of the world), and it's sunny(well, technically raining atm) and there are fresh berries and fruits and life is good. Let's just take a moment, shall we? Put your face under the sun, drink that coffee, bite that orange, read that book and don't follow it all up with a video, picture or a post.</p><p></p><p>And if you've read this far and you liked it please let me know, would you?</p><p></p><p>Thanks &#9829;&#65039;</p><p>Nune</p>]]></content:encoded></item><item><title><![CDATA[Root Cause of a Healthy Team]]></title><description><![CDATA[Watch now (79 mins) | In this episode of Root Cause we sit down with Eric Lubow, a CTO who treats organizations like distributed systems, which means the root cause of a broken team is usually a design problem, not a people problem.]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-a-healthy-team-b06</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-a-healthy-team-b06</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Mon, 29 Jun 2026 15:29:20 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211561074/c610ebf37a4805badc35968081351106.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Eric Lubow, a CTO who treats organizations like distributed systems, which means the root cause of a broken team is usually a design problem, not a people problem. Eric has spent more than 20 years building and repairing teams and platforms, from co-founding SimpleReach to running engineering through dozens of acquisitions at Thrasio, and he is now Chief Product and Technology Officer at Mapp. He is also a jiu-jitsu coach, and that shapes how he leads. We get to the root cause of what actually makes a team healthy, why becoming a manager means changing your definition of done, and why ceding control is the part nobody warns you about. We talk about leading AI agents the way you would lead a person, why silent heroes quietly turn into silent burnouts, and how to hire into a team instead of into a vacuum. Honest and specific, with none of the leadership-content platitudes, including the lonely parts of the job most people at the top never say out loud.</p><p>00:00 Introduction: What Makes a Healthy Team</p><p>03:05 Jiu-Jitsu, Languages, and a Healthy Ego</p><p>08:23 Martial Arts, Balance, and "Everything Is Maintenance"</p><p>13:12 Teams as Distributed Systems and Conway's Law</p><p>16:38 The IC-to-Manager Transition: Ceding Control</p><p>19:10 Delegation and a New Definition of Done</p><p>22:24 Giving Away Your Legos</p><p>23:49 Can You Learn to Be a Manager?</p><p>25:21 Don't Just Become the Opposite of Your Bad Manager</p><p>27:54 Leading AI Agents Like You Lead People</p><p>31:55 Will AI Replace People? Force Multiplier, Not Replacement</p><p>36:45 What Actually Makes a Team Healthy</p><p>38:56 Adoption Curves and Why Teams Mimic Leaders</p><p>42:06 A Culture of Sharing vs Shadow IT and Shadow AI</p><p>47:41 The Hero Problem: Silent Heroes, Silent Burnout</p><p>53:20 Burnout, Boundaries, and Trusting the Team</p><p>55:33 Hiring Into a Team, Not a Vacuum</p><p>1:02:15 The Loneliness of Leadership</p><p>1:06:48 Why "I Don't Know" Is a Sign of Strength</p><p>1:09:13 Book Recommendations: Sci-Fi and Leadership</p><p>1:13:49 What Eric Would Tell His Younger Self</p><p>1:15:45 The Most Benign Thing You're Proud Of</p><p>Find Eric at:</p><p>&#8226; Linkedin: <a href="https://www.linkedin.com/in/eblubow/">https://www.linkedin.com/in/eblubow/</a></p><p>&#8226; His blog: <a href="https://eric.lubow.org">https://eric.lubow.org</a> (which heavily influenced this episode)</p><p>&#8226; Beyond the Belt podcast: <a href="https://www.youtube.com/@beyondthebeltpod">https://www.youtube.com/@beyondthebeltpod</a></p><p>Find me (Nune) at:</p><ul><li><p>LinkedIn<em>:</em> <a href="https://www.linkedin.com/in/nisabek/">https://www.linkedin.com/in/nisabek/</a></p></li><li><p>Substack<em>:</em> <a href="https://www.thoughtfultechnologist.com/">https://www.thoughtfultechnologist.com/</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Root Cause of Solopreneur Success]]></title><description><![CDATA[Before, During, and After AI]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-solopreneur-success</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-solopreneur-success</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Wed, 24 Jun 2026 05:44:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/xh4F80Fu458" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Orel&quot;,&quot;id&quot;:51141391,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f8O0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e073cc8-6507-4def-8274-c14d2145a022_511x511.png&quot;,&quot;uuid&quot;:&quot;e5a9653c-7e76-4910-bca4-93e12aaf8fd7&quot;}" data-component-name="MentionToDOM"></span> the solo builder behind <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;WriteStack&quot;,&quot;id&quot;:232333331,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/daaddd90-7d66-4dda-a2b9-1dd7a0ca679a_732x732.png&quot;,&quot;uuid&quot;:&quot;4f75c3ec-fa0f-4871-9a0f-4089635935da&quot;}" data-component-name="MentionToDOM"></span>, the biggest tool out there for Substack creators. Orel spent close to 600 days shipping around ten products that made zero dollars, then picked one thing, stuck with it for six months, and turned it into a six-figure business. He has lived three versions of solo building in three years: before the current AI tooling, as it arrived, and now. We get to the root cause of what AI actually changed for one-person companies and what it didn&#8217;t. Building got faster, but knowing what to build, and sticking with it long enough to find out if it works, is exactly as hard as it always was. Honest and unfiltered, including the messy parts most &#8220;become an entrepreneur&#8221; content leaves out.</p><p><strong>Watch &amp; listen:</strong></p><div id="youtube2-xh4F80Fu458" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xh4F80Fu458&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xh4F80Fu458?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><iframe class="spotify-wrap podcast" data-attrs="{&quot;image&quot;:&quot;https://i.scdn.co/image/ab6765630000ba8ab852969ee98e7233fcb6854e&quot;,&quot;title&quot;:&quot;Root Cause of Solopreneur Success: Before, During, and After AI&quot;,&quot;subtitle&quot;:&quot;Nune&quot;,&quot;description&quot;:&quot;Episode&quot;,&quot;url&quot;:&quot;https://open.spotify.com/episode/35SZcZy9K3AwqR3mNiu3IE&quot;,&quot;belowTheFold&quot;:false,&quot;noScroll&quot;:false}" src="https://open.spotify.com/embed/episode/35SZcZy9K3AwqR3mNiu3IE" frameborder="0" gesture="media" allowfullscreen="true" allow="encrypted-media" data-component-name="Spotify2ToDOM"></iframe><ul><li><p>&#127909; <a href="https://www.youtube.com/watch?v=xh4F80Fu458">Watch on YouTube</a></p></li><li><p>&#127911; <a href="https://open.spotify.com/episode/35SZcZy9K3AwqR3mNiu3IE?si=0bbc90c95bc74e64">Listen on Spotify</a></p></li><li><p>&#127911; <a href="https://podcasts.apple.com/us/podcast/root-cause-of-solopreneur-success-before-during/id1896559098?i=1000773735780">Listen on Apple Podcasts</a></p></li></ul><p><em>Below you&#8217;ll find the text version of this episode, for those, who prefer reading :)</em></p><div><hr></div><p><em>Guest: Orel Zilberman &#8212; Solo builder and creator of WriteStack</em></p><p>Orel Zilberman spent 599 days building around ten products that made exactly zero dollars. Then he picked one thing, stuck with it for six months, and turned it into WriteStack, now the biggest tool out there for Substack creators and a six-figure business. He started before the current AI tooling existed, kept building as it arrived, and is still building now, which makes him a rare person to ask what AI actually changed for one-person companies, and what it didn&#8217;t.</p><div><hr></div><h2>You don&#8217;t have to build something new</h2><p><strong>Nune:</strong> I have friends who, when I tell them what my business does, or what my previous startup did, say &#8220;well, doesn&#8217;t it exist already?&#8221; The sentiment is that you need a revolutionary, unique idea to have the right to be a startup or a creator. I don&#8217;t think that&#8217;s the case. People build for different reasons. What&#8217;s yours? Why did you start?</p><p><strong>Orel:</strong> First, the idea that you have to be novel and create something new is absolute nonsense. When I started creating tools for Substack creators, there were probably a dozen other tools out there. They were not good, in my opinion, but they were there and people knew about them. I came in, I fixed a lot of things, I built something that was already there. And right now <strong>WriteStack is the biggest tool out there for Substack creators by far</strong>. You don&#8217;t have to build something new. You just have to improve something that exists.</p><p>As for why I started, it began during COVID. About three months in, I read my first ever nonfiction book. It was about self-development, growth, and a little bit of entrepreneurship, and I got really hooked. I read more and more on the topic, and one thing led to another and I slowly developed that itch to do something besides work in a nine to five. Even though the salary for a software developer, which is my background, is very high, I just hated going to work every day. The people were extremely nice, but I still didn&#8217;t feel like it was my place.</p><p>I started investing in the stock market, and that made me some money and reassured me that I could do something beyond working. I also came out of a video game addiction around then. At one point I decided I wanted to quit everything and just focus on building something people would be willing to pay for. So on August 2023 I quit my job, and ever since then I&#8217;m building. And just to correct you, it&#8217;s actually 599 days that I built things that didn&#8217;t make any money. If only that first payment had come a day later, it would have been a clean 600.</p><p><strong>Nune:</strong> You&#8217;re one of those people who keep statistics about everything.</p><p><strong>Orel:</strong> You&#8217;d be surprised, but I&#8217;m very messy. Very messy. I have papers that I write random stuff on, I have Linear, I have Trello, I&#8217;m talking to Claude. I&#8217;m all over the place.</p><p><strong>Nune:</strong> That&#8217;s important for people to hear, because some of those &#8220;become an entrepreneur&#8221; books give the impression of a well-organized person who gets up at six AM, goes for a run, and never misses anything. In reality it&#8217;s a <strong>very creative process, and as a consequence a very personal one</strong>. There are people who are well organized and people who are messy, and that doesn&#8217;t prevent them from creating something.</p><blockquote><p>You don&#8217;t have to build something new. You just have to improve something that exists.</p></blockquote><h2>What Substack and WriteStack actually are</h2><p><strong>Nune:</strong> Some people listening might not know what Substack and WriteStack are. Can you explain Substack itself and what your tool does?</p><p><strong>Orel:</strong> Substack is a social platform that combines something like Twitter and Medium, where you can write both short form content and long form articles. It lets you have followers in the form of subscribers, and those subscribers subscribe to your newsletter by giving you their email. So they took the good thing about a social platform, the short form content and the feed, and integrated it with email collection and newsletters, and combined it into one platform. It&#8217;s a <strong>crazy achievement</strong>. X is following suit, and LinkedIn as well, adding their own long form part.</p><p>WriteStack is a tool that helps you manage everything around Substack. The notes you need to put out consistently, what to write about, replying to comments, statistics, and a lot more. It helps you manage everything in one place with automations.</p><p><strong>Nune:</strong> What I like about Substack is that it gathers people who like long form, which is what&#8217;s lacking from a lot of social platforms. It&#8217;s also a way to be in touch with your readers, because you get immediate reactions and comments on your long form. I also expect a lot of actual fiction writers to be there, writing the kind of novels you used to write on the forums and getting feedback while you write. It can get a bit noisy with people who write on Substack about Substack, which you have to do because your tool is all about Substack, but I find it sometimes too noisy. Still, I enjoy it, even though I joined not that long ago.</p><blockquote><p>They took the short form content and the feed, integrated it with email and newsletters, and combined it into one platform.</p></blockquote><h2>Why even bother building at all?</h2><p><strong>Nune:</strong> This brings me to the &#8220;why bother&#8221; comment I hear a lot. If you&#8217;re building for a platform, or a tool related to a platform, what if that platform releases tools that do what you do? They have the competitive advantage: more customers, more users, a bigger team. Why even bother if they&#8217;ll come and replace your tool?</p><p><strong>Orel:</strong> I have several answers. First, I&#8217;ve learned so much from building WriteStack that if something happened and I had to end it, <strong>I could build another product and make it profitable quite fast</strong>. I know what to do. That&#8217;s something I didn&#8217;t learn in my first year and a half of solopreneurship, not even close to what I learned in the past year.</p><p>Second, you can make money and get users into your app while they&#8217;re still working on theirs, even if you don&#8217;t know whether they&#8217;re working on anything like it.</p><p>Third, why would they even bother? WriteStack currently makes ten thousand in monthly recurring revenue, and ten thousand dollars is <strong>literally nothing to them</strong>. It doesn&#8217;t move the needle. They&#8217;re better focused on things that bring bigger creators to the platform, like improving the newsletter, the statistics, adding drip campaigns, rather than spending hundreds of thousands of dollars on engineers to build WriteStack 2.0. And even if they do, you&#8217;ll have enjoyed the journey and learned a lot. Let&#8217;s say in a year they build everything you have and shut you down. Or they don&#8217;t even build it, they just say &#8220;we don&#8217;t want third-party tools, get out.&#8221; I still had plenty of time to learn what works and what doesn&#8217;t, how to move on and create something new, and I made money along the way.</p><p><strong>Nune:</strong> Only benefits. It&#8217;s a very powerful feeling once you build something and it works and brings you good feedback, because then you&#8217;re empowered to build more. It&#8217;s similar to what you said about feeling miserable in your nine to five. Part of it is that you understood you can make money with a nine to five, you can force yourself to find another position. That&#8217;s already in the realm of your possibilities. So why not reach out for something new, challenge yourself, and not be miserable while you&#8217;re doing it?</p><p><strong>Orel:</strong> Another great benefit is that I&#8217;m not worried I&#8217;ll have to go back to work. I was on vacation for three and a half weeks, a complete vacation, and nobody was telling me &#8220;hey, you have to come back right now.&#8221; It&#8217;s a <strong>liberating feeling</strong>.</p><blockquote><p>Even if they shut me down, I still had plenty of time to learn. And I made money along the way.</p></blockquote><p><strong>Nune:</strong> There&#8217;s a third &#8220;why bother&#8221; going around, and it&#8217;s all about AI and how easy it is now to write a product. The sentiment is that anyone can take AI and build what you&#8217;ve built, that SaaS in general is dead, that product development is dead, because anyone can do it. So why would somebody pay extra for your product when they already pay for their Claude Code subscription?</p><p><strong>Orel:</strong> First of all, you can build almost anything today, that&#8217;s true. But you have to be very technical. You need to maintain it, make sure everything works, and know what&#8217;s going on behind the scenes. I tried to build a complete app from scratch with Claude Code Opus 4.7, a very simple app that collects feedback from people and emails it to me. That&#8217;s it. And <strong>it failed miserably</strong>. It had a lot of bugs. I tried to fix it many times. The moment it&#8217;s a little bit complicated, the AI struggles, and you need to know what to do, where to point it, what to add, what services to use.</p><p>For personal use you&#8217;ll probably get there eventually and build something for yourself. But if you&#8217;re making an app to sell it, having a complete product doesn&#8217;t mean you&#8217;ll have users. There&#8217;s a lot of competition, you need to be unique, you need a distribution channel to get people to use it, to pay you, and to trust you. <strong>Just having an app doesn&#8217;t mean you&#8217;ll have users.</strong> And building for yourself means spending a lot of hours, a lot of days, making it work exactly the way you want with all the features you want. People prefer to pay someone who built it, adds features, and maintains it a few bucks a month, and save those hours for something more valuable. You can spend a week building your perfect app for one specific use case, or pay someone twenty bucks a month and make something else worth way more than twenty bucks in that week.</p><p><strong>Nune:</strong> Thankfully people are starting to understand that AI building can bring you a prototype, a working first version, but nobody saves you from the continuous iteration. And the person who has dedicated their whole time to one specific problem has an endless advantage over you, who just built it in a week and said &#8220;that&#8217;s it, I have other things to do.&#8221; So no, SaaS is not dead.</p><p><strong>Orel:</strong> Exactly. I invested the last year and a half into learning Substack, knowing what works, what doesn&#8217;t, what any creator needs, and I&#8217;m still improving and iterating. People come to me and say &#8220;I can build a scheduler for myself now,&#8221; and I say okay, you can. How long will it take you? Then I ask a few technical questions. How would you import notes? How would you create a bunch of them and schedule them? And that&#8217;s just the scheduler, not all the other features WriteStack has. You can build something very simple, but to make it really good and not waste your time, you need to spend a lot of time.</p><p><strong>Nune:</strong> Plus, after you build it for yourself, the second stage for any product is making it work for thousands of users, which is a whole other story, and I think you&#8217;re dealing with that now.</p><p><strong>Orel:</strong> Yeah. I don&#8217;t think AI can replicate WriteStack as it is, because I have around ten different projects that each do something else. One gets the data, one reminds users about certain things, and there&#8217;s a lot of infrastructure in AWS and Google. It&#8217;s a lot of things beyond just having code that runs.</p><blockquote><p>Just having an app doesn&#8217;t mean you&#8217;ll have users.</p></blockquote><h2>Choosing what to stick with</h2><p><strong>Nune:</strong> You mentioned those 599 days of no income. Before WriteStack you tried other things, and I&#8217;ve read that you said what made WriteStack a success is that you stuck with that one thing. People often hear &#8220;stick with it and you&#8217;ll succeed.&#8221; But the problem most of the time isn&#8217;t the patience to stick with it, it&#8217;s choosing what to stick with. There&#8217;s a lot of unknown. You don&#8217;t know if it will work, and it&#8217;s hard to believe the promise that if you do this long enough, one day it will pay off. So how do you know the thing you&#8217;re doing is worth sticking with?</p><p><strong>Orel:</strong> Now I know. Now it&#8217;s easy to say. But back then I had no idea what was going to work, and I&#8217;ll let you in on a secret: <strong>I thought every single one of my ideas was a killer</strong>, the one I was going to break through with. There were a lot of unknowns. I had a lot of times when I felt miserable and depressed and didn&#8217;t know if I&#8217;d ever make enough money to live off of. It&#8217;s hard. It&#8217;s definitely hard.</p><p>The way I kept myself going is that I read books, a lot of books, and every book about entrepreneurship and self-growth says it takes time. People say 98% never make it, that 50% of businesses close, whatever. It doesn&#8217;t mean you can&#8217;t do it. And even if you fail, that&#8217;s 100% okay, because then you learn from it and move on to the next idea, and you keep learning until you get something working. And even then nobody promises anything. <strong>It&#8217;s up to you to keep trying, because eventually you&#8217;ll get the opportunity to succeed.</strong></p><p><strong>Nune:</strong> I like a quote from a science fiction book that says there is no such thing as luck, there is only adequate or inadequate preparation to cope with a statistical universe. If you&#8217;re prepared enough, you&#8217;ll get a lot of chances in your life, and if you&#8217;re prepared to take the chance and try something, eventually one of them works out. But to get practical: with all of those ideas you thought were genius and that didn&#8217;t work out, when was the point you said &#8220;this isn&#8217;t working, I should switch focus&#8221;? Can you draw a pattern, or was every one unique?</p><p><strong>Orel:</strong> Before WriteStack, every idea I had I gave maybe a week or two or three at most, and if I didn&#8217;t see any traction I dropped it. That was my <strong>number one mistake</strong>. I didn&#8217;t stick to one product long enough to even start marketing it, talking to people about it, getting feedback, and improving it. What I believed from what I read online was that you need to ship fast and kill even faster, get as many products out there as you can and see what works. That can work for a big creator, because when you have a lot of followers you can put out an idea and see how people react really fast. When you don&#8217;t have an audience, you can never know until you try and ask people manually, one by one, &#8220;hey, can you try this and tell me what you think?&#8221;</p><p>And about luck being preparation, I think it was Robin Sharma who said luck is preparation meeting opportunity. That&#8217;s exactly what happened to me. I used to spend a lot of time on Substack. I started on YouTube, moved to LinkedIn, then Twitter, then Substack. I was trying to be consistent on X and not really managing. But one day I opened the app and saw a tweet from Thibaut, the founder of Taplio, Tweet Hunter, SuperX, Revid, and a lot of other products. He was looking for a co-founder to build a Tweet Hunter competitor. Tweet Hunter is essentially WriteStack for Twitter. His previous co-founder hadn&#8217;t worked out, so he was looking for a new one, and I thought this could be a great opportunity to get myself out there, get people to know me, build something and make money.</p><p>So I sent him a message, then another one, then a video, then another video, until he replied. We started talking and he gave me about two weeks to add a feature to one of his apps. He had that Tweet Hunter competitor, SuperX, already built, but not the way he wanted it. He gave me the code and the data and asked me to add a feature. I had to learn so many new technologies I didn&#8217;t know back then, and I did it and learned them and sent him the code. Eventually I didn&#8217;t get to work with him. But doing that and learning those technologies made me realize <strong>it could all transfer into Substack</strong>. Everything I learned from SuperX I could transfer over. That opportunity is what got me into building WriteStack.</p><p><strong>Nune:</strong> So if you hadn&#8217;t taken that step that some people would call a failure, it wouldn&#8217;t have brought you to the idea, and it wouldn&#8217;t have given you enough knowledge to start it. Once you decide to give yourself time for experimentation, you also have to give yourself time to fail, because it&#8217;s not a failure, it&#8217;s a learning cycle. And if you grab enough of those opportunities, one of them works out.</p><p><strong>Orel:</strong> Exactly. And you need to take those opportunities.</p><blockquote><p>Even if you fail, that&#8217;s 100% okay, because then you learn from it and move on to the next idea.</p></blockquote><h2>The cold start problem</h2><p><strong>Nune:</strong> What I also liked is what you said about followers. When you have a lot of them, it&#8217;s easier to experiment with short-lived ideas, even short-lived content. You can drop thoughts that contradict each other just to check the market&#8217;s feedback. But there&#8217;s the cold start problem: if you don&#8217;t have a lot of followers, what do you do? I think you partially answered it, you really spend time with every individual user and ask them for feedback. Right?</p><p><strong>Orel:</strong> Right, that&#8217;s what I did in the beginning. I sent thousands of direct messages. I got on probably hundreds of calls trying to get people to use it. I&#8217;d give it to them for free, just use it and tell me what you think. Once people started using it more, around April 6th, I got my first payment, then another one, then more users. Then I&#8217;d ask again in the direct messages: I&#8217;ll give you a month for free if you jump on a call with me, sign up, and show me what you do. And I learned from that.</p><p>Today I use <strong>PostHog</strong>, which records the sessions of people who use WriteStack and summarizes them, and I learn from that and create papers with things I need to do to improve. I have a support chat in WriteStack that I reply to personally, and I learn from everything. I summarize all the conversations I&#8217;ve had, send it to Claude, and it gives me things to improve. <strong>It&#8217;s just the manual work at this stage.</strong></p><p><strong>Nune:</strong> It&#8217;s a lot of manual work, but I think the whole point is the manual work, because that&#8217;s the only way you actually learn from the feedback process.</p><blockquote><p>It&#8217;s just the manual work at this stage.</p></blockquote><h2>The tools that help, and the ones that hurt</h2><p><strong>Nune:</strong> A lot of people would want to hear which concrete AI tools you use and how they help you, and maybe if there&#8217;s something where you&#8217;d say AI is making it worse.</p><p><strong>Orel:</strong> AI definitely helps with a lot of things, though I don&#8217;t use that many of them. I&#8217;m a bit behind in the AI game. I use <strong>Cursor</strong> for coding and <strong>Claude</strong> for daily use, talking to it, thinking about ideas, consulting with it, brainstorming, creating content. I also use Revid, another product from Thibaut, to create the reel videos I make every day.</p><p>Generally AI helps me a lot, but it also sometimes makes me very unproductive. I catch myself thinking, &#8220;okay, I can complete that really fast with AI, so I can procrastinate and do it in thirty minutes,&#8221; and then I find myself doing other things instead of working, because I know I can finish it quickly. If you look at the big picture, it&#8217;s saved me weeks or months of work. But in the day to day it sometimes makes you <strong>less productive and more prone to procrastinate</strong>.</p><p><strong>Nune:</strong> I just yesterday published a small article about how these AI chats are like social media. You get into a conversation and it&#8217;s one more turn, one more question, and it even offers you questions, so you get dug into the hole. It&#8217;s like scrolling an endless reel, but on a specific topic. You have to get yourself out of that conversation and actually go do something.</p><blockquote><p>In the day to day it sometimes makes you less productive and more prone to procrastinate.</p></blockquote><h2>Will AI take your job?</h2><p><strong>Nune:</strong> You took the leap, you quit your job. A lot of people right now are anxious about AI taking over their job. Do you see AI taking over software engineering positions? And as someone who decided to leave the nine to five, do you think anyone can do that, or does it take a special kind of character?</p><p><strong>Orel:</strong> I don&#8217;t think AI is taking over any sector in software development soon, because it requires a lot more than coding. You need to understand so many things beyond it, especially for bigger products. AI cuts development time by a lot, so software developers who aren&#8217;t good enough will probably be laid off. But if you&#8217;re really good at what you&#8217;re doing, you&#8217;ll find a way to be better with AI, and then there&#8217;s no reason to fire you unless a company closes an entire branch.</p><p>From my experience there aren&#8217;t a lot of good software developers. Most people just come in, put in the hours, and go home. They don&#8217;t care about anything besides their paycheck. That&#8217;s the reality. If you tell somebody &#8220;I need you this weekend to work on something important,&#8221; they&#8217;ll never do it. And that&#8217;s fine, it&#8217;s their decision. But if you want to be better than everybody else, <strong>you need to do the things that nobody wants to do</strong>.</p><p><strong>Nune:</strong> True, you need to put in the extra effort. We just had an episode recorded yesterday where we discussed that a software engineer&#8217;s job is so much more than coding. It&#8217;s knowing the domain, being able to communicate with your peers, with customers, with clients.</p><p><strong>Orel:</strong> Right, it&#8217;s being able to connect the dots, to understand one thing in one area and apply it in another, and to think in a broader way. And actually wanting to be better and improve as a software developer, not just clocking in for the money.</p><p><strong>Nune:</strong> Meta thinking.</p><blockquote><p>If you want to be better than everybody else, you need to do the things that nobody wants to do.</p></blockquote><h2>Pick one thing and give it six months</h2><p><strong>Nune:</strong> We talked about what AI changed and what it didn&#8217;t, that you still need to focus and iterate. Anything else you&#8217;d advise someone who has an idea and is unsure whether to try it, unsure whether anybody would use it?</p><p><strong>Orel:</strong> This is my number one advice, honestly: <strong>give yourself a few months to focus on that one thing</strong>. You&#8217;ll build it in a few days, you&#8217;ll have the first MVP ready, and then you&#8217;ll need to get people to use it. When you&#8217;ve set aside a lot of time for that product, after you&#8217;re done building it you start thinking, okay, what do I do next, how do I improve?</p><p>What I did personally was take five books I really love about marketing and tell myself I was going to read them on repeat until I made my first dollar. It took me four months, rereading them time and again. Three books by Russell Brunson and two by Alex Hormozi. In that dead time after I finished building the first MVP, my brain started looking for things to do, and as I read I got points I started implementing. Whereas if I&#8217;d read them before, I wouldn&#8217;t have tried to implement them, because it wasn&#8217;t the right time for me to get that knowledge. When you&#8217;re in the state of mind of doing something and you read something related to it, <strong>it&#8217;s much more effective than just reading about it and later trying to recall it</strong>.</p><p><strong>Nune:</strong> That&#8217;s very true. When you read those books they make you think in a certain way, but reading them while you&#8217;re doing things, it clicks in a whole different way. A lot of those books are written by people who actually tried it and wrote it during that trying period, and that&#8217;s why they click in the process itself.</p><p><strong>Orel:</strong> Right. You&#8217;re doing it, and suddenly the writer says &#8220;and then you&#8217;ll hit this point and you&#8217;ll need to do this,&#8221; and you think, he&#8217;s right, let&#8217;s try this.</p><p><strong>Nune:</strong> I really liked a quote by Christina Koch, one of the crew members who flew around the moon in the last flight. She said, &#8220;find what you can do the slowest for the longest and still absolutely love it, and go in that direction.&#8221; Sticking to one thing and doing it slowly, every day, is what you need to find. Not something that excites you right now and then is gone, but something you can stick with.</p><p><strong>Orel:</strong> In my opinion it&#8217;s less about the thing and more about the goal you want. I had dozens, maybe hundreds of points where I felt I&#8217;d had enough, that it sucked and I really wanted to stop. What kept me going was being stubborn and knowing that if I pushed through, I&#8217;d be better than anybody else. I&#8217;m like a kid in that sense. I want to do the opposite of what people think. So I knew that if I kept pushing, eventually I&#8217;d get to my point, and I needed to do better where most people break.</p><p>For example, I used to go to a spin class with a lot of people. When everyone was at the hardest point, when I saw people around me suffering and barely pedaling, that&#8217;s when I felt I needed to be better. <strong>I can&#8217;t let it break me where it breaks others.</strong> That mindset honestly came from reading David Goggins three times and listening to his audiobook. It really inspired me to be better when others are struggling.</p><blockquote><p>I can&#8217;t let it break me where it breaks others.</p></blockquote><h2>Books, learning, and the major he&#8217;d choose again</h2><p><strong>Nune:</strong> To go the extra mile. You&#8217;ve already mentioned a lot of books, and I&#8217;m a big bookworm too. Do you have more recommendations?</p><p><strong>Orel:</strong> For sure. I don&#8217;t have my phone, but I have an app a friend built five or six years ago that we still use, with all my books and favorites. The latest one I read is <strong>The Obstacle Is the Way</strong> by Ryan Holiday. I absolutely loved it. <strong>Storyworthy</strong>, also about storytelling, is very interesting, crazy good if you&#8217;re into storytelling even a little bit. <strong>The Wealth Money Can&#8217;t Buy</strong> by Robin Sharma is great. I have 235 books I&#8217;ve read in there. And another book that made me take the step and quit my job is <strong>The Millionaire Fastlane</strong> by M.J. DeMarco. That&#8217;s the one that differentiated between me working the nine to five and me quitting.</p><p><strong>Nune:</strong> You&#8217;ll send me the list and I&#8217;ll post it. I&#8217;m happy there are still people around who learn from books. From what I&#8217;m hearing, maybe you can write a book someday. What do you think?</p><p><strong>Orel:</strong> Not in the near future. I&#8217;m struggling to write an article every week.</p><p><strong>Nune:</strong> What I also like, and want to tell the audience, is that you&#8217;re documenting your journey. You have the newsletter, Indiepreneur, where you write these things down, which will hopefully help someone avoid some mistakes or be more courageous where they&#8217;re worried. There&#8217;s a tradition that every guest leaves a question for the next one. In the previous episode, Ia asked: if you had to start your career or learning journey and pick your major right now, would it be different from what you had, and if so, what and why? What&#8217;s your take on learning computer science now in the age of AI? Is it still valid, and would you do it, or take something else?</p><p><strong>Orel:</strong> To answer her question, <strong>I wouldn&#8217;t change my major</strong>. I have a software development degree, a bachelor of engineering. I wouldn&#8217;t change it, because even though you can do stuff with AI, AI is not taking the entire sector, not anytime soon. So many people predicted it. Jensen Huang, the CEO of Nvidia, said AI is going to take over software development jobs. And the CEO of Anthropic recently said he was wrong about it and it won&#8217;t actually happen. So I wouldn&#8217;t change my major. I&#8217;d do exactly what I did.</p><p><strong>Nune:</strong> A lot of them are taking it back. Sam Altman took back his words, Dario Amodei from Anthropic took back a lot of what he said about replacing engineers. Whether that&#8217;s political, economical, or reality is a bigger question. But a lot of people who are hands on in IT all say the same thing: there&#8217;s no replacing, it&#8217;s still the same job with a different tool set.</p><p><strong>Orel:</strong> And it&#8217;s interesting that the media makes it look so much worse than it is. Take Wix, for example, laying off thousands of software developers and employees. That&#8217;s because the competition is so strong that they&#8217;re losing ground, so it doesn&#8217;t make sense for them to hold as many developers as before. AI had its impact too, but it&#8217;s not only AI, and <strong>people make it look like AI is completely killing the market</strong>. Companies like Meta, Microsoft, and Amazon that are laying people off all hired so many software developers during COVID. Back then, finding a software developer job was as easy as finding a job at a supermarket. They overhired, they overstaffed, and now they&#8217;re reducing staff. Obviously AI had its impact, but there are a lot more things behind their decisions.</p><p><strong>Nune:</strong> It&#8217;s easy to blame AI and say it&#8217;s all AI.</p><p><strong>Orel:</strong> Exactly. And that&#8217;s what people want to read. It makes them feel something, so they want to consume more of that content and see that AI is killing the industry.</p><p><strong>Nune:</strong> What would be your question to the next guest?</p><p><strong>Orel:</strong> My question to the next guest would be: what is the one thing you would tell yourself at the beginning of your journey that you know now but didn&#8217;t know then?</p><p><strong>Nune:</strong> What would be your answer in your case?</p><p><strong>Orel:</strong> Pick one idea, focus on it, and give it at least six months. Especially when I first started, when there was no AI to write for you.</p><p><strong>Nune:</strong> Stick with it.</p><div><hr></div><h2>References</h2><p><strong>Quotes mentioned in this episode</strong></p><p>&#8220;There is no such thing as luck. There is only adequate or inadequate preparation to cope with a statistical universe.&#8221; &#8212; Robert A. Heinlein, <a href="https://www.goodreads.com/work/quotes/1984753">Have Space Suit&#8212;Will Travel</a></p><p>&#8220;Find what you can do the slowest, for the longest, and still absolutely love it, and go in that direction.&#8221; &#8212; Christina Koch</p><p>Orel also reached for Robin Sharma&#8217;s version: &#8220;luck is preparation meeting opportunity.&#8221;</p><p><strong>Tools and products mentioned.</strong> This is not a commercial, but if any of those want to become a sponsor for my show, get in touch with me &#128512;</p><ul><li><p><a href="https://posthog.com/">PostHog</a> (not a sponsorship, just what Orel shared he uses. But if you are PostHog and want commercial, get in touch with me :D )</p></li><li><p><a href="https://www.revid.ai/">Revid</a> (same)</p></li><li><p><a href="https://cursor.com/">Cursor</a> (what Orel uses for coding)</p></li><li><p><a href="https://claude.ai/">Claude</a> (daily brainstorming, and the Claude Code Opus 4.7 app-building experiment that didn&#8217;t go to plan)</p></li><li><p>Thibaut&#8217;s stack that shows up in Orel&#8217;s origin story: <a href="https://taplio.com/">Taplio</a>, <a href="https://tweethunter.io/">Tweet Hunter</a>, and SuperX</p></li></ul><p><strong>Books mentioned</strong></p><ul><li><p><a href="https://www.russellbrunson.com/russells-books">Russell Brunson&#8217;s books</a></p></li><li><p><a href="https://www.acquisition.com/books">Alex Hormozi&#8217;s books</a></p></li><li><p><a href="https://davidgoggins.com/">David Goggins</a></p></li><li><p><a href="https://www.goodreads.com/en/book/show/18668059-the-obstacle-is-the-way">The Obstacle Is the Way</a> by Ryan Holiday</p></li><li><p><a href="https://www.goodreads.com/book/show/37786022-storyworthy">Storyworthy</a></p></li><li><p><a href="https://www.goodreads.com/en/book/show/201102296-the-wealth-money-can-t-buy">The Wealth Money Can&#8217;t Buy</a> by Robin Sharma</p></li><li><p><a href="https://www.goodreads.com/book/show/18872437-the-millionaire-fastlane">The Millionaire Fastlane</a> by M.J. DeMarco (the one Orel credits with making him quit his job)</p></li></ul><p>My article that came up: <a href="https://www.thoughtfultechnologist.com/p/ai-isnt-a-tool-its-social-media">&#8220;AI isn&#8217;t a tool, it&#8217;s social media&#8221;</a></p>]]></content:encoded></item><item><title><![CDATA[Root Cause of Solopreneur Success: Before, During, and After AI]]></title><description><![CDATA[Watch now (47 mins) | In this episode of Root Cause we sit down with Orel Zilberman, the solo builder behind WriteStack, the biggest tool out there for Substack creators.]]></description><link>https://www.thoughtfultechnologist.com/p/root-cause-of-solopreneur-success-458</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/root-cause-of-solopreneur-success-458</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Mon, 22 Jun 2026 13:26:20 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211561075/768e72abfc206ed71d0d96127998579d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Orel Zilberman, the solo builder behind WriteStack, the biggest tool out there for Substack creators. Orel spent 599 days shipping around ten products that made zero dollars, then picked one thing, stuck with it for six months, and turned it into a six-figure business. He has lived three versions of solo building in three years: before the current AI tooling, as it arrived, and now. We get to the root cause of what AI actually changed for one-person companies and what it didn't. Building got faster, but knowing what to build, and sticking with it long enough to find out if it works, is exactly as hard as it always was. Honest and unfiltered, including the messy parts most "become an entrepreneur" content leaves out.</p><h2>Chapters and Topics</h2><p>00:00 Introduction to Root Cause and Solo Building</p><p>04:57 The Journey of Building WriteStack</p><p>06:42 What is SubStack and WriteStack?</p><p>09:28 "Why Bother" if the platform / big players will replace you</p><p>13:14 "Why bother" if AI will replace all SaaS</p><p>14:46 Knowing WHAT to Build and How to Distribute</p><p>18:30 Finding the Right Idea to Stick With</p><p>23:22 Learning from Opportunities and Failures</p><p>26:10 Navigating the Cold Start Problem</p><p>28:10 Leveraging AI Tools for Productivity</p><p>30:49 The Future of Software Engineering in the Age of AI</p><p>33:53 Advice for Aspiring Entrepreneurs</p><p>37:20 Being Better Than Most</p><p>38:49 Book Recommendations and Lifelong Learning</p><p>41:04 Reflections on Education and Career Choices</p><p>Find Orel at:</p><p>&#8226; His product - <a href="https://www.writestack.io/">https://www.writestack.io/</a>&nbsp;</p><p>&#8226; His journey - <a href="https://theindiepreneur.substack.com/">https://theindiepreneur.substack.com/</a>&nbsp;</p><p>&#8226; Substack notes analysis - <a href="https://thewritingedge.substack.com/">https://thewritingedge.substack.com/</a></p><p>&#8226; Substack profile - <a href="https://substack.com/@orelzilberman">https://substack.com/@orelzilberman</a></p><p>Find me (Nune) at:</p><ul><li><p>LinkedIn<em>:</em> <a href="https://www.linkedin.com/in/nisabek/">https://www.linkedin.com/in/nisabek/</a></p></li><li><p>Substack<em>:</em> <a href="https://www.thoughtfultechnologist.com/">https://www.thoughtfultechnologist.com/</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Root Cause of Wanting to Learn]]></title><description><![CDATA[How we can combat Learning Debt by staying present and mindful]]></description><link>https://www.thoughtfultechnologist.com/p/the-root-cause-of-wanting-to-learn</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/the-root-cause-of-wanting-to-learn</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sun, 21 Jun 2026 08:53:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/sSyXgWxNm9Y" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Ia Mg - seasoned engineer, former CS and digital literacy teacher at the Free University of Tbilisi, and the author of the blog Bits Complicated - to get to the root cause of learning itself, and whether the machines we've built are about to make us better at it or worse. We dig into why everyone should understand technology even if they never write code, why domain knowledge has always mattered more than programmers wanted to admit, and what happens to learning when the answer is always one prompt away. Along the way: tech debt as a tax instead of a failure ("legacy as a service"), the "learning debt" that builds every time you accept a ready-made answer, why conversation-based coding is a process problem and not just an output problem, and why learning might be the most rebellious thing you can still do for yourself.</p><p><em><strong>Below you&#8217;ll find the text version of this episode, for those, who prefer reading :)</strong></em></p><div id="youtube2-sSyXgWxNm9Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;sSyXgWxNm9Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/sSyXgWxNm9Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em>Guest: Ia Mg &#8212; Seasoned Engineer, former computer science and technology teacher, and writer of the blog Bits Complicated</em></p><h2>Why everyone should understand technology</h2><p><strong>Nune:</strong> You taught coding to non-developers at the Free University of Tbilisi. Did you have to reframe the way you think about programming concepts in order to teach them to non-coders?</p><p><strong>Ia:</strong> That&#8217;s an interesting thing to reflect on. I started out at a computer science faculty, so there are already so many new things you get confronted with when you start teaching. The course I taught was introduced as a mandatory course for technology and design, and part of why I got involved is that they already knew <strong>I like to yap about technology</strong> &#8212; I always come in with &#8220;anyone can understand it, and it&#8217;s so beautiful.&#8221;</p><p>The thing I had to confront the most was <strong>adjusting how much I could expect as an outcome</strong>. I had to scale down a bit on the speed of the course. But I also found how much better the outcome was &#8212; how much better the materials were understood.</p><p><strong>Nune:</strong> You said you can yap about programming all the time and how cool it is. Do you think everybody should learn programming &#8212; and can everybody learn it?</p><p><strong>Ia:</strong> Yes and yes &#8212; but not because everyone needs to know programming. A few things happen during this process. First and foremost, not everyone needs to know how to code, but <strong>I strongly believe everyone should understand technology &#8212; even has a responsibility to understand it</strong>, whether it&#8217;s relevant to their field or just to society. Because of how the education system is set up, many people are shy and reserved about developing their tech skills. They feel like being tech-friendly is something innate, something you&#8217;re either drawn to or not &#8212; and so they deprive themselves of developing <strong>digital literacy</strong> and gaining a lot more power in whatever they&#8217;re doing. Even if we don&#8217;t use it for our career, we use technology every single hour. It&#8217;s a fundamental human responsibility to understand the thing that&#8217;s so intertwined with our life.</p><p><strong>Nune:</strong> People might not realize they&#8217;re using technology every day &#8212; the Instagram algorithm is responsible for what they see and how they interact with everything around them. That&#8217;s what you mean by literacy?</p><p><strong>Ia:</strong> Exactly. And the legislation, too. There&#8217;s basically no legislation now that isn&#8217;t related to technology, because it&#8217;s so involved &#8212; citizens have a responsibility to understand what laws are being passed, and so do the politicians. So tech literacy is something everyone really needs.</p><p>The second thing that happens during this process gets mentioned a lot: you should learn programming because <strong>it develops your problem-solving skills</strong>. That&#8217;s true, but there&#8217;s nothing special about developing problem-solving skills &#8212; there are lots of things you can do that develop them, and no one goes about their day not solving problems. What&#8217;s different about coding is that <strong>it&#8217;s a much more rapid feedback cycle</strong>. You&#8217;re confronted with exactly how you think, very quickly, and you can&#8217;t blame the mistake on anyone else.</p><p><strong>Nune:</strong> No external circumstances.</p><p><strong>Ia:</strong> Your code crashes &#8212; it&#8217;s you. There&#8217;s no one else who could have done this. You&#8217;re very confronted about your shortcomings in problem-solving, and you do it very, very quickly. There are very few other environments that let you test your reasoning that fast. <strong>It&#8217;s also very accessible</strong> &#8212; you don&#8217;t even need to download anything anymore. You can go to a website and start developing the skill immediately.</p><p><strong>Nune:</strong> I had a doctor in my team who practiced medicine and then switched to programming. You&#8217;re right &#8212; he already had problem-solving skills, because he&#8217;d had to use them as a doctor. The only difference was that I sometimes assumed certain concepts were known to him from a math or computer science background, and they weren&#8217;t. But because of that, he developed a different set of abstractions and mental models. He went on to teach Python to other non-programmers, and they found a common language. So you&#8217;re not talking just about functions and modules &#8212; you&#8217;re talking about the way of thinking, and how programming can make you aware of how you think.</p><p><strong>Ia:</strong> Exactly. <strong>My classes are famous for writing very little code.</strong> It&#8217;ll be 35 minutes in, we&#8217;ve discussed so many things, approached the problem, the description &#8212; and the students are like, &#8220;When are we going to write code?&#8221; And I&#8217;m like, <strong>this is not about code, guys.</strong></p><blockquote><p>This is not about code, guys.</p></blockquote><h2>&#8220;Everyone can be a programmer&#8221; &#8212; and why domain knowledge wins</h2><p><strong>Nune:</strong> There&#8217;s a sentiment going around because everyone&#8217;s talking about AI: that nowadays everyone can be a programmer &#8212; you just take AI. And further, that you don&#8217;t even need to <em>be</em> a programmer to program; you need to be a domain expert. Once you&#8217;re good at a specific field, you take AI and voil&#224;, you have a product tailored to that industry. What do you think about that?</p><p><strong>Ia:</strong> I understand the negative sentiment around &#8220;everyone can be a programmer.&#8221; For me, it&#8217;s a positive statement &#8212; and one we&#8217;ve been hearing for a long time. When I started out, it was &#8220;now everyone can learn programming because the modern languages are so easy.&#8221; Then &#8220;everyone can build a web server because we have so many frameworks.&#8221; Then &#8220;everyone can be a cloud engineer because Docker made it easier.&#8221; I don&#8217;t know why people get angry that things become easier to do. Of course, some difficulty is lost, and some skill and responsibility goes with it.</p><p>But you mentioned something important: the domain-knowledge part. <strong>I&#8217;m convinced programmers were not doing well on that.</strong> When they&#8217;d come onto a project, they didn&#8217;t understand how important domain knowledge is, separate from programming. And <strong>the domain knowledge is what determines whether what you create will be valuable.</strong> You might build a great system &#8212; but what&#8217;s the purpose of it? Because I had this weird set of domains, I learned this directly. I started at a sound research institute and had to take music classes just so I could be productive in meetings and understand the words being used. Then at Exscientia I had to learn how a microscope works, how imaging works, how fluorescent markers work. I can do a lot of things, but that doesn&#8217;t matter if I&#8217;m not doing the things you actually need.</p><p>I think programmers get a <strong>false confidence</strong> that they&#8217;re very skilled and valuable and know something most people can&#8217;t do &#8212; and then they underestimate how important domain knowledge is. This whole situation is a direct demonstration that sometimes domain knowledge matters more than specific programming skills. I&#8217;m all for it. I know people are angry, but for me it&#8217;s &#8220;bring it on&#8221; &#8212; I think this was long overdue.</p><blockquote><p>The domain knowledge is what determines whether what you create will be valuable.</p></blockquote><p><strong>Nune:</strong> The democratization of programming has been going for a while, and it&#8217;s not the problem. The problem is understating how difficult it still is &#8212; it&#8217;s not just about taking the tool and asking it to write what you want. The way you had to learn music concepts, I think anyone with good domain knowledge who wants to program in that domain also has to learn some basic programming concepts.</p><p><strong>Ia:</strong> That&#8217;s fair. For me, the products created with AI are valuable not because of their code, but because of the <strong>prototyping and proof-of-concept</strong> action. I don&#8217;t think the product should immediately be built upon. But now a lot of people who never had a chance to demonstrate that something they wanted to do would be valuable &#8212; they get that chance.</p><p>Within programming, &#8220;anyone can be a programmer&#8221; is more of a problem inside the domain, because <strong>seniority in software engineering was always about having more skills than just coding</strong> &#8212; the hard skills of engineering, design, architecture decisions, diagramming, documentation, and also the social parts. What I don&#8217;t like is that with AI, anyone can produce a very good-looking document, a very good-looking diagram, a lot of documentation. I&#8217;m not sure what the impact of that is. It&#8217;s disorienting, because now <strong>everyone kind of sounds senior</strong>. I&#8217;m interested to see where that goes.</p><p><strong>Nune:</strong> Maybe now is the time the industry figures out what it actually takes to <em>be</em> senior &#8212; not just to sound like it. Like being able to work and decide things in an atmosphere of uncertainty, because business never has exact answers. The more senior you are, the easier it is to navigate uncertainty, and you can only learn that by having seen more situations and thought them through yourself. If AI thought instead of you, you probably didn&#8217;t build the connections in your head that help you navigate the next situation.</p><p><strong>Ia:</strong> Yeah &#8212; and <strong>being stuck for a bit</strong>. Spending some time in the stuck situation.</p><p><strong>Nune:</strong> Suffering is part of being senior. Setting aside whether AI can <em>write</em> programs &#8212; as someone who has taught programming, do you think AI is a good <em>teacher</em> of programming?</p><h2>Can a machine teach?</h2><p><strong>Ia:</strong> Teaching is very tied to storytelling, and it&#8217;s very personal. My own teaching core: I didn&#8217;t start out in computer science. I was studying business and marketing, and I thought, &#8220;If I want to create something, I&#8217;ll have to rely on developers &#8212; and what if I can&#8217;t find them?&#8221; So I started learning to code with the idea I&#8217;d build some website. Then <strong>I fell in love</strong> and made the very scary switch to computer science, and fell in love even more. Every time I teach, I&#8217;ve never lost that gratitude for giving that opportunity to myself &#8212; how beautiful it was to understand concepts I thought I&#8217;d never be capable of understanding. That part is very hard to replace. Teaching is very person-specific, very human.</p><p>I don&#8217;t think the teacher can be replaced &#8212; but even before AI, I was confident that students should get more help from technology. I really liked Khan Academy; I even volunteered to translate it, and worked at a nonprofit translating it and supporting them on social media before I switched to computer science. I liked the mix: the student gets to <strong>independently watch the videos, pause, rewatch</strong>, then do exercises tailored to them. Because that&#8217;s not the main value of the teacher. <strong>The main value of the teacher is to control the process, to understand the pupils</strong> &#8212; and teachers also have a responsibility to be good.</p><p>I volunteer now at Stanford&#8217;s program Code in Place, because I missed the framework &#8212; I worked at a university in Vienna some time ago and don&#8217;t have that chance anymore, so I volunteer whenever I can. I was surprised that after every section you hold with students, you get <strong>AI feedback</strong>. Before the section, you get feedback on what the students have done in the exercises &#8212; what they struggle with most, what they understand well. That&#8217;s very helpful, because I go in knowing exactly what&#8217;s missing, what to cover in the first few minutes, and where to tell them, &#8220;It&#8217;s okay if you don&#8217;t understand this.&#8221; After the section I get statistics on how long I was talking versus how long the students were talking. As a teacher you should get feedback &#8212; I shouldn&#8217;t have to remember the whole class to target the areas that will have the most impact.</p><blockquote><p>The main value of the teacher is to control the process, to understand the students.</p></blockquote><p><strong>Nune:</strong> So it&#8217;s a good tool, and it should be used as a tool &#8212; but there will always be aspects that are human and can&#8217;t be replaced. I really like your attitude: &#8220;If I don&#8217;t know something, I&#8217;ll learn it and then apply it.&#8221; A lot of the DevOps movement was developers who cared about infrastructure and operations &#8212; they didn&#8217;t only want to write code, they wanted to understand how it would be deployed and run in production. What you&#8217;re saying about product work and understanding the domain is another step: it&#8217;s not only about programming something well for production, it&#8217;s about programming something the end users actually need. So of course I need to understand the business domain too. And if a non-programmer can say &#8220;I don&#8217;t understand programming concepts, I should learn them,&#8221; then it should go the other way around &#8212; if a programmer joins a domain they don&#8217;t know, it&#8217;s fair to say they need to learn that part themselves.</p><p><strong>Ia:</strong> Right &#8212; <strong>having the ability to code or engineer is not the most valuable skill on the team.</strong> It was positioned as such because it had a very long barrier to entry &#8212; others couldn&#8217;t even participate in the discussion. It was gate-kept. I think AI is having the most impact at the borders of the discipline: how much input you can get. Now a product manager can code up a prototype proving what they&#8217;re aiming for is possible, or good, or valuable. That might be annoying to receive as the person who said &#8220;no, this won&#8217;t work&#8221; &#8212; but ultimately it&#8217;s for the better.</p><p><strong>Nune:</strong> At least it&#8217;s a better way to communicate your ideas.</p><h2>The trouble with trusting what AI tells you</h2><p><strong>Nune:</strong> One thing that bothers me about learning anything with AI is that I can&#8217;t always evaluate whether the answer was correct &#8212; unless I know it upfront, at least approximately. If I know programming and I ask AI to evaluate paths A, B, and C with pros and cons, I can validate the result against my own mental model. But if I switch to a domain I don&#8217;t know and ask for some paths, I have no idea whether they&#8217;re right. People argue you can ask follow-up questions &#8212; say I ask about chemistry, don&#8217;t understand the answer, and say &#8220;break it down simpler and simpler until I get to high-school terminology.&#8221; The problem is that with every response there&#8217;s more uncertainty in me that some part was hallucinated or outdated. So my uncertainty in the answer <em>grows</em> with every turn. Translating that to people learning programming with AI &#8212; how can they do it without knowing it upfront?</p><p><strong>Ia:</strong> When you ask AI about things you <em>do</em> know, you see how biased the responses are and how much nuance they miss &#8212; even nuance that&#8217;s relevant for beginners. Sometimes it frames things that should never be framed: <strong>if you ask the wrong question, you receive an answer, instead of being told &#8220;that&#8217;s the wrong question to ask.&#8221;</strong> And as the conversation goes on, you bring in more non-knowledge about the domain, and the answers depend on what you ask and what you follow up on. <strong>It&#8217;s the answer that was created by you.</strong> Ultimately, the answers you create, you create based on your input &#8212; so you don&#8217;t have an independent evaluation of anything.</p><p>What I like AI for is &#8220;Hey, what is this thing called?&#8221; &#8212; so I can go and search for it. Because before, there were certain terminologies you couldn&#8217;t Google your way into. But for a high-level explanation of a topic I&#8217;m unfamiliar with, I&#8217;d trust a human, or at least accept that what I&#8217;m getting might be completely wrong.</p><blockquote><p>Ultimately, the answers you create, you create based on your input &#8212; so you don&#8217;t have an independent evaluation of anything.</p></blockquote><p><strong>Nune:</strong> That&#8217;s a good point. The other day I couldn&#8217;t remember the name of a movie &#8212; sometimes it&#8217;s a book &#8212; and I asked AI with a high-level description of what I remembered of the plot, and it came back with the answer. <em>That&#8217;s</em> where AI is helpful. If you don&#8217;t know what something is called, you can&#8217;t Google it, so the use case you mentioned is a really valid one.</p><p><strong>Ia:</strong> And then you Google it and you get the AI response now anyway. I use Ecosia and others &#8212; they have an AI response too, but at least it&#8217;s less pushed.</p><p><strong>Nune:</strong> There&#8217;s probably a way to disable that, like an ad blocker for AI answers. But so much content is now AI-generated that it&#8217;s getting harder and harder to differentiate.</p><h2>Are we raising a worse generation?</h2><p><strong>Nune:</strong> Which brings me to: are you worried about the next generation? There was a report &#8212; don&#8217;t quote me on this &#8212; that this is the first generation with lower IQ test results. I don&#8217;t think IQ tests are a good measure of human knowledge, but there&#8217;s obviously a shift. Are you worried, or do you think they&#8217;ll find their way?</p><p><strong>Ia:</strong> That study was one of those times when I was like, &#8220;Okay, what are the sources? Who decided that? How did they measure?&#8221; For me, that kind of shift is more representative of the <strong>social, political, and economic situation</strong> the world is in than of AI or short-form content specifically &#8212; though we know short-form is harmful, and the outcomes we&#8217;re seeing are in line with that. But ultimately it&#8217;s the next generation&#8217;s problem. We can&#8217;t understand it, we can&#8217;t solve it. We can only create a world where they feel empowered to face it.</p><p>Sometimes on the weekends I go to the library to remove myself from distractions &#8212; get a coffee &#8212; and I see students still sitting with books, or studying with their laptops open. When I did exercises, I also had the solutions at the back of the book. I just wasn&#8217;t looking, because I understood: <strong>I&#8217;m learning, I&#8217;m practicing. I wasn&#8217;t interested in the answer, I was interested in development.</strong> So I think they&#8217;ll be fine. The new generation of programmers will be fine. <strong>It&#8217;s just not the same fine that we think is fine.</strong></p><blockquote><p>I wasn&#8217;t interested in the answer. I was interested in development.</p></blockquote><p><strong>Nune:</strong> The endorphins you get when you finally understand something yourself are so powerful that they&#8217;ll drive people to keep learning, instead of just taking ready-made answers.</p><p><strong>Ia:</strong> Exactly. Even with this AI coding craze, people are very excited &#8212; but they&#8217;re also very aggressively <strong>burning themselves out</strong>. It&#8217;s not sustainable to spend 18 hours a day building things and arguing with a chatbot. At some point people will say, &#8220;This is exhausting, this isn&#8217;t rewarding,&#8221; and go back to wanting a more sustainable way to build.</p><h2>Just another abstraction?</h2><p><strong>Nune:</strong> You mentioned the recurring sentiment that programming keeps getting &#8220;easy&#8221; &#8212; because of higher-order languages, then frameworks. Now people say AI, or LLMs, are just another level of abstraction: we had assembler, then higher-order languages, and now LLMs &#8212; so what&#8217;s the big fuss? Do you agree with that analogy?</p><p><strong>Ia:</strong> I don&#8217;t see it yet. It <em>is</em> an abstraction, but even if it becomes another layer, this is not how it will look. It&#8217;s hard for me to engage with the argument, because my gut feeling is that <strong>the output isn&#8217;t equivalent to what the other abstraction layers output</strong> &#8212; though maybe that can be solved. So my take is: I don&#8217;t like the statement, but I can&#8217;t fully elaborate.</p><p><strong>Nune:</strong> A lot of people say the difference is <strong>determinism</strong> &#8212; with higher-order languages, your expectations of what the program will do match reality. But maybe that can be pushed back with enough tests, to make the LLM&#8217;s output reliable. Although you had an article about how LLMs aren&#8217;t that good at writing tests &#8212; they over-mock &#8212; and how people need to learn about this. What did you call it? The testing pyramid?</p><p><strong>Ia:</strong> The testing pyramid, yes. I&#8217;m a test-driven-development, best-practices person &#8212; I have very strong opinions about tests. And we simply <strong>don&#8217;t have enough good tests to train AIs on</strong>. A lot of tests are over-engineered at the wrong abstraction level, testing wrongly designed units &#8212; and that&#8217;s what&#8217;s been fed to AI, so the AI generates exactly that. For smaller things, I usually get my units straight before handing over to the AI, and then I can say, &#8220;This is too many mocks.&#8221; But who is responsible for defining the tests, or making sure they&#8217;re implemented correctly? There are a lot of <strong>green checkmarks</strong> you can get. Everyone sees that AI says, &#8220;Yeah, complete.&#8221; It is <em>not</em> complete. Something&#8217;s been deleted in the process; what you asked for is the opposite of what&#8217;s implemented. Because of that, I don&#8217;t have confidence yet in the output.</p><p><strong>Nune:</strong> Here are 1,400 tests and they&#8217;re all green &#8212; but the value of it isn&#8217;t high.</p><blockquote><p>Here are 1,400 tests and they&#8217;re all green &#8212; but the value of it isn&#8217;t high.</p></blockquote><p><strong>Nune:</strong> Something I keep going back and forth on, even in a single day, is <strong>conversation-based development</strong>. At first I was very much against it &#8212; how can you develop something through a conversation that&#8217;s so unreliable and unpredictable? If I have that conversation it gives one result; if you have it, another. But then sometimes I think it&#8217;s wonderful that I can adjust things while I talk, and new things come out of the conversation. So what do you think about coding through chat, versus building a pipeline that creates code?</p><p><strong>Ia:</strong> I can&#8217;t wait for the next way we&#8217;ll do this. I&#8217;m fine with chats, but right now it&#8217;s <em>just</em> chat. For me it looks a bit different: there&#8217;s chat, then something gets determined, then something else happens. We know that as the chat goes on, performance degrades. My approach now: <strong>if I have to correct too many things, I don&#8217;t move forward.</strong> For me that&#8217;s a failure &#8212; not an outcome failure, a <strong>process failure</strong>. Something in my setup, my prompt, or my skills isn&#8217;t working the way I want, so I go and adjust <em>that</em> instead of chatting along. I try to keep the chats short, because if you don&#8217;t have a reliable process and you have to interfere all the time, it&#8217;s not a good process.</p><p><strong>Nune:</strong> You&#8217;re so right. I wrote an article about getting myself <em>out</em> of the conversation &#8212; controlling every step instead: spec generation, then spec to plan, then plan to code. Even though it sometimes doesn&#8217;t feel as productive as the conversation, it&#8217;s a workflow that&#8217;s controllable and improvable, because you have artifacts at the end of each step to iterate on. If you don&#8217;t get the answer right, that&#8217;s your chance to improve your process &#8212; not just to get the end result. It&#8217;s all about patience.</p><p><strong>Ia:</strong> When I discovered that, it was one of the first times I warmed up to using AI in development, because then I could say, &#8220;Okay, this is the hard part &#8212; if that happens, I have to stop, start over, and improve.&#8221; Because <strong>in the chat you don&#8217;t start over, you don&#8217;t improve &#8212; you just keep asking it to make no mistake.</strong> When I saw there was something I could engineer about that, it was one of the first things that hyped me up. Before, I was like, &#8220;Yeah, I can create things, but what do I actually <em>do</em> in that process? Just type things out?&#8221;</p><blockquote><p>In the chat you don&#8217;t start over, you don&#8217;t improve &#8212; you just keep asking it to make no mistake.</p></blockquote><h2>Tech debt is a tax &#8212; and so is learning debt</h2><p><strong>Nune:</strong> Every conversation turn adds to the tech debt. I know you wrote about tech debt, that you don&#8217;t like the term, and that we should call it a tax. Can you say a bit about why?</p><p><strong>Ia:</strong> AI does generate a lot of tech debt &#8212; I call it <strong>legacy as a service</strong>. Have you ever wanted legacy right away that no one understands? I&#8217;m not saying that&#8217;s not how we&#8217;ll code; we&#8217;ll just accept it and work around it. But in general, tech debt is sometimes discussed as something separate that exists because someone didn&#8217;t do a good job and needs its own time allocated to be fixed. <strong>I don&#8217;t think tech debt should be looked at as a failure. It&#8217;s part of the process</strong> &#8212; just the passage of time and changing requirements.</p><p>Even though it&#8217;s important to tackle, I usually don&#8217;t push for standalone initiatives to address tech debt, because how do you know the time you&#8217;re putting in is worth it? That&#8217;s why, if you look at it as a <strong>fee</strong>, you can tie the fee into tasks. If there&#8217;s a module everyone forgets how to work with because it&#8217;s complicated, and you have a task where you spend three days just orienting yourself around it again, now it makes sense to address the tech debt a bit &#8212; maybe an extra day or two &#8212; because you&#8217;ll save time on the next iteration. But you can&#8217;t just say, &#8220;Now I&#8217;ll spend some time getting rid of tech debt.&#8221; <strong>You don&#8217;t get rid of it. It&#8217;s just a fee.</strong></p><blockquote><p>Have you ever wanted legacy right away that no one understands?</p></blockquote><p><strong>Nune:</strong> I hated those sprints that were &#8220;let&#8217;s just address tech debt this sprint,&#8221; because, as you said, every ticket is about bringing business value. It takes a lot of awareness on both the business and engineering sides to say, &#8220;This is a business ticket, it sounds easy, but underneath there&#8217;s a module nobody wants to touch &#8212; so let&#8217;s estimate it an eight instead of a five.&#8221; Do they still estimate things in Fibonacci numbers, or am I behind?</p><p><strong>Ia:</strong> I remember a very funny conversation &#8212; a planning meeting or retro. The engineers said, &#8220;We can&#8217;t go on like this if we don&#8217;t allocate time to address tech debt.&#8221; And the product manager said, <strong>&#8220;Are you not doing that already? Is that not included in the estimation? Why do I have to think about your tech debt?&#8221;</strong> Which is very true.</p><p><strong>Nune:</strong> As long as it has an explanation. The engineer shouldn&#8217;t underestimate the intellect of business people &#8212; if you explain the tech debt and why you need the time, they&#8217;ll understand. They&#8217;re not your enemies. We&#8217;re all in the same boat, driving toward one goal.</p><p><strong>Ia:</strong> Many won&#8217;t even need much explanation, because a lot of product managers have that <strong>trust in the process</strong> &#8212; &#8220;the engineer knows how much tech debt needs addressing.&#8221; That puts the responsibility on us not to overuse those resources. So there has to be a better way to assess and address these topics.</p><p><strong>Nune:</strong> Besides tech debt, there&#8217;s something I call <strong>learning debt</strong> that&#8217;s emerging. Every time you want a ready-made answer, you ask AI and you&#8217;re satisfied with it &#8212; instead of double, triple, quadruple-checking it, and by checking it, developing the mental connections that help you next time. Do you feel this way too, and how do you address it?</p><p><strong>Ia:</strong> There are so many different ways to use AI. You can use it for something you already know; you can use it to help learn something you&#8217;re learning; and you can use it to <em>not</em> learn something and just get the productivity. For me it&#8217;s enough to be clear about which act I&#8217;m engaging in. It can be very useful for giving you basic vocabulary in a topic, to get common ground without putting in weeks. But if I want to <em>learn</em> something &#8212; <strong>I never get the illusion that I learned it just because AI explained it and I understood.</strong> As long as you keep that clear, you get all the benefits without the false sense.</p><p>When I&#8217;m learning a new framework or language, I write the code myself. I don&#8217;t even set up the second monitor &#8212; I explicitly look at what&#8217;s written, go back to mine, and try to write it out, because I&#8217;m developing a specific skill. If I ask AI to write it, I won&#8217;t have the understanding of why everything is there.</p><blockquote><p>I never get the illusion that I learned something just because AI explained it and I understood.</p></blockquote><p><strong>Nune:</strong> It&#8217;s still about being aware. As long as you know you&#8217;re engaging in the act of getting a ready-made answer and not learning &#8212; fine. But don&#8217;t mindlessly use tools.</p><p><strong>Ia:</strong> Plus, because these answers come so quickly now, the brain gets <strong>rewarded for asking an interesting question and getting an interesting answer</strong> &#8212; and then it generates more useless questions. Things you&#8217;d never have spent time exploring, that you&#8217;d have moved on without knowing &#8212; now it&#8217;s &#8220;and what about this? and what about that?&#8221; So now I sometimes restrict that time: &#8220;Today I&#8217;ll have <em>that</em> much.&#8221;</p><p><strong>Nune:</strong> Compare talking with AI to social media &#8212; one more reel, one more interaction. It&#8217;s the same very quick satisfaction.</p><p><strong>Ia:</strong> Curiosity is so widely understood as positive that you don&#8217;t think you need to control it.</p><p><strong>Nune:</strong> Same with what used to be called <strong>feature creep</strong> &#8212; creating too many features. Now with AI it&#8217;s tripled, because the AI itself says, &#8220;Why don&#8217;t you also implement this and that, it&#8217;ll only take a day&#8221; &#8212; when in fact it won&#8217;t; it&#8217;ll bring you more bugs and more integration work. So you have to control even your feature-building now, to not go wild.</p><p><strong>Ia:</strong> A lot of people are raising that. I look forward to this push of &#8220;we can do more features&#8221; leading to <strong>a wave of minimalism</strong> &#8212; I&#8217;m just sitting back and waiting for it. There&#8217;s no reason to resist the cycle. We&#8217;re getting so many learnings we&#8217;ll apply later, even if what&#8217;s happening now doesn&#8217;t look elegant. It&#8217;s a necessary step &#8212; but I hope it&#8217;ll be understood that it wasn&#8217;t <em>more features</em> that were missing from technology.</p><h2>Embracing the chaos</h2><p><strong>Nune:</strong> You&#8217;re the third guest on this podcast to say &#8220;embrace the chaos instead of fighting it&#8221; &#8212; embrace the hype. You can&#8217;t stop it, you can only watch and learn from it and wait for it to calm down. And because you had a reflective mind during it, you&#8217;ll be ahead of others.</p><p><strong>Ia:</strong> Even &#8212; and especially &#8212; for the more &#8220;responsible&#8221; engineers, in air quotes, because you can perceive yourself as a responsible engineer and think everything everyone else is doing is irresponsible. But the people on the cutting edge, coming up with the most interesting uses, are insecure. You open your eyes when you hear what they&#8217;re doing &#8212; &#8220;how, why would you do that?&#8221; &#8212; but they&#8217;re the ones pushing the limits right now. So maybe it&#8217;s just <strong>not the time to be responsible</strong>. You can wait until we get enough knowledge to be responsible again.</p><p><strong>Nune:</strong> Like children &#8212; it&#8217;s playtime now, and then we&#8217;ll learn. There&#8217;s always this question in my head: is programming a craft, or is it art? A lot of people get satisfaction from both sides. Do you think AI is taking away that joy, because we&#8217;re not writing code anymore?</p><p><strong>Ia:</strong> Depending on what was bringing you joy, it might take it away or bring more. I heard it somewhere: <strong>if you liked the </strong><em><strong>building</strong></em><strong> part, it&#8217;s a bit disorienting; if you liked the </strong><em><strong>creating</strong></em><strong> part, this is Disneyland.</strong> So it depends which end you&#8217;re on. Even though I&#8217;m very outcome-oriented, I had a special attachment to the process, because I spent a lot of time and effort making sure I was good at it. So when this appeared, I was like, &#8220;I can click yes, then check if it&#8217;s correct&#8221; &#8212; and that didn&#8217;t sound like engineering to me.</p><blockquote><p>If you liked the building part, it&#8217;s a bit disorienting. If you liked the creating part, this is Disneyland.</p></blockquote><p>But as the ecosystem develops, there are a lot of different things you can engineer now. And eventually the mandatory token usage will settle to something reasonable, so you&#8217;re encouraged to be smarter about what you do. Then you&#8217;ll start seeing again that <strong>there are those who can do this better and those who can&#8217;t, because they didn&#8217;t put the time into the process.</strong> That&#8217;s what people were insecure about in the beginning: how do you prove you&#8217;re better than someone just using AI? It&#8217;s a bunch of markdown files everyone installs &#8212; &#8220;what am I supposed to be proud of?&#8221; But slowly we&#8217;ll get an ecosystem where you can be proud again of something you engineered.</p><p><strong>Nune:</strong> There&#8217;s a bit of <strong>sunk-cost fallacy</strong> in this. I was talking with a colleague I worked with 20 years ago &#8212; fresh out of university, all we did was write unit tests and mocking frameworks. Looking back with AI now, it felt like, &#8220;Did I waste all those years?&#8221; Part of us feels we invested so much that we can&#8217;t let it go. But you&#8217;re right that even with AI, we&#8217;re getting to things that are truly difficult &#8212; and those truly difficult parts AI can&#8217;t handle are the ones that&#8217;ll give us satisfaction to solve.</p><p><strong>Ia:</strong> And for me &#8212; if I can&#8217;t have a good enough edge based on my skills, because everyone can look like an architect now, <strong>I&#8217;ll just go study something else and do something else. I like learning, so who cares?</strong></p><blockquote><p>I&#8217;ll just go study something else. I like learning, so who cares?</p></blockquote><p><strong>Nune:</strong> As long as you know how to learn. Once in your life, once you&#8217;ve solved a particular problem &#8212; and honestly, also the problem of making money &#8212; solving it once gives you the confidence you can solve it a second and third time. As long as you have that confidence, you&#8217;ll be fine. Maybe you won&#8217;t be a millionaire, but you&#8217;ll be fine.</p><p><strong>Ia:</strong> And the skills aren&#8217;t lost &#8212; they&#8217;ll be visible, they already are, and they&#8217;ll be even more visible. Every time I switched domains &#8212; when I switched to programming and computer science &#8212; what I brought was an appreciation for communication, because I&#8217;d spent time learning it. Initially, what gave me an edge wasn&#8217;t that I was a better coder, but that I was better at communication, or understood its value. So whatever changes in the environment, you can always add more skills and knowledge and use your <strong>interdisciplinary</strong> background as an advantage.</p><p><strong>Nune:</strong> I got a question I think you can help me answer, as a teacher: &#8220;How can I get into cloud engineering?&#8221; I&#8217;m a bit worried, because companies hiring demand more and more. First you were good if you knew Python; then you had to know thousands of frameworks; then containers; then be an expert in at least one cloud; and now you also need to be &#8220;AI-native,&#8221; whatever that means. What do you advise people who want to become an engineer, or switch from one engineering discipline to another?</p><p><strong>Ia:</strong> That kind of <strong>words creep</strong> was already getting bad before the current situation. I love when a job listing asks you to know multiple <em>competing</em> frameworks or tools &#8212; &#8220;and also know the alternative, be an expert, just for good measure.&#8221; It&#8217;s so discouraging, especially for a junior browsing these roles. The problem with these HR ads is they always get <em>edited</em> &#8212; things get added, not deleted. They have a template that started 10 years ago, and every time they need someone they ask &#8220;what should we add here?&#8221; Nobody says &#8220;remove this.&#8221; They just add more word soup.</p><p>Now everyone needs a good interdisciplinary competitive advantage. I don&#8217;t see how someone can prove, very quickly, that they&#8217;re a better engineer than someone else &#8212; because a quick look isn&#8217;t enough anymore. Anyone can learn the words, have projects on GitHub, buy stars. It&#8217;s hard to stand out even if you&#8217;re genuinely better. At the junior level it&#8217;s not about being the best &#8212; <strong>a junior is the company&#8217;s responsibility to take in, train, and develop.</strong> A lot of people ask me, &#8220;Should I learn programming?&#8221; For the benefits &#8212; yes. As a profession &#8212; maybe, if you know where to apply it. Before, it was &#8220;if you&#8217;re a programmer <em>and</em> you have domain knowledge, you have a competitive advantage.&#8221; Now people can flip it: &#8220;I have domain knowledge, and I&#8217;m using programming as a familiarity that lets me use these tools better.&#8221; In the current job market you need to be way more strategic, more targeted &#8212; understand where you want to get to, and really go beyond just the skills.</p><p><strong>Nune:</strong> So, back to domain knowledge: unless you want to work on the frontier, building new models and frameworks &#8212; where pure programming is what you need &#8212; you&#8217;ll probably be safer if you love a specific domain and, on top of that, learn programming so you can work with that domain better.</p><p><strong>Ia:</strong> I think that&#8217;s true.</p><h2>Learning as a rebellious act</h2><p><strong>Nune:</strong> I&#8217;m a big bookworm &#8212; everyone who knows me knows that. I&#8217;ve developed a tradition for this show of asking people about books. What was the book that made you want to learn something &#8212; that gave you the spark of curiosity?</p><p><strong>Ia:</strong> One book I read a long time ago but has been on my mind a lot recently is Asimov &#8212; both <em>I, Robot</em> and his short stories. There&#8217;s one especially, where he describes how we create artificial intelligence &#8212; a very short, very beautiful story, <strong>&#8220;The Last Question&#8221;</strong> &#8212; and they&#8217;re training an intelligence just by feeding it books. When I read it, I thought, &#8220;That&#8217;s so cute, such an imaginative way.&#8221; And then we created it by feeding it books.</p><p><strong>Nune:</strong> And now we&#8217;re living in that reality.</p><p><strong>Ia:</strong> He could already see it that long ago. What I&#8217;ve reflected on most: when I read <em>I, Robot</em>, my dream job was <strong>robot psychologist</strong> &#8212; I wanted to be Susan Calvin. I thought, &#8220;If I had that, it would be so good.&#8221; And then facing the truth &#8212; that maybe I <em>don&#8217;t</em> want to be a robot psychologist now that the technology is so readily available &#8212; was very shocking. There are so many stories we tell ourselves, and it&#8217;s always interesting to be confronted by the truth.</p><p><strong>Nune:</strong> Is <em>I, Robot</em> the one that introduces the three laws of robotics? Science fiction is so important &#8212; it helps us imagine these paths. It&#8217;s very interesting to live in these days; we&#8217;re seeing things we read about from books written in the &#8216;50s and &#8216;60s now being born and applied &#8212; from one side in a very different way, from another side in the same way. I always go back to a book by Heinlein, <em>Have Space Suit&#8212;Will Travel</em>. Not because it has any AI in it, but because it brings back the love of learning. The main character gets a space suit and genuinely gets interested in how it&#8217;s built &#8212; he strips it down and puts it back together, and those pages always give me back the curiosity and the wanting to learn. I&#8217;m also reading one now from 1994, <em>Permutation City</em>, about people put into a kind of VR world, exploring generated models of consciousness versus biological ones. It&#8217;s so relevant today, because beyond AIs and LLMs, a lot of people are starting to understand it&#8217;s going to be more about how we can apply biology together with AI.</p><p><strong>Ia:</strong> The intelligence part is interesting, because right now we choose <em>either</em> human intelligence, <em>or</em> the standard statistical machine &#8212; the more primitive machine learning &#8212; <em>or</em> the LLMs. Hopefully soon we&#8217;ll see an interesting combination of these, as opposed to going with one closed-box attitude.</p><p><strong>Nune:</strong> Let&#8217;s root-cause this one last time. We talked about teaching, about learning, and about how AI can be applied in a smart versus an automatic, unconscious way. If you had to root-cause it &#8212; not the surface reason, not &#8220;people are lazy&#8221; or &#8220;the tools aren&#8217;t good enough yet&#8221; &#8212; what&#8217;s the real root cause of the risk that we collectively get worse at learning?</p><p><strong>Ia:</strong> There are a lot of reasons to be concerned, and very dangerous implications to <strong>deskilling the population</strong> and having intelligence as a service &#8212; I don&#8217;t like where things are being pushed; it&#8217;s definitely a nightmare. But set that aside. Politically, <strong>learning is a fundamental rebellious activity</strong> &#8212; one that brings you power. You rebel against a lot of things, you gain control over something that was unreachable to you before, and you rebel against time itself. Not only because you slow down biological aging, or even reverse aging in the brain, but because <strong>you allow yourself to become vulnerable again, to be an open book, and to find the child inside.</strong> You get to be a kid again. That&#8217;s one of the most precious things you can do for yourself &#8212; almost like magic. So for me it&#8217;s very important to keep learning, to see the risks and face them and rebel against them.</p><blockquote><p>Learning is a fundamental rebellious activity. You rebel against time itself.</p></blockquote><p><strong>Nune:</strong> That&#8217;s part of not aging &#8212; having this spark of learning. We have to be conscious of not letting our interactions with AI rob us of that feeling. Any practical recommendations? Like, breathe five minutes a day before talking to AI?</p><p><strong>Ia:</strong> I have strictly <strong>no-AI days</strong> &#8212; not because I&#8217;m saying that&#8217;s necessary, but because I just don&#8217;t know yet what the best approach is. I try to be conscious of what I&#8217;m engaging with: &#8220;Now I&#8217;m using it to ask random questions; now for something I actually don&#8217;t know and don&#8217;t even want to do &#8212; I just want it done; now to assist.&#8221; I try to both limit how much I use it in one specific way, and give myself time <em>without</em> it, so I&#8217;m not too impacted by whatever the implications are. We don&#8217;t know yet.</p><p><strong>Nune:</strong> Those blissful hours when your token limit is reached and you can just sit and not use it. Another tradition we have: every guest leaves a question for the next guest. The previous one was from Adrian: &#8220;What surprised you the most in the discipline you were most comfortable with?&#8221;</p><p><strong>Ia:</strong> I&#8217;ve been thinking about this so much, and it&#8217;s so hard. It&#8217;s a tough one.</p><p><strong>Nune:</strong> I think it&#8217;s hard to even figure out which discipline you&#8217;re <em>most</em> comfortable with &#8212; that part of the question is already hard.</p><p><strong>Ia:</strong> Something a lot of people find surprising about engineering is <strong>how different it is from what it looks or sounds like.</strong> First of all, how many social skills are involved &#8212; how much humility, cooperation. The stereotype is that you get on, write a lot of code, and that&#8217;s the fun. But the fun is also in the barriers that exist in real projects, and developing the skills to confront them.</p><p><strong>Nune:</strong> With the democratization of programming, a lot more people are starting to put into words what software <em>engineering</em> is &#8212; not just programming. It&#8217;s way more than code. It&#8217;s understanding your peers, understanding people from other disciplines &#8212; even having a way to limit your own computer time. Whether you were a programmer or you&#8217;re just starting with AI tools, we&#8217;re all spending more and more time in front of the computer. Yoga is what will save you.</p><p><strong>Ia:</strong> And mindfulness practices have helped me so much to be a better engineer &#8212; sometimes you need to set your ego aside, step back, look at things. That meditative thing is very useful.</p><p><strong>Nune:</strong> Good for your back, too &#8212; take care of your back. So, maybe try not to make the next guest think <em>this</em> much: what&#8217;s your question for the next guest?</p><p><strong>Ia:</strong> If you had to start your career &#8212; your learning journey &#8212; or pick a major right now, would it be different? What would it be, and why?</p><p><strong>Nune:</strong> Nice. That would also define what we advise the new juniors coming into the world &#8212; though we&#8217;re always biased by our past and the situation we&#8217;re in, and we can&#8217;t know the future. That&#8217;s simply the truth.</p><p><strong>Ia:</strong> I don&#8217;t think I did you the favor of asking an easy question.</p><div><hr></div><h2>References</h2><ul><li><p><a href="https://www.thoughtfultechnologist.com/t/learning-to-learn">Learning to Learn &#8212; blog post series</a></p></li><li><p><a href="https://www.khanacademy.org">Khan Academy</a></p></li><li><p><a href="https://codeinplace.stanford.edu">Stanford Code in Place</a></p></li><li><p><a href="https://iyamg.com/bitscomplicated/2604/">Ia&#8217;s article on the testing pyramid and why LLMs over-mock</a></p></li><li><p><a href="https://www.thoughtfultechnologist.com/p/automating-myself-out-of-development">Automating myself out of development (spec &#8594; plan &#8594; code)</a> &#8212; Part 2 coming soon</p></li><li><p><a href="https://iyamg.com/bitscomplicated/2501/">Ia&#8217;s article on tech debt as a tax / &#8220;legacy as a service&#8221;</a></p></li><li><p>Isaac Asimov, <em>I, Robot</em> and short stories, incl. &#8220;The Last Question&#8221; &#8212; <a href="https://en.wikipedia.org/wiki/I,_Robot">I, Robot</a> &#183; <a href="https://en.wikipedia.org/wiki/The_Last_Question">The Last Question</a></p></li><li><p><a href="https://en.wikipedia.org/wiki/Three_Laws_of_Robotics">The Three Laws of Robotics</a></p></li><li><p><a href="https://en.wikipedia.org/wiki/Have_Space_Suit%E2%80%94Will_Travel">Robert A. Heinlein, </a><em><a href="https://en.wikipedia.org/wiki/Have_Space_Suit%E2%80%94Will_Travel">Have Space Suit&#8212;Will Travel</a></em></p></li><li><p><a href="https://en.wikipedia.org/wiki/Permutation_City">Greg Egan, </a><em><a href="https://en.wikipedia.org/wiki/Permutation_City">Permutation City</a></em><a href="https://en.wikipedia.org/wiki/Permutation_City"> (1994)</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Good Enough vs. Do It Myself: Sorting My AI Use-Cases]]></title><description><![CDATA[A non-exhaustive catalog of how a software engineer actually uses AI, scored 1&#8211;5 - and a pattern I absolutely did expect to find]]></description><link>https://www.thoughtfultechnologist.com/p/good-enough-vs-do-it-myself-sorting</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/good-enough-vs-do-it-myself-sorting</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sat, 20 Jun 2026 17:01:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IV9p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9335bdf9-dcf9-4eb8-b1f1-115c1cad35cd_1220x1300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I think one of the reasons I&#8217;m in this hate/love relationship with LLMs/AI-assistants/... is that there are so many different use-cases and somehow we are now getting used to using one single (or maybe two - think Claude/ChatGPT (chat interface)/... and Claude Code/Codex/...) interface to address all of them.</p><p>As an example, when <a href="https://youtu.be/sSyXgWxNm9Y?si=ys1uQ_r00A0b-7wg&amp;t=2532">I asked Ia</a> whether she finds using AI &#8220;dangerous&#8221; because it might lower your own cognitive capabilities, she quite reasonably highlighted that it can be used in so many ways and you should be fine, <strong>as long as you are aware which type of activity you are engaging in</strong>.</p><p>I decided to start cataloging the ways a <em>software engineer</em> is, in my experience, using AI interfaces and what I personally find useful or harmful, along with some tips for usage. The list is not intended to be exhaustive, and I hope you&#8217;ll add your personal use-cases and stories of success or failure with each of them.<br>I am also sure that each of these &#8220;types&#8221; of usage can be improved in a certain way - through prompts, agents, infra around them, etc. - I&#8217;d love to hear your stories, to be honest, since I&#8217;m in my Claude Code bubble of my problems.</p><p>Let&#8217;s start with the soft basics:</p><h2><strong>Rubberducking &#129414;</strong></h2><p><em>You have a problem at hand and you have a lot of thoughts about it. You need to express them, so that through the expression of those thoughts you come to some conclusion.</em></p><p><strong>How did I do it before AI?</strong><br>a) <strong>Harass a friend</strong> - teammates, ex-colleagues, friends, my mom - everyone got some random &#8220;hey, help me think through this&#8221;.<br>b) <strong>Write it out</strong> - this one&#8217;s my favorite, because humans are not always present/awake, and on paper you can navigate up and down between different parts of your arguments and thoughts.</p><p><strong>How I do it with AI</strong><br>Honestly, it would sound like talking with AI in a conversational manner would replace the <em>harass a friend</em> kind of interaction. And maybe the first models did this actually, but nowadays, I feel much better if I</p><ul><li><p>first write down all of what <em>I</em> think</p></li><li><p>mark all of the &#8220;unknowns&#8221; in the train-of-thought I&#8217;m having</p></li><li><p>doing the first two steps usually already brings you forward; if not - continue</p></li><li><p>when I&#8217;ve exhausted all thoughts, but still have questions, I&#8217;d research the marked unknowns - here, fine, you can use a chat assistant to do the research for you and read through it. Remember though to actually look at the papers/articles found, and not just the final conclusion</p></li></ul><p>Now here, you&#8217;ll be tempted to dump all of what you wrote into the AI and ask it to make sense of it / suggest more ideas / suggest an outcome - in my experience, <strong>this is a bad idea</strong>. It&#8217;ll generate a lot of NOISE that you don&#8217;t need at the moment, because the whole point of the exercise was to find signal, instead of generating more noise.<br>The research parts of your marked areas should already give you more structured information, that you yourself can process and turn into signal.</p><p>Plus, if you do that, you&#8217;ll feel afterwards lost as to which of the thoughts were YOUR thoughts and which were generated by the LLM. Which is a very uncomfortable feeling if you want to be honest with your solution.</p><p><em>The process is the solution here</em> - so you kinda have to walk the problem yourself.</p><p>Applicable to both the chat interface and the Claude Code-like interface - probably Claude Code would give you more structure, more access to your internal docs, skills, etc., but still.</p><p><strong>AI-usefulness index: 2/5</strong></p><h2><strong>Remind me what&#8217;s going on? &#129300;</strong></h2><p>I&#8217;ve actually found this a very small, but very helpful use-case. You&#8217;ve been on vacation for two weeks. You&#8217;ve been so braindead and tired that you just LEFT everything behind and went to enjoy that wonderful sea/mountain/river-side at last. You come back and... what? It used to take us some time to &#8220;get back to work&#8221;. Nowadays I ask Claude to &#8220;remind me where we were at&#8221;. It&#8217;s pretty good actually. I think the output will be good enough to at least get you back into the working mood. And in my case it can be several repos and their commits; in your case it might be all the user stories created while you were gone - but the point being, summarizing a certain amount of &#8220;data&#8221; (commits, chats, stories, specs) over a relatively short time window works pretty well &#128515;</p><p><strong>AI-usefulness index: 5/5</strong></p><h2><strong>Enrichment &#128214;</strong></h2><p>I&#8217;ve talked about the enrichment step in my <a href="https://www.thoughtfultechnologist.com/p/automating-myself-out-of-development">Automating myself out of development</a> post.<br>To keep it short and honest - enrichment is when you know what you want, in terms of a user story, but you are too lazy to write the details out. Works best if you have prior approved-and-implemented specs somewhere accessible for the agent (let me call it &#8220;agent&#8221; from now on, ah? LLM, chatbot, Claude Code, whatever you are using - let&#8217;s just call it agent for simplicity). It would also work if it has to go and read the code every time, but yeah, tokens, you know.<br>Using the agent here goes typically fine. Although it&#8217;s quite hard to evaluate it truly, because I still have the mental model of the application, so thanks to that, I automatically write even one-sentence descriptions that imply a good description and imply understanding of the codebase.<br>So what would probably make sense here, once you move from solo to team development, is to make this step <em>critical</em>. Make this step (through prompts, or skills, or whatever the next agent framework gives you) critical of the original message - make it highlight any prior implementations that the next agent (or human) should pay attention to.<br>Useful also to remind yourself of prior implementations, you know? Like for example, we wanted to introduce &#8220;capabilities&#8221; to our agents (they are SRE agents investigating incidents, in short), but we already had &#8220;capabilities&#8221; as a concept attached to our integrations (e.g. Grafana/GitHub/GitLab integrations). So the enrichment step would highlight that this already exists and we should at least call it something different - better yet, rethink the whole relationship.</p><p>So, summary -<br><strong>AI-usefulness index:</strong> 4/5<br><strong>Tip:</strong> make it critical</p><h2><strong>Spec &#128221;</strong></h2><p>I got roasted for saying this, at the beginning of the agentic-engineering discussions, but I&#8217;m going to state it again and I want to see some real arguments - <em>the output that is good for an agent and the output that is good for a human are not the same</em>. A human will be better off without code snippets in the spec, and would instead appreciate an architecture diagram; an agent, however, can &#8220;split&#8221; part of the future implementation into adding some details in the spec.</p><p>Here, what I&#8217;d pay attention to and specifically have a mechanism for dealing with (I&#8217;m not being overly detailed on the <em>how</em>, because the concrete output might be different for different tools / teams - but the idea should stand) is that agents, even if they have some open questions and they flag some areas that are questionable, they&#8217;d go like &#8220;I&#8217;ve flagged these, and the planner/implementation agent will need to deal with them&#8221;. Not OK. I want to see those NOW, and make decisions about them sooner rather than later.<br>Basically, make them (prompt, ask for structured output, etc.) <em>be explicit about areas that are likely to cause problems or are questionable</em>.</p><p>And back to the human-output-vs-agent-output thing - if you care about building the model of the application in your head, alongside it being developed (and I&#8217;m not being condescending here; it can be valid not to care in the context of a demo, or an I-just-want-to-be-done-with-this-now-we&#8217;ll-throw-it-out-tomorrow kind of implementation, and it might be critical in some other case) - you need to ask for an additional &#8220;human-readable&#8221; output with extras like diagrams, and no code snippets.</p><p>So now, if you have this wonderfully crafted two-type output to help YOU understand, to help YOU answer the important questions, and to help downstream agents process the feature further, you will recognize that not all tasks are made equal (what a surprise).</p><p>Here you can create one more &#8220;categorizer&#8221; that decides which tasks are big enough that they need to go through this elaborate spec creation, or whether they&#8217;re easy and can just go further, let&#8217;s say without an arch diagram.</p><p>I can hear you screaming that I&#8217;m overcomplicating things and following the herd to increase token usage. Maybe. MAYBE.<br>But the thing is - <em>someone, somewhere in the development pipeline needs to do these things</em>. Needs to enrich the story, needs to create the spec, needs to create a diagram describing the spec, needs to decide if the task is &#8220;complicated&#8221; or not. It&#8217;s up to YOU and YOUR use-case to delegate this or not. Lego bricks. Lego bricks....</p><p>I got a bit distracted; let&#8217;s go back to use-cases.</p><p><strong>AI-usefulness index:</strong> 4/5<br><strong>Tip:</strong></p><ul><li><p>think of the result artifacts and who&#8217;s going to read them</p></li><li><p>make sure it&#8217;s explicit in the parts where it asks a question</p></li><li><p>keep already-implemented specs somewhere for reference/context gathering</p></li><li><p>think about categorizing what is worth an elaborate spec and what&#8217;s worth implementing right away. Use your OWN project criteria for this.</p></li></ul><h2><strong>Brainstorming&#127786;&#65039;</strong></h2><p>Wait, you think - you just talked about rubberducking. Well, that&#8217;s different. And I&#8217;m not trying to overcomplicate things with terminology. I&#8217;m just defining it so we have common ground. For you, brainstorming can mean one thing; for me - another.<br>So, I see the difference between brainstorming and rubberducking in that, for the first one, you already - maybe not completely, but somewhat - see the possible options, possible tradeoffs, and possible places where something can break, and you need to discuss those tradeoffs with someone. Rubberducking is really more uncomfortable, and there you must &#8220;walk the problem&#8221;. Brainstorming is ahead of that.</p><p>And, as long as you are not dealing with novel issues, or issues that don&#8217;t have a lot of ready-made solutions out there in the sea of solutions on the internet - you&#8217;ll be fine using LLMs and agents.</p><p>Present the problem, ask it to push back, brainstorm options. That&#8217;s fine. Don&#8217;t forget to have an artifact in the end - a result of the brainstorming. And I&#8217;m afraid you are still better off if you brainstorm it first, and THEN ask the LLM for more input if needed.</p><p>Generally, I&#8217;ll be honest. The more I do something myself and THEN go back to the LLM, the more I re-discover my initial attitude towards agentic systems - which is that they are not doing THAT good of a job... The thing is... I&#8217;ve been told so many times that I&#8217;m overdoing things. Overcomplicating things. Overthinking things. So I have come to understand that some things are OK to be done &#8220;good enough&#8221;. One can&#8217;t do everything alone, right?</p><p>The KEY is for you to understand which things are OK to be done &#8220;good enough&#8221; and which are not.<br>Paraphrasing the famous quote:</p><blockquote><p>Grant me the serenity to let the LLM handle the &#8220;good enough,&#8221;<br>the courage to do the rest myself,<br>and the wisdom to know the difference.</p></blockquote><p><strong>AI-usefulness index:</strong> 4/5<br><strong>Tip:</strong> pick your battles. Brainstorm about things you know. Avoid jumping into brainstorming about things you don&#8217;t know.</p><h2><strong>Remind me, what was X? &#128373;&#65039;&#8205;&#9792;&#65039;</strong></h2><p><a href="https://youtu.be/sSyXgWxNm9Y?si=UHBb-92fGj6iG2ug&amp;t=1544">In the conversation with Ia</a>, I mention this tiny use-case that I find absolutely useful. This is when I forget the name of a book (which happens quite often), or (more applicable to software engineering) the name of some term (I&#8217;m so good at remembering things on the concept level, but so bad at remembering the exact term for them...). So I absolutely love when I write something vague and get an answer from the LLM.</p><p>I know it&#8217;s a small use-case, but yeah, it kinda feels like magic sometimes &#128516;</p><p>I&#8217;d put the &#8220;cold start&#8221; use-case here too. This is when you want to learn/research/search for something and you don&#8217;t know where to start <em>at all</em>. You need someone to point you at what to google in the first place. AI&#8217;s good at that.</p><p><strong>AI-usefulness index:</strong> 4.5/5 (I still can&#8217;t find a detective sci-fi story from the 90s about a woman embedding her mind into someone else / there was AI involved...)<br><strong>Tip:</strong> Use it if you&#8217;re bad at terms</p><h2><strong>Wait - is there a pattern here?</strong></h2><p>Okay. I wanted to put these on paper, because I like structure and I want to learn to be more aware what type of activity I&#8217;m engaging in. Now that the whole list is sitting in front of me, the conclusion is the obvious one: <em>remind me where we were</em>, <em>remind me what X was</em>, the <em>cold start</em>. They&#8217;re all <strong>retrieval and summarization over a bounded corpus I already own</strong> - my commits, my chats, my specs, the existing pile of articles and papers already out there on the internet. The agent isn&#8217;t conjuring value out of thin air; it&#8217;s fetching and compressing something that already exists and that I have access to.</p><p>The low and middling ones - rubberducking, brainstorming - are <strong>generative work, where the process of doing it is the value</strong>. And the moment you outsource the process, you don&#8217;t get the thing the process was supposed to give you. That&#8217;s the whole &#8220;the process is the solution&#8221; point from way back at the top.</p><p>So that&#8217;s the line, more or less:</p><ul><li><p>the agent shines when the value is in <em>retrieving and compressing</em> something that already exists</p></li><li><p>the agent gets shaky (or actively counterproductive) when the value is in <em>the process of generating</em> the thing</p></li></ul><p>That&#8217;s why some land at 5 and some at 2. It&#8217;s not really a list of random use-cases I happened to think of - it&#8217;s the same axis viewed from different angles.</p><p>And the in-betweens (enrichment, spec) sit at 4 exactly because they&#8217;re <em>mixed</em>: a lot of their value is retrieval (pulling in prior implementations, prior specs, the existing model of the app), and the generative part stays useful only as long as I keep ownership of it - i.e., I demand the human-readable output, I make the open questions explicit NOW, I keep the mental model in my own head. The second I let the agent own the generative part wholesale, those scores would drop too.</p><p>Obvious, I know, and actually I was more aware of these in the beginning of using AI, but I don&#8217;t know how about you, when you have this assistant next to you, which is now so much more than just LLM, but a lot of internal logic of the provider, you don&#8217;t usually PAUSE and think how and what you are going to tell it. You just do. And then get frustrated when the output is not to your satisfaction.</p><p><br>Hopefully this list will help me manage my expectations before entering the dialog.</p><p>So maybe the one-liner to take away, going back to what Ia said: <strong>it&#8217;s not &#8220;is AI dangerous&#8221; - it&#8217;s </strong><em><strong>am I asking it to retrieve, or to generate?</strong></em><strong> And if it&#8217;s the second one, </strong><em><strong>do I still want to own the process?</strong></em></p><h2><strong>The usefulness matrix</strong></h2><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/kRhhk/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9335bdf9-dcf9-4eb8-b1f1-115c1cad35cd_1220x1300.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09e6b163-7c40-45d3-9db4-b64bffa89068_1220x1370.png&quot;,&quot;height&quot;:604,&quot;title&quot;:&quot;AI-usecase usefulness table&quot;,&quot;description&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/kRhhk/1/" width="730" height="604" frameborder="0" scrolling="no" loading="lazy"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>Rough reading of the table: the higher up you go, the more it&#8217;s pure retrieval and the more comfortable you can be handing it off. The lower you go, the more the process itself is the point - and the more you should think twice before delegating it.</p><div><hr></div><p>A lot of this advice will sound obvious, but pay attention to what and how you use the LLMs every day, and you&#8217;ll start to notice that it takes a little bit of effort to introduce these friction points, instead of jumping into the conversation right away.</p><p>I&#8217;ll be adding more examples, about code generation, about learning something new, etc. but I thought I&#8217;d wrap this one before you are bored.</p><p>Looking forward to some comments of <strong>real</strong> usecases and thoughts.</p>]]></content:encoded></item><item><title><![CDATA[The Root Cause of Never Learning]]></title><description><![CDATA[How we can learn from the gap between "Work as Imagined" and "Work as Done"]]></description><link>https://www.thoughtfultechnologist.com/p/the-root-cause-of-never-learning</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/the-root-cause-of-never-learning</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Fri, 19 Jun 2026 13:34:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/YUZ_Gq8Q14A" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this episode of Root Cause we sit down with Adrian Hornsby - former AWS Principal Engineer, founder of Resilium Labs, and author of Why We Still Suck at Resilience - to get to the root cause of what's quietly breaking inside engineering organizations as AI absorbs more of the thinking. We dig into the gap between how we imagine our systems work and how they actually work, why that gap is where all the real learning lives, and what happens to a team when the thinking itself gets delegated to something that sounds confident but doesn't know which walls are load-bearing.</p><p><em><strong>Below you&#8217;ll find the text version of this episode, for those, who prefer reading :)</strong></em></p><div id="youtube2-YUZ_Gq8Q14A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YUZ_Gq8Q14A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/YUZ_Gq8Q14A?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em>Guest: Adrian Hornsby &#8212; Resilience engineer, former AWS principal engineer, and founder of Resilium Labs</em></p><p><span>Adrian Hornsby spent over two decades in software engineering and operations</span> <span>&#8212;</span> <span>from researcher at Nokia working on distributed systems,</span> <span>to building messaging systems for millions of users,</span> <span>to nine years at AWS as a principal engineer on the fault injection team.</span> <span>About a year ago he left to found Resilium Labs and write a book,</span> <em>Why We Still Suck at Resilience</em><span>.</span> <span>Its premise is uncomfortable</span>: <span>organizations have poured a decade into chaos engineering,</span> <span>game days,</span> <span>operational readiness reviews and incident retros</span> <span>&#8212;</span> <span>and the same incidents keep happening.</span> <span>In this conversation,</span> <span>he and Nune get to the root cause of the gap between how we think systems work and how they actually work</span> <span>&#8212;</span> <span>and why AI is widening it.</span></p><div><hr></div><h2><strong>Why &#8220;root causes,&#8221; plural</strong></h2><p><strong>Nune:</strong> <span>When you learned the name of my show,</span> <span>we joked that it should have been</span> &#8220;<span>root causes,</span>&#8220; <span>plural.</span> <span>Can you unpack that?</span></p><p><strong>Adrian:</strong> <span>The short answer is that</span> <strong>it&#8217;s comfortable to think there&#8217;s one reason something fails, but in practice it&#8217;s never like that.</strong> <span>It</span>&#8216;<span>s the accumulation of small things happening at the same time that creates the condition by which the system fails.</span></p><p><span>The long answer is about the nature of complex systems,</span> <span>and how systems fail in what</span>&#8216;<span>s called</span> <strong>emergence</strong> <span>&#8212;</span> <span>the interactions of components.</span> <span>It isn</span>&#8216;<span>t really the components themselves that fail,</span> <span>it</span>&#8216;<span>s their interaction.</span> <span>You can have</span> <strong>two components working very well by every measure of the components themselves, but the interaction creates the problem</strong><span>.</span> <span>Once you start to think about systems like that,</span> <span>you can unpack an almost unlimited number of reasons why a system fails.</span></p><p><span>Root cause really comes from the old industrial era.</span> <span>You had,</span> <span>for example,</span> <span>an assembly line,</span> <span>and something would fail,</span> <span>and you</span>&#8216;<span>d say,</span> <span>okay,</span> <span>let</span>&#8216;<span>s go fix that</span> <span>&#8212;</span> <span>that was the root cause.</span> <span>It got carried over to software systems through safety-one.</span> <span>If you</span>&#8216;<span>re interested in resilience engineering,</span> <span>you hear the terms safety-one and safety-two.</span> <span>For some reason people have liked to have one root cause,</span> <span>and I kept using it,</span> <span>and still today you use it.</span> <span>So,</span> <span>sorry,</span> <span>I got carried away again.</span></p><p><strong>Nune:</strong> <span>No,</span> <span>it</span>&#8216;<span>s perfect.</span> <span>I personally picked</span> &#8220;<span>root cause</span>&#8220; <span>because I like to dig into things</span> <span>&#8212;</span> <span>to find the reason things happen and not just stay at the high level.</span> <span>You keep asking why,</span> <span>why,</span> <span>why,</span> <span>and hopefully you get to one or many root causes.</span> <span>But now I</span>&#8216;<span>m a bit stuck with the name,</span> <span>because whenever I choose a topic for an episode I have to formulate it in a negative way</span> <span>&#8212;</span> <span>you don</span>&#8216;<span>t usually go looking for the root cause of a good thing.</span> <span>Which is probably also not correct.</span> <span>We should also look into things that went well and try to unpack why.</span></p><p><strong>Adrian:</strong> <span>You</span>&#8216;<span>re touching on something so important to resilience engineering.</span> <span>The default when there</span>&#8216;<span>s an incident is to look at what went wrong.</span> <span>But if you think about systems,</span> <strong>they go well most of the time</strong><span>.</span> <span>It</span>&#8216;<span>s only at the moment when emergence happens that the context starts to create failure.</span> <span>And that</span>&#8216;<span>s what we want to understand</span> <span>&#8212;</span> <span>what worked well in most of the scenarios,</span> <span>and then the context when things went wrong,</span> <span>so we can really understand what happened.</span></p><p><span>So saying</span> &#8220;<span>root cause</span>&#8220; <span>is actually a problem in incident analysis,</span> <span>because</span> <strong>it biases engineers &#8212; it anchors them to look at what went wrong, when we should also ask, what went well?</strong> <span>And then see how we can do more of that.</span></p><blockquote><p><span>The default when there</span>&#8216;<span>s an incident is to look at what went wrong.</span> <span>But systems go well most of the time.</span></p></blockquote><p><strong>Nune:</strong> <span>Even in our day-to-day life,</span> <span>every person is wired to think about the negative things that happened.</span> <span>But when you think about it</span> <span>&#8212;</span> <span>how amazing is it that the day goes by smoothly?</span> <span>How many millions of possibilities there are for things to go wrong when we leave the house,</span> <span>and yet they didn</span>&#8216;<span>t happen.</span> <span>We need to appreciate all the good stuff.</span></p><blockquote><p><span>It isn</span>&#8216;<span>t the components themselves that fail</span> <span>&#8212;</span> <span>it</span>&#8216;<span>s their interaction.</span></p></blockquote><h2><strong>Work as imagined, work as done</strong></h2><p><strong>Nune:</strong> <span>There</span>&#8216;<span>s a term I think we</span>&#8216;<span>ll use a lot today,</span> <span>and for people who aren</span>&#8216;<span>t familiar with the terminology</span>: <span>work as imagined and work as done.</span> <span>Can you explain the gap between them,</span> <span>and maybe a disastrous example if you have one?</span></p><p><strong>Adrian:</strong> <strong>Work as imagined is the version of work that lives in documents</strong> <span>&#8212;</span> <span>diagrams,</span> <span>runbooks,</span> <span>organization charts,</span> <span>slides.</span> <span>It</span>&#8216;<span>s really clean.</span> <span>It</span>&#8216;<span>s what we write when we</span>&#8216;<span>re caffeinated,</span> <span>during the day,</span> <span>all happy and smiling.</span> <span>It</span>&#8216;<span>s very logical most of the time,</span> <span>and it</span>&#8216;<span>s defensible to auditors and to leadership,</span> <span>because that</span>&#8216;<span>s what we design.</span></p><p><span>But</span> <strong>work as done is what actually happens</strong><span>.</span> <span>It</span>&#8216;<span>s what you do at three in the morning when you</span>&#8216;<span>re on call and you skip a few steps in your runbook because you</span>&#8216;<span>ve learned those steps aren</span>&#8216;<span>t the right ones</span> <span>&#8212;</span> <span>they haven</span>&#8216;<span>t been updated since the last version was deployed six months ago.</span> <span>It</span>&#8216;<span>s the engineer who learns that a particular alert is more important than another.</span> <span>You start to learn how the system behaves in production.</span> <span>And</span> <strong>all of that is often not in the design docs, not in the documentation, and certainly not in the architecture</strong><span>.</span></p><p><span>What</span>&#8216;<span>s really important to understand is that</span> <strong>work as done is not a deviation from work as imagined &#8212; it&#8217;s a structural gap that happens naturally in every system</strong><span>.</span> <span>First you need an idea of what you</span>&#8216;<span>re going to build,</span> <span>and between the idea and what gets implemented there</span>&#8216;<span>s already a difference.</span> <span>Then you make shortcuts,</span> <span>you forget to implement something,</span> <span>or you implement something else.</span> <span>So naturally there</span>&#8216;<span>s a difference between what you imagined in your head and what gets done.</span></p><p><span>As an engineer you need to understand that,</span> <span>because we often think about our system from the imagined world,</span> <span>but we really look at it from the done.</span> <strong>The only situation where you look at the done is when there&#8217;s an incident</strong> <span>&#8212;</span> <span>that</span>&#8216;<span>s reality knocking at the door,</span> <span>saying,</span> <span>it</span>&#8216;<span>s not what you imagined.</span></p><blockquote><p><span>The only time you look at the done is when there</span>&#8216;<span>s an incident.</span> <span>That</span>&#8216;<span>s reality knocking at the door.</span></p></blockquote><p><span>So when you have an incident,</span> <span>you don</span>&#8216;<span>t necessarily want to understand what went wrong.</span> <span>You want to understand what the incident surfaced between what you imagined and what is done</span> <span>&#8212;</span> <strong>what surprised you, and what changed in your mental model</strong><span>.</span> <span>That</span>&#8216;<span>s the only thing you can do in that situation</span>: <span>learn from it.</span> <span>And that</span>&#8216;<span>s why I often say the only answer to understanding that gap is learning.</span> <span>That</span>&#8216;<span>s the thesis of the book.</span></p><blockquote><p><span>The only answer to understanding that gap is learning.</span> <span>That</span>&#8216;<span>s the thesis of the book.</span></p></blockquote><h2><strong>When seniority detaches you from reality</strong></h2><p><strong>Nune:</strong> <span>There are so many layers to this.</span> <span>When you start in IT and you</span>&#8216;<span>re not leading teams yet,</span> <span>you</span>&#8216;<span>re solo</span> <span>&#8212;</span> <span>you</span>&#8216;<span>re implementing,</span> <span>you deploy the thing,</span> <span>you test it.</span> <span>So you naturally know every step of what</span>&#8216;<span>s done.</span> <span>What always surprised me is the role of the software architect.</span> <span>I</span>&#8216;<span>ve seen organizations where the software architect doesn</span>&#8216;<span>t come from software development</span> <span>&#8212;</span> <span>they</span>&#8216;<span>re only an architect.</span> <span>That</span>&#8216;<span>s surprising,</span> <span>because it means this person lives in that quite perfect world you described</span>: <span>not tired,</span> <span>having time to think about the system and its good or bad outcomes,</span> <span>and then architecting it.</span> <span>Maybe that</span>&#8216;<span>s a good thing,</span> <span>because they need that time to think.</span> <span>But on the other hand</span> <span>&#8212;</span> <span>how can you be a good architect without ever touching the code?</span> <span>Do you think you can be one?</span></p><p><strong>Adrian:</strong> <span>There</span>&#8216;<span>s a lot to unpack here.</span> <span>Let me go back to the first point about architects having a version of the imagined world.</span> <span>It</span>&#8216;<span>s not just architects.</span> <span>Often you have senior engineers too,</span> <span>where naturally,</span> <span>as you grow in seniority,</span> <span>your areas expand across the organization.</span> <span>So you spend less and less time on the day-to-day operation of the service.</span> <span>And because of that,</span> <span>your version of the imagined reality</span> <span>&#8212;</span> <span>your version of the software in your mind</span> <span>&#8212;</span> <span>is slowly detaching from work as done,</span> <span>because your work is spreading.</span></p><p><span>I was a principal engineer at AWS,</span> <span>and I had a really big gap between my imagined version of the software and what was done on the ground,</span> <span>because I was dealing with a lot of different things.</span> <strong>So it&#8217;s not the role. It&#8217;s a structural feature of organizational growth and promotion.</strong> <span>And it has a cost.</span></p><p><span>That</span>&#8216;<span>s why I say that the more senior you get,</span> <span>when you start to realize you</span>&#8216;<span>re detached from reality,</span> <strong>you need to switch from decision-maker to decision-enabler</strong><span>.</span> <span>You change your role from making the decisions about how things should be done in the real,</span> <span>done world of work,</span> <span>to helping people at the edge make better decisions through your knowledge and your experience.</span> <span>And often this is where you see it not happening in organizations</span> <span>&#8212;</span> <span>because when you move away from the done,</span> <span>you lose grip on it,</span> <span>but</span> <strong>you want to keep making decisions, keep being relevant. It&#8217;s a resistance to being detached from reality.</strong></p><p><span>So the long story short is,</span> <span>yes,</span> <span>those kinds of roles are detached from reality,</span> <span>and</span> <strong>they make decisions that impact other people at 3am</strong><span>.</span> <span>That</span>&#8216;<span>s a big problem.</span> <span>But it</span>&#8216;<span>s not just architects</span> <span>&#8212;</span> <span>it</span>&#8216;<span>s any role that is detached from reality and that keeps making decisions.</span> <span>The team will absorb the difference between what the decision-making team thinks it does and what actually gets done.</span></p><blockquote><p><span>You need to switch from decision-maker to decision-enabler.</span></p></blockquote><p><strong>Nune:</strong> <span>It does create that tension,</span> <span>but I think we also need to understand that</span>&#8216;<span>s what abstraction is for.</span> <span>For any human to think and make decisions about a system,</span> <span>we have to abstract it and create models of it.</span> <span>There</span>&#8216;<span>s no way around it.</span> <span>There</span>&#8216;<span>s also something Charity Majors introduced</span> <span>&#8212;</span> <span>the manager pendulum</span> <span>&#8212;</span> <span>where you need to come back to development every two or three years so you don</span>&#8216;<span>t become too detached.</span></p><p><span>From my own background</span> <span>&#8212;</span> <span>I had a previous startup and now I</span>&#8216;<span>m building one</span> <span>&#8212;</span> <span>it happens naturally.</span> <span>First you develop it yourself,</span> <span>then you have to find a team around what you</span>&#8216;<span>ve built.</span> <span>So you go higher and higher in the abstraction.</span> <span>And then if you build another component or another department,</span> <span>you</span>&#8216;<span>re back in the trenches doing hands-on work,</span> <span>and then you get out of it again.</span> <span>So for me it</span>&#8216;<span>s hard to accept that this gap exists.</span> <span>You need to embrace the gap instead of trying to fix it,</span> <span>because the gap is not going anywhere.</span> <span>There must be people who deal with the high level and people who do the hands-on work.</span> <span>It</span>&#8216;<span>s a different mindset,</span> <span>a different style of working.</span> <span>It</span>&#8216;<span>s a different role.</span></p><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s a different role.</span> <span>I</span>&#8216;<span>m not sure that going back to development as a manager is the right thing.</span> <span>I see a lot of CTOs vibe coding now and talking about it,</span> <span>and I</span>&#8216;<span>m not sure that</span>&#8216;<span>s right.</span> <strong>The easier thing to do is to recognize that you&#8217;re not adequate anymore to make the decision</strong> <span>&#8212;</span> <span>to delegate to the people at the edge and free them from the roadblocks so they can make those decisions.</span> <span>I love the idea of</span> <strong>&#8220;you build it, you run it, you operate it, you fix it,&#8221;</strong> <span>because that</span>&#8216;<span>s exactly the people who actually run the system making those decisions.</span></p><p><span>It</span>&#8216;<span>s not a bad thing to be detached.</span> <span>It</span>&#8216;<span>s just recognizing that it</span>&#8216;<span>s difficult,</span> <span>and that</span> <strong>people clench onto making decisions because it feels powerful, it feels like you&#8217;re relevant</strong><span>.</span> <span>But it</span>&#8216;<span>s a mindset.</span> <span>You can be just as relevant as a coach,</span> <span>helping others,</span> <span>and it</span>&#8216;<span>s even more rewarding once you realize your job has changed and you</span>&#8216;<span>re enabling others.</span> <span>That flip is very,</span> <span>very hard.</span> <span>Having been involved in a lot of promotions at Amazon,</span> <span>I think that</span>&#8216;<span>s the hardest part going from senior engineer to principal</span> <span>&#8212;</span> <strong>people flipping from being the expert in the room to being the enabler</strong><span>.</span></p><blockquote><p><span>The hardest part of going from senior engineer to principal is flipping from being the expert in the room to being the enabler.</span></p></blockquote><h2><strong>The hard part is letting go</strong></h2><p><strong>Nune:</strong> <span>That</span>&#8216;<span>s something I struggle a lot with.</span> <span>To be honest,</span> <span>it</span>&#8216;<span>s very hard for me to delegate,</span> <span>and it</span>&#8216;<span>s a completely different skill set.</span> <span>When you work technically and get good at it,</span> <span>this other role of enabling people has a lot less to do with technical abilities and a lot more to do with empathy</span> <span>&#8212;</span> <span>knowing when to delegate and when not to.</span> <span>A friend of mine has an article on how that</span>&#8216;<span>s similar to raising a child more than software engineering,</span> <span>because you need to be strict when you need to be,</span> <span>but also say it in a way that doesn</span>&#8216;<span>t hurt the other person.</span></p><p><span>It</span>&#8216;<span>s hard for me to grasp.</span> <span>And on the technical side</span> <span>&#8212;</span> <span>you shouldn</span>&#8216;<span>t vibe code into production,</span> <span>but if you</span>&#8216;<span>re about to introduce a new technology into your team,</span> <span>shouldn</span>&#8216;<span>t you at least know more about that technology?</span> <span>Or do you always just find a person who knows it and enable that person?</span></p><p><strong>Adrian:</strong> <span>That</span>&#8216;<span>s a good question.</span> <span>I</span>&#8216;<span>ll put it in two buckets.</span> <span>The first bucket</span>: <span>maybe the fact that you can</span>&#8216;<span>t let go of being involved in the day-to-day technical details is because you</span>&#8216;<span>re building and you</span>&#8216;<span>re not sure where you</span>&#8216;<span>re going.</span> <span>That</span>&#8216;<span>s what I see most</span> <span>&#8212;</span> <span>people have an idea of what they want to build,</span> <span>but it</span>&#8216;<span>s not very well defined.</span> <span>The feeling you have is that by not being there making the decision,</span> <span>somebody is going to change the idea of what you think you</span>&#8216;<span>re building.</span></p><p><strong>Nune:</strong> <span>I</span>&#8216;<span>m not that worried about changing the idea</span> <span>&#8212;</span> <span>I hope I</span>&#8216;<span>m not that clingy.</span> <span>It</span>&#8216;<span>s more that I feel highly responsible that I haven</span>&#8216;<span>t thought everything through yet.</span> <span>So how can I ask another person to implement it when I don</span>&#8216;<span>t have all the answers,</span> <span>but the only way for me to get the answers is to actually build the thing?</span></p><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s the same thing.</span> <span>Somebody else can build the thing and work with you so that,</span> <span>together as a team,</span> <span>you</span>&#8216;<span>re building the right thing.</span> <span>For me that was the first bucket</span>: <span>when we</span>&#8216;<span>re not clear on the idea,</span> <span>we get more attached to the details,</span> <span>because we</span>&#8216;<span>re worried the idea won</span>&#8216;<span>t go the way we intuitively think in our head</span> <span>&#8212;</span> <span>even though it</span>&#8216;<span>s not clear.</span></p><p><span>The second bucket is simply a trust problem.</span> <strong>Can you trust the people you hire and work with to make the right decision?</strong> <span>One of my bosses back in the day told me,</span> <span>always hire people smarter than you,</span> <span>so you don</span>&#8216;<span>t have to do their jobs.</span></p><blockquote><p><span>Always hire people smarter than you,</span> <span>so you don</span>&#8216;<span>t have to do their jobs.</span></p></blockquote><p><strong>Nune:</strong> <span>That</span>&#8216;<span>s also been an AWS motto</span> <span>&#8212;</span> <span>always hire people who are better than the people already in the company.</span> <span>Raise the bar.</span> <span>I completely agree.</span> <span>When I look back,</span> <span>the easiest things to delegate have been things I was never good at myself.</span> <span>UI development,</span> <span>for example</span> <span>&#8212;</span> <span>I know how to do high-level stuff,</span> <span>but I</span>&#8216;<span>ve never become an expert in React.</span> <span>When I had a senior on my team it was easy to say,</span> <span>you make the decisions,</span> <span>you know better than me.</span> <span>But on the things I</span>&#8216;<span>ve tried myself,</span> <span>I</span>&#8216;<span>ve been over-controlling</span> <span>&#8212;</span> <span>and I</span>&#8216;<span>m sorry to all my teammates,</span> <span>because they</span>&#8216;<span>ve felt that.</span></p><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s a normal thing.</span> <span>I</span>&#8216;<span>ve been very controlling on the things I feel most comfortable with.</span> <span>I don</span>&#8216;<span>t think it</span>&#8216;<span>s about comfort</span> <span>&#8212;</span> <span>it</span>&#8216;<span>s about trusting that other people can help you.</span></p><p><strong>Nune:</strong> <span>So the solution is to know less.</span></p><p><strong>Adrian:</strong> <span>I always use a mental model when I coach engineers.</span> <span>I explain it like building a snowman.</span> <strong>Your idea is the body of the snowman</strong> <span>&#8212;</span> <span>you start by rolling the big body,</span> <span>but you need the head,</span> <span>the branches,</span> <span>the carrot,</span> <span>all of that to make the idea better.</span> <span>You might have the central 80%</span> <span>of the body done by yourself,</span> <span>but</span> <strong>all those additions are what make the snowman a snowman</strong><span>.</span> <span>Without them you just have a ball,</span> <span>and that doesn</span>&#8216;<span>t get you anywhere.</span> <span>I like to think of our ideas like that</span> <span>&#8212;</span> <span>the central body of a snowman,</span> <span>and then everybody else in the company,</span> <span>on your team,</span> <span>adds to it.</span> <span>The only thing you can do is enable that.</span> <strong>It gives permission for others to make your idea better.</strong></p><blockquote><p><span>You might have 80%</span> <span>of the snowman</span>&#8216;<span>s body done by yourself</span> <span>&#8212;</span> <span>but it</span>&#8216;<span>s the head,</span> <span>the branches,</span> <span>the carrot that make it a snowman.</span></p></blockquote><h2><strong>Practices for learning from the gap</strong></h2><p><strong>Nune:</strong> <span>Let</span>&#8216;<span>s assume we accept that this gap exists and that the gap is where the learning is.</span> <span>Can you give some practical tips for what it means for an organization to learn from the gap?</span> <span>It sounds good,</span> <span>but what does it mean on an average Tuesday morning</span> <span>&#8212;</span> <span>not as a philosophy?</span> <span>Because we say you can write better documentation,</span> <span>have a stricter process,</span> <span>more controls</span> <span>&#8212;</span> <span>but how do you not get into compliance theater?</span> <span>How do you actually learn from it?</span></p><p><strong>Adrian:</strong> <span>First,</span> <strong>an incident is absolutely a mirror of that gap</strong><span>,</span> <span>because it happened.</span> <span>If you really spend time studying it,</span> <span>you</span>&#8216;<span>ll learn about the done.</span> <span>But if you think a bit upstream,</span> <span>in the day-to-day of an operating system without waiting for an incident</span> <span>&#8212;</span> <span>which is the truth happening to you</span> <span>&#8212;</span> <strong>chaos engineering, load tests, and game days are three really good practices</strong> <span>for understanding some of the gaps.</span></p><p><strong>Chaos engineering</strong> <span>gives you a very good understanding of how you think your system is going to degrade or fail.</span> <span>You inject a failure and you make a hypothesis</span> <span>&#8212;</span> <strong>you explain beforehand how you think your system is going to behave</strong><span>.</span> <span>Then you actually inject the fault and see what happens in reality.</span> <span>You study the observability and the impact of the experiment,</span> <span>and you have two versions to compare</span>: <span>your mental model pre-experiment and the post-experiment reality.</span> <span>That</span>&#8216;<span>s usually a structural gap focused on degradation and failure modes</span> <span>&#8212;</span> <span>a very technical gap.</span></p><p><strong>Load testing</strong> <span>gives you another angle on the gap,</span> <span>more focused on whether your system scales as you imagine.</span> <span>Before injecting load you have your load test model,</span> <span>and you try to anticipate what will happen</span> <span>&#8212;</span> <span>what the load characteristics of your system will be.</span> <span>You inject the load test and then you see the result.</span> <span>That gives you a good idea of where your mental model about scaling is off.</span> <span>Especially what you want from a load test is</span> <strong>to find the cliff &#8212; the moment where the system just completely collapses</strong><span>.</span> <span>Any system has a maximum it can handle,</span> <span>and then it collapses,</span> <span>and you want a very good understanding of that collapse.</span> <span>Is it at 120%</span> <span>of your scaling model?</span> <span>Is it at 80%?</span> <span>Does it actually break much earlier than you anticipated?</span> <span>That</span>&#8216;<span>s a structural gap that load testing reveals.</span></p><p><strong>Game day</strong> <span>is a gap more about human coordination.</span> <span>Say you simulate a disaster recovery scenario,</span> <span>and you don</span>&#8216;<span>t prepare the team</span> <span>&#8212;</span> <span>you just tell them the whole region is down,</span> <span>let</span>&#8216;<span>s implement the DR.</span> <span>Then you see what happens.</span> <span>Is the team able to coordinate?</span> <span>Do they know what to do?</span> <span>Do they know which service to fail over?</span> <span>Do they communicate well with each other?</span> <span>Do they know how to come back?</span> <span>All of this is human coordination.</span> <span>When you did the exercise,</span> <span>you hoped the team would do well</span> <span>&#8212;</span> <span>and</span> <strong>in reality they do a lot differently</strong><span>.</span> <span>One of the best games I do at the beginning of an engagement is</span> <strong>to remove the team lead, the hero, from the team, and then see what happens</strong><span>.</span> <span>That</span>&#8216;<span>s a structural gap between the imagined world and the done</span> <span>&#8212;</span> <span>a different version of it.</span></p><blockquote><p><span>One of the best games I run at the start of an engagement is to remove the hero from the team</span> <span>&#8212;</span> <span>and then see what happens.</span></p></blockquote><p><span>And then you have operational readiness reviews,</span> <span>which are also a structural gap between how they think the system is going to be operated in production and how it actually is operated.</span></p><p><strong>Nune:</strong> <span>So chaos engineering,</span> <span>load testing,</span> <span>game days</span> <span>&#8212;</span> <span>those are the tools an organization can use to bridge the gap.</span></p><p><strong>Adrian:</strong> <span>Practices.</span> <span>I</span>&#8216;<span>d prefer to call them practices.</span></p><p><strong>Nune:</strong> <span>And I think one important event is also the incident itself.</span> <span>When somebody wakes up at 3am,</span> <span>they have to be the hero who fixes the thing no matter what</span> <span>&#8212;</span> <span>whether they followed the script or not.</span> <span>In my experience,</span> <span>the next day,</span> <span>or the day after,</span> <span>is very important</span>: <span>that person can say which of the things they followed worked,</span> <span>which didn</span>&#8216;<span>t work for them,</span> <span>and the team can optimize the process using their first-hand experience.</span> <span>If you agree with that.</span></p><p><strong>Adrian:</strong> <span>Correct.</span> <span>You</span>&#8216;<span>ve always had the experience where,</span> <span>during an incident,</span> <span>you try to follow the runbook and</span> <strong>you notice on step two it&#8217;s already wrong</strong><span>.</span> <span>So you use your intuition,</span> <span>or what you</span>&#8216;<span>ve learned from another team,</span> <span>and you go fix it.</span> <span>The next day is exactly that.</span> <span>You</span>&#8216;<span>re not going back to root cause</span> <span>&#8212;</span> <strong>you don&#8217;t really care what the problem was. What you want to understand is why you had to skip the runbook, what was different</strong><span>,</span> <span>what the context and the environment were</span> <span>&#8212;</span> <span>and then capture that,</span> <span>so you actually have more information about the real version of your system.</span> <span>But it</span>&#8216;<span>s not intuitive for people to do that.</span> <span>They just want to go and fix the root cause.</span></p><h2><strong>How AI widens the gap</strong></h2><p><strong>Nune:</strong> <span>We</span>&#8216;<span>ve established that the gap has always been there.</span> <span>We touched a bit on vibe coding,</span> <span>but I think we can generally say AI has widened it.</span> <span>Previously the gap was between departments,</span> <span>or between different roles inside the team.</span> <span>Now I feel we also have a gap between the person implementing and the AI that</span>&#8216;<span>s actually writing the code,</span> <span>as more and more people use AI for coding itself.</span> <span>Do you see that?</span> <span>And second</span> <span>&#8212;</span> <span>when a CTO starts vibe coding,</span> <span>plus the gazillion of articles about how you can build something in five minutes,</span> <span>it creates a narrative that engineering is easy.</span> <span>Why does it take a sprint or two?</span> <span>Any advice for people actually building things on how to explain that it</span>&#8216;<span>s not easy</span> <span>&#8212;</span> <span>how to push back in a way that doesn</span>&#8216;<span>t get them into trouble,</span> <span>but also explains that it</span>&#8216;<span>s still hard?</span></p><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s a good question.</span> <span>The biggest problem with AI is that it hides the gap.</span> <span>Now,</span> <span>all of a sudden,</span> <span>you</span>&#8216;<span>re asking AI to make decisions and to create things,</span> <span>and it does all of that for you.</span> <span>But the day after,</span> <span>or after the incident,</span> <strong>you can&#8217;t recall the mental model of the AI &#8212; what it did and why</strong><span>.</span> <span>With a human,</span> <span>you could trace back the thinking to some extent.</span> <span>You had a trace of the mental model of the person doing it.</span> <span>So the gap was visible when you looked.</span> <span>Now it</span>&#8216;<span>s not.</span></p><p><span>And even if AI is really good</span> <span>&#8212;</span> <strong>it writes better code than me, and I use it, no problem</strong> <span>&#8212;</span> <span>and even if it</span>&#8216;<span>s right 99%</span> <span>of the time,</span> <strong>the problem is the 1%</strong><span>.</span> <span>At 3am,</span> <span>your director is not going to blame AI for something that breaks.</span> <span>He</span>&#8216;<span>s going to go to a human and tell the human to fix the problem.</span> <strong>If AI can&#8217;t fix it, it always falls back to a human at the end of the day.</strong> <span>So if AI wrote 99%</span> <span>of the system and at 3am you</span>&#8216;<span>re thrown under the bus to go fix something that was never written by you,</span> <span>you</span>&#8216;<span>re going to spend quite a bit of time acquiring the knowledge to debug,</span> <span>trace,</span> <span>identify,</span> <span>and potentially fix the problem.</span></p><p><span>That</span>&#8216;<span>s the risk.</span> <strong>It&#8217;s not that it&#8217;s not good &#8212; it&#8217;s what happens to the human when it breaks.</strong> <span>It</span>&#8216;<span>s so tempting to deploy stuff that AI wrote,</span> <span>and it works most of the time,</span> <span>which gives you a signal that it</span>&#8216;<span>s good.</span> <span>But then comes the 1%</span> <span>where emergence happens,</span> <span>or different components interact in a way the AI didn</span>&#8216;<span>t plan for,</span> <span>and a human has to go and debug it.</span></p><blockquote><p><span>The biggest problem with AI is that it hides the gap.</span></p></blockquote><p><strong>Nune:</strong> <span>I notice it a lot myself.</span> <span>I</span>&#8216;<span>ve always been proud of how fast I can answer questions about the system</span> <span>&#8212;</span> <span>exactly because of the delegation problem,</span> <span>because I did everything myself.</span> <span>Now that I</span>&#8216;<span>m delegating more of the development to AI,</span> <span>I feel I</span>&#8216;<span>m not as fast.</span> <span>Most of the time the answer is,</span> <span>give me a couple of minutes,</span> <span>I</span>&#8216;<span>ll chat with my AI,</span> <span>and then I can answer.</span> <span>Which is</span> <em>peinlich</em> <span>&#8212;</span> <span>embarrassing,</span> <span>as they say in German</span> <span>&#8212;</span> <span>because you</span>&#8216;<span>re supposed to know how your system works on different layers.</span> <span>From one side it</span>&#8216;<span>s a bottleneck</span> <span>&#8212;</span> <span>you</span>&#8216;<span>re limited by how much you can keep in your head and reason about.</span> <span>On the other hand,</span> <span>as a lot of people are saying now,</span> <span>that</span>&#8216;<span>s the load-bearing wall,</span> <span>because it keeps the system working.</span></p><p><strong>Adrian:</strong> <span>I don</span>&#8216;<span>t have all the answers on that.</span> <span>We want to play devil</span>&#8216;<span>s advocate and stay in control,</span> <span>and that</span>&#8216;<span>s part of feeling uncomfortable when you don</span>&#8216;<span>t know why something went wrong.</span> <span>But what really worries me isn</span>&#8216;<span>t understanding what</span>&#8216;<span>s written.</span> <span>It</span>&#8216;<span>s that</span> <strong>when something goes wrong, it goes to a human, and at that moment, under pressure, you&#8217;ll be asked about a system you have no idea how it was built</strong><span>.</span> <span>That worries me.</span></p><p><span>I don</span>&#8216;<span>t know how we</span>&#8216;<span>re going to solve it,</span> <span>because</span> <strong>it&#8217;s a human problem</strong><span>.</span> <span>Humans are going to be blind</span> <span>&#8212;</span> <span>they are today and they will be in the future,</span> <span>regardless of whether you have an AI agent helping you.</span> <span>Something is going to give,</span> <span>something is going to break,</span> <span>and it</span>&#8216;<span>s not new.</span> <strong>Lisanne Bainbridge talked about the irony of automation in 1983</strong><span>,</span> <span>and she said that even back then,</span> <strong>the more complex the automation, the more skillful your engineers have to be to fix the automation when it breaks</strong><span>.</span> <span>AI is the next level of this.</span> <span>It</span>&#8216;<span>s a 40-year-old theory.</span></p><blockquote><p><span>The more complex the automation,</span> <span>the more skillful your engineers have to be to fix it when it breaks.</span> <span>That</span>&#8216;<span>s a 40-year-old theory.</span></p></blockquote><h2><strong>Don&#8217;t delegate the thinking</strong></h2><p><strong>Nune:</strong> <span>That brings me to the thought that AI performs better in the hands of more experienced people.</span> <span>So what do juniors do?</span> <span>People who are just starting in IT</span> <span>&#8212;</span> <span>how can they learn?</span> <span>Do they force themselves not to use AI?</span> <span>It</span>&#8216;<span>s difficult for them</span>: <span>on one side,</span> <span>people tell them to learn the fundamentals;</span> <span>on the other,</span> <span>there are all these tools that also take time to learn.</span> <span>You don</span>&#8216;<span>t just write a prompt and that</span>&#8216;<span>s it</span> <span>&#8212;</span> <span>you also need to find your way of working with all the AI tools.</span> <span>Do you have advice for people who are just starting?</span></p><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s a good question again.</span> <span>The cynical part of me feels like it</span>&#8216;<span>s old-man-me talking about the good old days.</span> <span>I</span>&#8216;<span>d say</span> <strong>younger engineers will figure things out. They&#8217;ll find a way.</strong> <span>There are so many unknowns at the moment.</span> <span>They</span>&#8216;<span>ll figure out how to work with these technologies far better than we do.</span> <span>When you</span>&#8216;<span>re AI-native,</span> <span>you</span>&#8216;<span>ll probably develop mental models that are very different from ours,</span> <span>and that</span>&#8216;<span>s okay.</span></p><p><span>The only thing I</span>&#8216;<span>d say is</span>: <strong>be careful of efficiency</strong><span>.</span> <span>Efficiency drives speed,</span> <span>and trying not to spend time learning can bite back.</span> <strong>Understanding how to debug a system without AI is going to be an important skill.</strong> <span>Imagine you</span>&#8216;<span>re at 3am and the cloud is not available and you can</span>&#8216;<span>t ask it what to do</span> <span>&#8212;</span> <span>what are you going to do?</span> <span>Are you going to refit the whole context of your application into another model?</span> <span>Probably not.</span> <span>Flying blind is not something new.</span> <span>When you don</span>&#8216;<span>t have monitoring,</span> <span>or you don</span>&#8216;<span>t have Slack,</span> <span>or your team breaks during an outage,</span> <span>you have to find ways around it.</span> <strong>If you completely rely on AI for everything, that becomes your single point of failure</strong> <span>&#8212;</span> <span>and it</span>&#8216;<span>s a big one,</span> <span>in the case of an outage where you don</span>&#8216;<span>t have AI to help you,</span> <span>or AI fails and tells you,</span> <span>sorry,</span> <span>I don</span>&#8216;<span>t know.</span> <span>Then what?</span> <span>You tell your boss,</span> <span>I</span>&#8216;<span>m sorry,</span> <span>I don</span>&#8216;<span>t know,</span> <span>we</span>&#8216;<span>re going to stay down.</span> <span>Claude doesn</span>&#8216;<span>t know.</span></p><blockquote><p><span>If you completely rely on AI for everything,</span> <span>that becomes your single point of failure.</span></p></blockquote><p><strong>Nune:</strong> <span>Actually,</span> <span>when I started working on my current startup,</span> <span>OpsWorker,</span> <span>the original intention was that a lot of development would use AI,</span> <span>there would be a lot of code coming into production,</span> <span>and you</span>&#8216;<span>d have even more observability tools and dashboards,</span> <span>so the load on SRE would grow.</span> <span>So why not also use AI to gather all that information,</span> <span>present it to the person,</span> <span>and help them deal with the complexity?</span> <span>But I</span>&#8216;<span>m very worried that people will use tools to delegate thinking as well.</span> <span>Is there a version of the tool where this can be prevented?</span> <span>Or is that not even a function of a tool,</span> <span>but rather training people,</span> <span>asking them not to delegate thinking?</span></p><p><strong>Adrian:</strong> <span>There</span>&#8216;<span>s a version of tools that</span>&#8216;<span>s related to efficiency,</span> <span>and there</span>&#8216;<span>s a version of tools that can push back and enforce learning mechanisms</span> <span>&#8212;</span> <span>like struggle.</span> <span>I just published the Resilience Companion,</span> <span>open source today.</span> <span>It</span>&#8216;<span>s a companion I built to demonstrate how AI can actually help you learn.</span></p><p><strong>It&#8217;s so easy to delegate everything to AI, but then you don&#8217;t learn anything.</strong> <span>And again,</span> <span>going back to when something breaks</span> <span>&#8212;</span> <strong>if you haven&#8217;t learned anything, there&#8217;s very little you&#8217;re going to be useful for</strong><span>.</span> <span>So you want to keep learning,</span> <span>which means using AI in a way that challenges you,</span> <span>that</span> <strong>puts you in a mode where you struggle a little and have to go find the answer yourself</strong><span>.</span> <span>That helps you build mental models about the system,</span> <span>because you have to think about it.</span></p><p><span>That</span>&#8216;<span>s exactly how I built the companion.</span> <span>It asks you what you think the system does,</span> <span>and the more detail it gets,</span> <span>it</span>&#8216;<span>ll push back when you try to stay too high-level.</span> <span>Then it</span>&#8216;<span>ll go and verify when you</span>&#8216;<span>re really uncertain,</span> <span>and that gives you a very good indication of where you need to spend time,</span> <span>because</span> <strong>your mental model of how part of the system works and how it&#8217;s actually coded are so different</strong><span>.</span></p><p><span>It</span>&#8216;<span>s possible.</span> <span>But it</span>&#8216;<span>s not going to become a standard in the industry,</span> <span>because no one wants to spend more time doing things.</span> <strong>The industry &#8212; capitalists &#8212; love efficiency. They want to go as fast as possible.</strong> <span>It</span>&#8216;<span>s so tempting and so easy.</span> <strong>You offload cognitive struggle, and the brain loves that.</strong> <span>If you can make things easier,</span> <span>the brain says,</span> <span>hell yeah,</span> <span>jump in the wagon.</span> <span>You need people who are aware that they need to struggle to learn,</span> <span>and you need to tell them why it</span>&#8216;<span>s important.</span> <span>But I don</span>&#8216;<span>t see that coming naturally.</span></p><blockquote><p><span>You offload cognitive struggle,</span> <span>and the brain loves that.</span> <span>Make things easier and it says,</span> <span>hell yeah,</span> <span>jump in the wagon.</span></p></blockquote><p><strong>Nune:</strong> <span>To be honest,</span> <span>this is the first year in the industry that I</span>&#8216;<span>m feeling old.</span> <span>Every time I think I</span>&#8216;<span>ve delegated too much to AI and I need to slow down,</span> <span>I read an article or talk to a peer who says I need to delegate even more,</span> <span>because otherwise I</span>&#8216;<span>ll stay behind and the world will have gone ahead while I</span>&#8216;<span>m still here.</span> <span>It</span>&#8216;<span>s a permanent FOMO.</span> <span>I thought I was in FOMO,</span> <span>and then after 2021,</span> <span>2022,</span> <span>when all this started,</span> <span>it became ten times the FOMO.</span></p><h2><strong>Learning through crisis</strong></h2><p><strong>Nune:</strong> <span>So my question is</span>: <span>does it even make sense to advise somebody to slow down,</span> <span>or,</span> <span>as you said,</span> <span>is it not going to happen?</span> <span>And how do companies that now have this pressure</span> <span>&#8212;</span> <span>you must bring AI into the organization</span> <span>&#8212;</span> <span>do that in a way that doesn</span>&#8216;<span>t bite them later for being too fast into unknown territory?</span></p><p><strong>Adrian:</strong> <span>The answer is crisis.</span> <span>They</span>&#8216;<span>ll be faced with a reality that</span> <strong>they just don&#8217;t understand what they&#8217;ve deployed in production</strong><span>.</span> <span>And at that moment,</span> <span>you don</span>&#8216;<span>t have a choice.</span> <span>Either you face reality and look at what you</span>&#8216;<span>ve done and how your workflows have been</span> <span>&#8212;</span> <span>and if everything was over-delegated to AI,</span> <span>you can make two decisions</span>: <span>continue and keep getting into crisis situations,</span> <span>or slow down.</span></p><p><span>I already see customers in what I call</span> <strong>undeclared crisis</strong> <span>&#8212;</span> <span>they have similar incidents happening,</span> <span>AI is exacerbating that,</span> <span>and they</span>&#8216;<span>ve come to the realization that they need to change,</span> <span>that something needs to give.</span> <span>Often it</span>&#8216;<span>s spending time learning,</span> <span>and they</span>&#8216;<span>re making those decisions.</span> <span>The thing is,</span> <strong>it&#8217;s learning through crisis. It rarely comes without the crisis.</strong> <span>Crisis is a very good incentive to change,</span> <span>because you</span>&#8216;<span>re in that situation.</span> <span>But that</span>&#8216;<span>s not much different from anything else we do in life.</span> <span>We often learn through failure or crisis</span> <span>&#8212;</span> <strong>like touching the hot oven</strong><span>.</span></p><blockquote><p><span>It</span>&#8216;<span>s learning through crisis.</span> <span>It rarely comes without the crisis</span> <span>&#8212;</span> <span>like touching the hot oven.</span></p></blockquote><p><strong>Nune:</strong> <span>So you mean they</span>&#8216;<span>ll adopt AI so much that it will bring them to a new crisis and they</span>&#8216;<span>ll learn from it?</span> <span>Or that they need to learn already from the incident?</span></p><p><strong>Adrian:</strong> <span>They won</span>&#8216;<span>t have a choice.</span> <span>The more they adopt AI,</span> <span>the more they</span>&#8216;<span>ll be in</span> <strong>a crisis they can&#8217;t explain, can&#8217;t debug, can&#8217;t recover from</strong><span>.</span> <span>At some point,</span> <span>the outages are going to be so much longer,</span> <span>because they can</span>&#8216;<span>t understand the system.</span> <span>It wasn</span>&#8216;<span>t written by them</span> <span>&#8212;</span> <span>it was delegated to AI.</span> <strong>Thinking was delegated to AI.</strong> <span>The documentation is completely outdated.</span> <span>A human will have to go and understand it at that moment,</span> <span>under pressure,</span> <span>at 3am,</span> <span>and that takes time.</span></p><p><span>I</span>&#8216;<span>m already starting to see this with customers.</span> <strong>When you write the code, you intuitively know from the error what happened.</strong> <span>You receive the alert and you go,</span> <span>damn it</span> <span>&#8212;</span> <span>you intuitively think about what might have gone wrong,</span> <span>and you start investigating there.</span> <span>That</span>&#8216;<span>s intuition,</span> <span>and</span> <strong>it&#8217;s so important in incident response. If AI writes everything, you don&#8217;t have intuition anymore.</strong> <span>You receive an alert and you go,</span> <span>all right,</span> <span>let</span>&#8216;<span>s build the mental model of how the system works,</span> <span>let</span>&#8216;<span>s dig into the logs and the code and try to understand what happened.</span> <span>And it</span>&#8216;<span>s going to take a lot longer.</span></p><p><span>Your customers are going to scream at you.</span> <span>They</span>&#8216;<span>ll tolerate it a few times,</span> <span>and the third or fourth time they</span>&#8216;<span>re going to tell you,</span> <strong>either you change or we change provider</strong><span>.</span> <span>At that moment you</span>&#8216;<span>ll have to make some choices.</span> <span>Either use AI but figure out a way to spend time understanding what AI is writing,</span> <span>or there</span>&#8216;<span>ll be new disciplines</span> <span>&#8212;</span> <span>let AI write,</span> <span>but</span> <strong>do more game days to understand how your system is failing, and learn how to debug a system you never wrote</strong><span>.</span> <span>There</span>&#8216;<span>s a lot of that already today.</span> <span>It</span>&#8216;<span>s rare that you</span>&#8216;<span>ve written everything in a system you debug at 3am,</span> <span>but you have intuition because you built part of it.</span> <span>So maybe the only viable solution is to do a lot more chaos engineering,</span> <span>a lot more load tests and game days,</span> <span>so you can learn from that gap</span> <span>&#8212;</span> <span>because now the gap is even more present.</span> <span>Is that going to happen?</span> <span>I don</span>&#8216;<span>t know.</span> <span>Maybe a new discipline shows up.</span></p><blockquote><p><span>If AI writes everything,</span> <span>you don</span>&#8216;<span>t have intuition anymore.</span></p></blockquote><p><strong>Nune:</strong> <span>I</span>&#8216;<span>m sure there will be remixes of previous disciplines,</span> <span>now adapted for AI.</span> <span>And coming back to the open source you mentioned that you published today</span> <span>&#8212;</span> <span>if the tools themselves can help you build that intuition,</span> <span>that would be interesting</span>: <span>to extract the exact amount of information needed to build intuition without knowing every single detail.</span></p><p><span>If we try to root-cause it one last time and summarize</span>: <span>we talked about the gap between the imagined and the done,</span> <span>how AI widens it,</span> <span>how nobody wants to fall behind,</span> <span>how everyone is in FOMO.</span> <span>If you had to find the root causes of this gap,</span> <span>and of why engineering organizations are losing their cognitive capacity</span> <span>&#8212;</span> <span>is there something we missed?</span> <span>Or is the answer really,</span> <span>go full speed and learn from your mistakes?</span></p><p><strong>Adrian:</strong> <span>I wouldn</span>&#8216;<span>t say learn full speed.</span> <span>I</span>&#8216;<span>ll actually point people to your Substack</span> <span>&#8212;</span> <span>the article I read about your journey to delegating to AI was wonderful,</span> <span>because</span> <strong>you talked emotionally about what you were giving up. People need to read things like this.</strong> <span>We need to stop telling only the stories that give everybody FOMO</span> <span>&#8212;</span> <span>the 10x that just goes full speed and works.</span> <span>I want to see stuff in production that has been completely written by AI.</span> <span>I want to see an enterprise system with millions of customers,</span> <span>managed and run by AI without a problem</span> <span>&#8212;</span> <strong>and without having humans to delegate to at 3am</strong><span>.</span> <span>Then I</span>&#8216;<span>ll be convinced.</span> <span>At the moment,</span> <span>I</span>&#8216;<span>m not.</span> <span>It</span>&#8216;<span>s easy to write on Substack or LinkedIn that you</span>&#8216;<span>ve written an amazing tool with AI</span> <span>&#8212;</span> <span>great,</span> <span>that</span>&#8216;<span>s awesome.</span> <span>But</span> <strong>putting that into production, operationally production-ready, is a completely different beast</strong><span>.</span></p><blockquote><p><span>I want to see an enterprise system with millions of customers run by AI</span> <span>&#8212;</span> <span>with no human to call at 3am.</span> <span>Then I</span>&#8216;<span>ll be convinced.</span></p></blockquote><h2><strong>Code is the small part</strong></h2><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s the same when you build a prototype yourself.</span> <strong>The code works &#8212; awesome.</strong> <span>But now a million customers are going to start using that code,</span> <span>and it</span>&#8216;<span>s a completely different story,</span> <span>because you have to start thinking about everything around it</span>: <strong>the monitoring, the deployment, the operating, the alarms, the on-call rotation, the documentation, the onboarding. The code is such a small part.</strong></p><p><span>So maybe all these AI tools are going to start tackling everything around it.</span> <span>But as long as you only do the code and tell me it</span>&#8216;<span>s ready to go to production,</span> <span>I</span>&#8216;<span>m going to say,</span> <span>show me.</span> <span>Show me.</span> <span>Because I don</span>&#8216;<span>t yet believe it.</span> <span>I</span>&#8216;<span>ve spent a lot of time running systems in production,</span> <span>and the code is&#8212;</span></p><p><strong>Nune:</strong> <span>I always think back to</span> <span>&#8212;</span> <span>I think this is the Unix philosophy</span> <span>&#8212;</span> <span>make it work,</span> <span>make it nice,</span> <span>make it fast.</span> <span>The</span> &#8220;<span>make it work</span>&#8220; <span>part is something AI can help you with a lot.</span> <span>But then making it right</span> <span>&#8212;</span> <span>making it architecturally clean,</span> <span>expandable,</span> <span>maintainable,</span> <span>observable</span> <span>&#8212;</span> <span>that still requires human involvement,</span> <span>and not just one human,</span> <span>a team.</span> <span>And making it fast</span> <span>&#8212;</span> <span>all those game days and load tests,</span> <span>making sure it works smoothly for the number of users you expect.</span> <span>That</span>&#8216;<span>s something we still have to do.</span></p><p><strong>Adrian:</strong> <span>And that your customer found useful.</span> <strong>You can build as much code as you want with AI, but if your product isn&#8217;t what the customer wanted, no amount of AI is going to help.</strong> <span>It</span>&#8216;<span>s about talking to your customer.</span> <span>And often customers express something they want,</span> <span>but they want something slightly different</span> <span>&#8212;</span> <strong>they just didn&#8217;t have the words to express it</strong><span>.</span> <span>So a lot of the work as a software organization is trying to understand what the customer wants first,</span> <span>then providing answers,</span> <span>then figuring out which answer is better,</span> <span>then iterating and making compromises,</span> <span>because often you can</span>&#8216;<span>t serve everything.</span> <strong>All of that is human.</strong> <span>It</span>&#8216;<span>s a relationship with your customers,</span> <span>and it</span>&#8216;<span>s prompting your AI correctly.</span> <span>Your AI can be very,</span> <span>very correct,</span> <span>but wrongly correct.</span> <span>Confidently correct</span> <span>&#8212;</span> <strong>confidently wrong</strong> <span>is a much better way to say it.</span></p><p><strong>Nune:</strong> <span>Yeah,</span> <span>very confidently wrong.</span></p><blockquote><p><span>Your AI can be very,</span> <span>very correct</span> <span>&#8212;</span> <span>but wrongly correct.</span> <span>Confidently wrong.</span></p></blockquote><h2><strong>What to read</strong></h2><p><strong>Nune:</strong> <span>Do you have any practical recommendations?</span> <span>You recommended my blog post</span> <span>&#8212;</span> <span>thank you for that.</span> <span>And there</span>&#8216;<span>s your book.</span> <span>Any other books or resources on how to implement technologies within an organization the right way,</span> <span>be mindful of these gaps,</span> <span>and resilience in general?</span></p><p><strong>Adrian:</strong> <span>The whole resilience engineering field is interesting</span> <span>&#8212;</span> <span>you</span>&#8216;<span>ll learn a lot.</span> <span>I think</span> <strong>cognitive science is super important</strong><span>;</span> <span>I</span>&#8216;<span>m fascinated with psychology,</span> <span>because it has a lot of impact.</span> <span>I wouldn</span>&#8216;<span>t necessarily recommend one book.</span> <span>I think it</span>&#8216;<span>s better to</span> <strong>go explore other disciplines, other industries, other sciences</strong><span>,</span> <span>because you find a lot of good in there,</span> <span>especially around human behavior.</span> <span>It</span>&#8216;<span>s so fascinating,</span> <span>because it</span>&#8216;<span>s at the center of everything we do</span> <span>&#8212;</span> <span>even though AI is going to be pushing us to write code fast,</span> <span>at the end</span> <strong>we&#8217;re still in the business of human relations with our customers</strong><span>.</span></p><p><span>No amount of AI is going to fix that.</span> <span>Actually,</span> <span>it can make it worse.</span> <span>I hear a lot of comments from customers who can</span>&#8216;<span>t get a human contact when there</span>&#8216;<span>s an outage</span> <span>&#8212;</span> <strong>it&#8217;s a Google form, or it&#8217;s an AI chat, and it frustrates them insanely</strong> <span>when there</span>&#8216;<span>s a problem.</span> <span>Humans are going to have to find their place there as well.</span></p><p><span>So I</span>&#8216;<span>d say the Bible is</span> <em><strong>How Complex Systems Fail</strong></em><strong> by Richard Cook</strong> <span>&#8212;</span> <span>probably amazing stuff.</span> <strong>John Allspaw</strong> <span>wrote a lot of cool stuff around incident response.</span> <strong>Hollnagel</strong> <span>is about safety-one and safety-two.</span> <span>Read a bit of all of that,</span> <span>and be curious about other areas.</span> <span>I think that</span>&#8216;<span>s a good thing.</span></p><blockquote><p><span>In the end,</span> <span>we</span>&#8216;<span>re still in the business of human relations with our customers.</span> <span>No amount of AI is going to fix that.</span></p></blockquote><h2><strong>On fear and staying relevant</strong></h2><p><strong>Nune:</strong> <span>We have this thing</span> <span>&#8212;</span> <span>which is also a bit of a problem for building podcast episodes,</span> <span>because now I have to produce them strictly in the order I create them</span> <span>&#8212;</span> <span>where every guest leaves a question for the next guest.</span> <span>The previous guest,</span> <span>Marc Babin,</span> <span>left a question that I think should be difficult for you,</span> <span>because you already share a lot of what you</span>&#8216;<span>re learning.</span> <span>But maybe you can answer</span>: <span>is there something you</span>&#8216;<span>ve learned this week that you haven</span>&#8216;<span>t shared yet?</span></p><p><strong>Adrian:</strong> <span>I</span>&#8216;<span>m still scared a lot</span> <span>&#8212;</span> <span>about opening up.</span> <span>I open-sourced the companion today,</span> <span>and</span> <strong>it&#8217;s very scary to expose yourself</strong><span>.</span> <span>And it was written with Claude,</span> <span>whereas all my other repos were written entirely by me without AI.</span> <span>So I</span>&#8216;<span>m jumping into open-sourcing something I worked on with Claude,</span> <span>and I have to say it took me quite some time to feel comfortable with that.</span> <span>So I</span>&#8216;<span>d say</span> <strong>I learned that I&#8217;m still scared about exposing things to the world. After 20 years.</strong></p><blockquote><p><span>I learned that I</span>&#8216;<span>m still scared about exposing things to the world</span> <span>&#8212;</span> <span>after 20 years.</span></p></blockquote><p><strong>Nune:</strong> <span>Even after 20-something years in IT,</span> <span>you can still be scared of posting something online.</span></p><p><strong>Adrian:</strong> <span>And it</span>&#8216;<span>s tough,</span> <span>because you expose yourself to the world.</span> <span>Being on a podcast,</span> <span>sharing ideas,</span> <span>writing a book</span> <span>&#8212;</span> <span>it</span>&#8216;<span>s scary.</span> <span>Kudos to you,</span> <span>starting your own podcast.</span> <span>That</span>&#8216;<span>s something as well.</span></p><p><strong>Nune:</strong> <span>I</span>&#8216;<span>m horribly scared as well.</span> <span>One of the things is that the more you</span>&#8216;<span>re able to analyze any question</span> <span>&#8212;</span> <span>and I wrote about this lately</span> <span>&#8212;</span> <span>the more you</span>&#8216;<span>re able to see both the positive and the negative sides.</span> <span>I can critique myself endlessly.</span> <span>So whenever you put something out there,</span> <span>you</span>&#8216;<span>re cutting that critique out and leaving only the positive thinking</span>: <span>my opinion matters,</span> <span>my open source matters,</span> <span>my product matters.</span> <span>And subconsciously,</span> <span>I think,</span> <span>we</span>&#8216;<span>re afraid of all the critique that can come</span> <span>&#8212;</span> <span>which we already know is coming,</span> <span>because there</span>&#8216;<span>s no perfect system.</span></p><p><strong>Adrian:</strong> <span>So why did you do it then?</span></p><p><strong>Nune:</strong> <span>That</span>&#8216;<span>s a good question.</span> <span>As I mentioned with Marc,</span> <span>there should be content out there that isn</span>&#8216;<span>t</span> &#8220;<span>10x improvement in four days,</span> <span>do this and that.</span>&#8220; <span>I wasn</span>&#8216;<span>t seeing that content,</span> <span>and I thought,</span> <span>as I think any person who writes a book says</span> <span>&#8212;</span> <span>I searched for this,</span> <span>didn</span>&#8216;<span>t find it,</span> <span>so I wrote it.</span> <span>That</span>&#8216;<span>s one reason.</span> <span>And another reason is,</span> <span>selfishly,</span> <span>to get better at expressing myself,</span> <span>better at asking and answering questions in a way people understand,</span> <span>so I can bring out more awesome ideas and have people understand them.</span></p><p><strong>Adrian:</strong> <span>On your first point,</span> <span>this is why I liked your post.</span> <span>It was just so different from the rest.</span> <span>It was honest.</span> <span>You shared emotion,</span> <span>your struggles</span> <span>&#8212;</span> <span>and that works.</span> <span>It spoke to me,</span> <span>because you wrote about delegation,</span> <span>about slowly giving it away at each step of the way.</span> <span>I haven</span>&#8216;<span>t managed to go all the way yet</span> <span>&#8212;</span> <span>the last steps in your post,</span> <span>with open Claude and doing the thing there.</span> <span>I</span>&#8216;<span>m old school,</span> <span>I still run locally,</span> <span>very controlled,</span> <span>human in the loop.</span> <span>And it made me think</span>: <span>if I don</span>&#8216;<span>t evolve the same way you have,</span> <span>I got worried.</span> <span>Am I going to not be relevant in a few years?</span> <span>That was a moment of reflection I had.</span></p><p><strong>Nune:</strong> <span>I hope not.</span> <span>I don</span>&#8216;<span>t think so.</span> <span>I think</span> <strong>the industry is going to hit the wall and realize you can&#8217;t keep delegating more and more of the thinking</strong><span>.</span> <span>And</span> <strong>people who have built something themselves will always stay relevant, because of how much intuition they have</strong><span>.</span> <span>Even if it</span>&#8216;<span>s not a system you built,</span> <span>you</span>&#8216;<span>ve seen ten other systems similar to it,</span> <span>so you do have the intuition.</span> <span>So I</span>&#8216;<span>m hoping not.</span></p><p><strong>Adrian:</strong> <span>Maybe the relevance is more that I don</span>&#8216;<span>t understand the development workflows anymore</span> <span>&#8212;</span> <span>multiple agents,</span> <span>the whole mental model of the relationship between the human and the act of shipping product.</span> <span>That</span>&#8216;<span>s what your post made me question</span>: <span>my relationship with building product,</span> <span>and whether I</span>&#8216;<span>ll be able to advise my customers in five years if I don</span>&#8216;<span>t adopt that,</span> <span>because the problems are going to be different.</span> <span>If I</span>&#8216;<span>m not there</span> <span>&#8212;</span> <span>younger engineers are already there.</span> <span>It</span>&#8216;<span>s natural for them,</span> <span>and I</span>&#8216;<span>m not;</span> <span>I</span>&#8216;<span>ve resisted to some extent.</span> <span>So that</span>&#8216;<span>s what I meant</span>: <span>am I going to be able to understand that?</span></p><p><strong>Nune:</strong> <span>Only time will tell.</span> <span>I also read the joke that we</span>&#8216;<span>re the generation that didn</span>&#8216;<span>t want to accept cookies,</span> <span>but we accept giving our code and ideas to AI.</span> <span>So that</span>&#8216;<span>s kind of contradictory.</span> <span>I don</span>&#8216;<span>t think anybody knows if tomorrow everybody will say this was all a mistake,</span> <span>or if we</span>&#8216;<span>ll continue and build more and more agentic systems</span> <span>&#8212;</span> <span>supporting agentic systems,</span> <span>fixing other agentic systems.</span> <span>I</span>&#8216;<span>m excited to see.</span></p><p><strong>Adrian:</strong> <span>It</span>&#8216;<span>s extremely tiring as well,</span> <span>because it</span>&#8216;<span>s a completely new space,</span> <span>and it</span>&#8216;<span>s exhausting.</span></p><p><strong>Nune:</strong> <span>Of course.</span> <span>Finally we thought we</span>&#8216;<span>d understand everything</span> <span>&#8212;</span> <span>we</span>&#8216;<span>re in our 30s and 40s,</span> <span>and we can just enjoy the years.</span></p><p><strong>Adrian:</strong> <strong>The biggest revolution in software happened at 46</strong><span>,</span> <span>when I thought,</span> <span>after 25 years&#8212;</span> <span>actually,</span> <span>I</span>&#8216;<span>ve never thought about it like this,</span> <span>but I think you</span>&#8216;<span>ve got it so right.</span> <span>That</span>&#8216;<span>s why it</span>&#8216;<span>s exhausting.</span> <strong>Finally I thought I had it right, and then boom &#8212; in a couple of months I have to relearn.</strong> <span>You</span>&#8216;<span>ve identified the problem.</span> <span>Thank you.</span></p><p><strong>Nune:</strong> <span>Well,</span> <span>it keeps us on our toes.</span> <span>The root cause.</span></p><p><strong>Adrian:</strong> <span>That</span>&#8216;<span>s the root cause.</span></p><blockquote><p><span>The biggest revolution in software happened at 46</span> <span>&#8212;</span> <span>just when I thought I finally had it right.</span></p></blockquote><p><strong>Nune:</strong> <span>Do you have a question for our next guest?</span></p><p><strong>Adrian:</strong> <span>What surprised you the most in the discipline you were most comfortable with?</span></p><p><strong>Nune:</strong> <span>That</span>&#8216;<span>s generic enough that anyone who</span>&#8216;<span>s good at something can answer what surprised them in the thing they</span>&#8216;<span>re good at.</span> <span>Thanks for that.</span></p><div><hr></div><p><span>Adrian's book - "Why We Still Suck at Resilience" is available with discount under </span><a href="https://www.youtube.com/redirect?event=comments&amp;redir_token=QUFFLUhqbWZzZGlvdGx3UmRDOUtFUElRX2JFakZRdlFSUXxBQ3Jtc0tub2lEWjNnZ2J3QVZrQ2FObElNbTBKRVIyb2FJdV9MclhHdk42T1lzanlZZUs0RWh6VmtsaVd3TkI5ekctc2xTdV9mWklLemhFOWJiSmJsaFZPWXBNMWhUQ2NyWVhBT3JPVWpaVU15dWpzTXllRkljZw&amp;q=https%3A%2F%2Fleanpub.com%2Fwhywestillsuckatresilience%2Fc%2Frootcausebynune"><span>https://leanpub.com/whywestillsuckatresilience/c/rootcausebynune</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Root Cause: Why the Experts Stay Silent]]></title><description><![CDATA[Guest: Marc Babin &#8212; Hospitality marketer turned creative director turned podcast builder]]></description><link>https://www.thoughtfultechnologist.com/p/the-root-cause-why-the-experts-stay</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/the-root-cause-why-the-experts-stay</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sun, 14 Jun 2026 13:30:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/hCR5wvn5VRA" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>This is a text version of the following podcast episode</strong></em></p><p><em><strong>for those who prefer reading :)</strong></em></p><div id="youtube2-hCR5wvn5VRA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;hCR5wvn5VRA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/hCR5wvn5VRA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Marc Babin spent four years making 106 videos for Westin and Marriott in the Cayman Islands with zero video experience, then six years at AnyLine building an entire content infrastructure from scratch &#8212; a dozen podcasts across industry verticals, over a hundred episodes, and a bronze at the Transformer Awards Europe. This year he launched The Podcast Blueprint. He&#8217;s also the person Nune works with on her own brand, so this is no cold interview: it&#8217;s a conversation with someone who has watched her perfectionism, her frustration with the algorithm, and her discomfort with being visible online up close &#8212; all while she hits record on her show for the very first time.</p><div><hr></div><h2><strong>Has the volume killed content?</strong></h2><p><strong>Marc Babin:</strong> Thank you for having me. It&#8217;s a great pleasure and an honor to be the first guest on what will be a large show. But first I want to say congratulations on taking this step &#8212; not only into the podcasting world, after everything we&#8217;ve spoken about to get here, but for taking all the little steps too: rearranging the room, getting the equipment, committing to it. All of that contributed to where we are today, hitting record for the first time. That&#8217;s a monumental moment, and one I want you to sit with. You hit record for the first time on your show. That&#8217;s epic, and a massive congratulations to you.</p><p><strong>Nune:</strong> Thanks for being on this road. You&#8217;ve been a tremendous help, both technically and mentally. What I wanted to talk to you about first is the sheer volume of content nowadays. Even before AI, content was everywhere &#8212; and now with AI it&#8217;s faster and louder. Your entire career is around content, marketing, video, podcasts. Do you think content making is still a valid path to marketing, or even to self-expression &#8212; or has the sheer volume just destroyed it?</p><p><strong>Marc Babin:</strong> Absolutely, yes, to the first part of that question. The volume hasn&#8217;t killed it, and let me explain why. Most of what&#8217;s flooding the internet right now is noise &#8212; you know this, everyone knows this, it&#8217;s just noise. My own estimate, and this doesn&#8217;t come from anywhere, it&#8217;s purely from experience: I&#8217;d say 70% of it has zero real marketing value. It&#8217;s a lot of noise for doom scrollers.</p><p>But that&#8217;s actually good news. I genuinely think it&#8217;s good news, because it means the bar for standing out, for breaking through that noise, is completely achievable. I know this because I&#8217;ve done it multiple times, in multiple formats, in multiple industries. It does work if you can break out of the noise cycle.</p><p>Good, authentic, powerful content still cuts through. I&#8217;ve watched it happen firsthand, building podcasts and building videos. B2B, B2C &#8212; it doesn&#8217;t matter. Good authentic content will still cut through, and the opportunity to do that is very real and very achievable for most people. People get afraid that they&#8217;re just going to fall into the noise and be unheard like everyone else.</p><p>The mistake marketers make is treating content like a calendar-filling exercise &#8212; they check it off the daily task list: &#8220;I&#8217;ve got to make posts for Monday.&#8221; I fall into this too; everyone does. It becomes this downbeat, cloudy &#8220;I&#8217;ve got to get this done, I&#8217;ve got to make content for the week.&#8221; That&#8217;s the mistake, and I have to remind myself constantly not to think of it like that. The people who produce content and actually care about what they&#8217;re making &#8212; social managers who care about what&#8217;s being published &#8212; those are the ones who succeed. In my last role I worked with an incredible social manager who genuinely cared about what went out and fought to make sure the content was genuine. That makes a real difference. It makes you stand out from the noise. It&#8217;s tangible &#8212; we see it in the results all the time.</p><p><strong>Nune:</strong> Two things. I feel it in myself whenever I force myself onto a schedule &#8212; and the algorithm pushes you toward that, because the more consistent you are, the better, as everyone says. But the moment it becomes scheduled, it becomes a job, you start hating it, and you start squeezing the content out of yourself. You want to speak when you have something to say, not force it. On the reality side: do you think AI-generated content will always be visible &#8212; meaning people will tell you apart from the AI &#8212; or will it become indistinguishable at some point?</p><p><strong>Marc Babin:</strong> I think it will always be distinguishable. You just need to be more aware. We see this in the real world all the time now: an image or a video gets posted, and the comment section is always &#8220;please tell me this is real,&#8221; &#8220;please tell me this is fake,&#8221; &#8220;this is obviously AI.&#8221; As AI improves, that&#8217;s going to get harder and harder to distinguish just by looking at it. So those 15-second clips, the noise &#8212; that&#8217;ll always be a bit more difficult to tell apart, because the piece is so short.</p><p>But when we talk about content that matters, content that has purpose, that will always be easier to tell what&#8217;s real and what&#8217;s not. You&#8217;re never going to see a fully AI-generated podcast that you&#8217;ll know is fake. It&#8217;s going to read as real, just based on how people talk and the tone of voice. The imperfection is the real truth. It&#8217;s the humanity. People relate to imperfection, and in a world where everything we see is AI-perfect, that imperfection &#8212; that real human authenticity &#8212; is what stands out. I hope it&#8217;ll never be replicated; maybe that&#8217;s a future conversation. But the pauses I take, the &#8220;ums,&#8221; the &#8220;ahs,&#8221; all of it tells the listener I&#8217;m a real person.</p><p>I was told once &#8212; and you probably know this better than I do &#8212; about those checkboxes on websites and forms: &#8220;check the box if you&#8217;re not a robot.&#8221; The whole concept, and this has always stuck with me, is that they were designed to detect imperfection, the imperfect way a human checks a box. This is going to change the way everyone listening sees these boxes from now on. If that box shows up on a window and it&#8217;s a spam bot, an AI bot, a robot, it will just straight-line for that check and click.</p><p>A human will never just straight-line. There&#8217;s imperfection in the way we move, the way we think about it, the timing it takes. That imperfection is exactly what lets us pass the checkbox quiz. It&#8217;s not about checking the box &#8212; a robot can check the box &#8212; it&#8217;s the imperfection in the process. It&#8217;s the same with content. AI is not a straight line, but it&#8217;s a prompt and a response; the prompts may evolve and the responses may evolve, but it&#8217;s still a straight line. Humans don&#8217;t think that way. We reason, we question, we pause, we make mistakes.</p><p>I used to say &#8220;content is king.&#8221; Everyone was saying it, I said it, I believed it, I drank the juice. But it&#8217;s not true anymore. Content is not king. Good content is king. Good, authentic content is king &#8212; and it&#8217;s important that content creators know the difference.</p><h2><strong>Why podcasting still works</strong></h2><p><strong>Nune:</strong> True &#8212; there&#8217;s so much sci-fi that&#8217;s made the same point: imperfection is what makes you human. You mentioned 15-second clips. They call this the reel-thinking generation, with shrinking attention spans &#8212; you just swipe next, swipe next. And yet here we are, sitting and talking, and this will run at least 30 or 40 minutes. Who has time to listen to two people talk about anything these days? Given that, do you think podcasting is still a valid path for marketing?</p><p><strong>Marc Babin:</strong> It&#8217;s a good question, but here&#8217;s what I find fascinating: our perception versus what the actual data tells us. This is where data-driven insights overshadow what we assume. The data pushes back on the premise. Podcast listening has gone up, not down &#8212; even as short form has exploded. Short form exploded and the attention span on those short clips is swipe, swipe, swipe, swipe; each one is a different piece of content. I&#8217;ll come back to that. But the stats don&#8217;t lie. I have one pulled up here &#8212; a US-based report. It showed that podcast listeners in the US rack up 773 million hours of listening per week. That&#8217;s a 350% jump since 2015.</p><p>So something else is going on. This isn&#8217;t just about attention spans. What people are really starved for isn&#8217;t short content, it&#8217;s content that respects their intelligence. A 15-second reel can entertain you for 15 seconds, ten seconds, five seconds &#8212; but then you&#8217;re onto the next one. You&#8217;re not gaining anything from it. It can&#8217;t change how you think about something, and it can&#8217;t build real trust with an audience. All those scrolls you do &#8212; do you even know any of those followers? A lot are bought accounts, fake accounts, just chasing likes to make a paycheck. You can&#8217;t build value there.</p><p>Podcasters do things differently, and that&#8217;s why it works and why it&#8217;s still growing. Here&#8217;s the other piece of the puzzle: context matters. When someone puts in their earbuds and heads out for a drive to work, or does a workout while listening to a podcast, they&#8217;re not doom scrolling. They&#8217;re in a completely different headspace. They chose to do that. They chose to listen to that show. That&#8217;s an incredibly valuable piece of marketing, and it&#8217;s still very much untouched.</p><p>So it&#8217;s important to see the distinction between short form and long form. They&#8217;re not competing. They live in two different worlds. Yes, they&#8217;re on the same device; yes, it&#8217;s all content &#8212; but they&#8217;re not competing. They serve completely different jobs. The mistake is assuming attention spans have shrunk across the board. What&#8217;s actually happening is that people have become more selective about how they spend their time. They&#8217;ll give you 15 seconds of low commitment in bed or on the sofa while watching a Netflix show &#8212; but they&#8217;ll also give you an hour if you&#8217;ve earned it. That&#8217;s why I literally dropped everything I had going on career-wise to build the business I have now and share my passion for this format. Podcasting is about earning that time, and it&#8217;s very much under-tapped.</p><blockquote><p>They&#8217;ll give you 15 seconds of low commitment on the sofa &#8212; but they&#8217;ll also give you an hour if you&#8217;ve earned it.</p></blockquote><p><strong>Nune:</strong> That&#8217;s exactly why I decided to start Root Cause &#8212; I want real content, real conversations. So much content isn&#8217;t real, and even when it&#8217;s not AI-generated, it still isn&#8217;t real. You start thinking, why don&#8217;t I create the content I can&#8217;t find? So I agree. One thing I was curious about: in your previous role at AnyLine you made podcasts about topics that aren&#8217;t exactly sexy or entertaining &#8212; automotive, tire tech, retail, logistics. You and I even did an episode on power and utilities. How do you make that kind of content interesting? Or do you not have to, because it&#8217;s about choosing the audience and context again?</p><p><strong>Marc Babin:</strong> 100% correct &#8212; you just answered the question for me. It&#8217;s not interesting to a lot of people, but it&#8217;s interesting to a few, and those few are exactly who we were speaking to. And I made mistakes along the way. The reason we started podcasting at AnyLine was COVID: we lost the ability to reach people the way we would at events, to have those natural, raw conversations. So we did the webinar cycle &#8212; everyone did the webinar cycle. It fizzled out. Once everyone started doing it, it became everyone competing for the same space, one big sales conversation, people getting pushier and pushier. Webinars had their moment, but the raw conversations, the genuine connection points, were lost. That&#8217;s why we started podcasting.</p><p>We did a generic show at first, because I didn&#8217;t know much about it &#8212; I dive first and look later. But I learned we had to be more specific about our targets. So we made different shows for different industries: automotive, retail, logistics, technology, AI. There was one more I can&#8217;t remember. We built shows to speak to the few, not the quantity &#8212; targeting quality. By targeting the quality of the people listening, we could have much more in-depth conversations, because we knew the people listening were genuinely interested.</p><p>You&#8217;re right, they were boring topics &#8212; absolutely boring. Talking about tire technology, or the latest AI robot for the logistics field, isn&#8217;t interesting to 99% of people. But we were never targeting the 99%. We were targeting the 1% who might get something out of it, then reach out and have a conversation with us. It was that super-niche focus that built the dedicated audiences we had on those channels, and they grew. You think you&#8217;re talking to a niche group, but there are so many people in the world that even a niche group is still large enough to build an audience from.</p><p>We grew to the point where people were asking to come on the show because they&#8217;d heard us. That&#8217;s how you know you&#8217;ve more or less made it a success &#8212; when people want to be on your platform. That&#8217;s how we made it interesting: we forgot about everyone else and focused on who we wanted to speak to. This wasn&#8217;t a one-on-one conversation, it was a five-on-one conversation &#8212; an elevated discussion with experts about expert topics. That filtered who listened, and that made it a better audience for us.</p><p><strong>Nune:</strong> Niche down, as they say &#8212; and you still find yourself with a lot of people in that niche.</p><p><strong>Marc Babin:</strong> Absolutely. People forget there are a lot of people out there. Everyone&#8217;s obsessed with fame and popularity &#8212; &#8220;I want millions of this, millions of that.&#8221; Just start chipping away. The numbers will come. Our automotive show, our biggest show, was probably around 3 million views by the time I left the company &#8212; and it was revenue-generating. It was successful, despite being super-niche topics. We chipped away at it episode by episode, year by year. You have to play the long game with this stuff.</p><h2><strong>Sales, marketing, and the long game</strong></h2><p><strong>Nune:</strong> I&#8217;m honestly just out seeking my people, and hopefully that makes it a success. You mentioned sales briefly, and I&#8217;m going to be intentionally naive here. You once told me, &#8220;I&#8217;m not good at sales, I&#8217;m a marketing guy.&#8221; In my head I thought, isn&#8217;t that kind of the same? For tech people, everyone who isn&#8217;t in tech &#8212; sales, marketing, PR &#8212; those are the people who talk with people, versus people who talk with computers. I ask because a lot of tech people don&#8217;t want to be selling themselves, and marketing feels like going out and saying &#8220;look how cool I am.&#8221; It always feels a bit weird, especially for people with imposter syndrome &#8212; and a lot of tech professionals have that. So what do you tell them? How do they get out of that feeling, and what&#8217;s the difference?</p><p><strong>Marc Babin:</strong> Honestly, you&#8217;re not completely wrong. People get precious about the distinction, and often the ones who insist on it aren&#8217;t very good at either. Here&#8217;s how I actually think about it. Sales is a conversation with one person at a time. You&#8217;re trying to move that one person to a decision &#8212; usually on their timeline, or their budget, or to push a product. But it&#8217;s one person.</p><p>Marketing is the same conversation, but at scale, and before they&#8217;re even ready to buy &#8212; way above the funnel, early in the pipeline. You&#8217;re not closing anyone. Your goal is not to close anyone on a decision or move their timeline. Your goal is to make sure that when the moment comes, they already trust you. That&#8217;s the brilliance of marketing, the real distinction: it&#8217;s a trust-building exercise, and the people who get that make the sales process much easier down the line.</p><p>Podcasting is one of the best examples I&#8217;ve seen of this. Think about what happens when someone has listened to your show for four, six, eight months. They feel like they know you. They trust your thinking, your process, how you deliver. They&#8217;ve heard how you handle hard questions. Your authenticity spills through. That&#8217;s not selling. But by the time that person enters your sales process &#8212; if they enter it &#8212; half the work&#8217;s already done. They know you. You don&#8217;t have to do that part for anything you want to sell them. They&#8217;re going to listen, and that&#8217;s the hard part done.</p><p>So yes, marketing is about moving people, but the best marketing feels like that &#8212; and that&#8217;s why I love it. To come back to that quote of mine, the more accurate phrase is: I&#8217;m not good at closing. I&#8217;m good at storytelling, I&#8217;m good at relationship building. It&#8217;s not that I don&#8217;t enjoy sales; I don&#8217;t enjoy the closing process. That&#8217;s why I call myself a marketer. I&#8217;m a storyteller, and I help move the needle to make it easier for the sales team down the line. Marketing is very much a long game. I&#8217;ll touch on this more later with one of your questions, but the work I do today doesn&#8217;t affect tomorrow. Recording this episode now isn&#8217;t going to change your world tomorrow &#8212; but it&#8217;ll change things in three to six months. Not doing it now means that three-to-six-months from now looks different too, but your tomorrow stays the same.</p><p><strong>Nune:</strong> When I started putting myself more online, here&#8217;s what I was thinking. When I join any project and start working with the people on it, first impressions are usually that people are a bit skeptical, and you have to earn their trust over the course of the project. Every meeting you&#8217;re not late to and you&#8217;re prepared for, every task you promise and deliver &#8212; that builds trust. You don&#8217;t notice it, but months later they say, &#8220;it&#8217;s so nice to work with Nune, Nune is great.&#8221; And every project you repeat those months of trust-building. So I thought: I need to externalize that. Put it out once, so when people Google me and watch my videos, those months of trust-building get shortened &#8212; at least a bit &#8212; because I say what I think and speak the way I normally speak, and that already shows a genuine side of me and cuts the onboarding shorter. That was the intention.</p><p><strong>Marc Babin:</strong> It&#8217;s not even just shortening the onboarding. You&#8217;re talking about a relationship with a person in a professional setting, and that&#8217;s hard to build when you walk into a room cold. Take a sales call: if you&#8217;ve never met that person, you&#8217;re not only trying to push a product they may or may not need, you&#8217;re also trying to build a relationship in that short window. That&#8217;s a lot to accomplish at once, and that&#8217;s why good salespeople are good at what they do &#8212; I respect them 100% &#8212; because they&#8217;re establishing the relationship, showing as much authenticity as they can (whether it&#8217;s genuine or falsified is a separate conversation), and then giving them something.</p><p>Think of a car dealership. The good salespeople aren&#8217;t the ones who say &#8220;which car do you want? Come take a drive&#8221; &#8212; those are the aggressive ones. The ones who ask &#8220;what are you after? I have a family too, I love that&#8221; &#8212; they establish relatability. Those are the ones who succeed. It&#8217;s the same with what you described: if you&#8217;ve built a relationship with someone over time and you finally meet them, you can skip right to the technical talk. So I&#8217;m a big fan of the long game when it comes to awareness-based and content-based marketing, because it builds trust between a brand and a person, or a person and a person. You&#8217;re going to do this show, you&#8217;re going to speak to a lot of people. When you approach someone in the future and say &#8220;I want to talk about this business opportunity,&#8221; it&#8217;s going to be a lot easier because they&#8217;ve listened to you, they know you, they understand you. Maybe they know someone you&#8217;ve spoken to, so your credibility checks out. People undervalue what that can bring &#8212; &#8220;it&#8217;s too much work, it&#8217;s a long game, it&#8217;s six months from now&#8221; &#8212; but it matters.</p><h2><strong>B2B, B2C, and the case for personal visibility</strong></h2><p><strong>Nune:</strong> You&#8217;ve worked in corporate brand strategy for years, and you said B2B and B2C don&#8217;t matter. Do you really think they&#8217;re the same? Now you&#8217;ve got The Podcast Blueprint, and you&#8217;ll be helping both companies and individuals. Do you approach those differently, or is it all the same? And why do you think it&#8217;s important, in this day and age, for a single person to work on their own social presence and marketing &#8212; or is it enough to go along with their company and not express their own personal brand?</p><p><strong>Marc Babin:</strong> It&#8217;s easier said than done. On the B2B versus B2C part: I&#8217;ve built a process, and I&#8217;ve been refining it, that&#8217;s universal. As long as the process is followed, only the messaging changes. You don&#8217;t change the process &#8212; you stick to the fundamentals of building a good show and good content; it&#8217;s the messaging that changes. Having worked in both worlds, if I went back to start over in hospitality, I&#8217;d approach it with this process and it would lead to successful content. That doesn&#8217;t change.</p><p>On visibility: you&#8217;ve got people, like yourself, who are experts at what they do &#8212; but you&#8217;ve been busy. And then you fall into this spin cycle of &#8220;too busy to post, no one&#8217;s going to watch it anyway, what&#8217;s the point?&#8221; A lot of people feel exactly that way, and I completely agree it&#8217;s real. It comes right back to what we were talking about with noise: the loudest voices online are often the ones with the most time to be loud, not the most experience to share. The people aggressively posting on social media all the time, doing all the comments &#8212; they have time to do that. That&#8217;s your first red flag.</p><p>For the people on the flip side &#8212; experts and professionals who want to build a brand but are afraid of falling into the noise &#8212; there are tools. AI is starting to lower the barrier, which is genuinely exciting, but it&#8217;s also a trap. If a 15-year veteran starts auto-generating LinkedIn posts that sound like everyone else, with the same emoji dots and the same &#8220;if I didn&#8217;t do this, I would do that&#8221; &#8212; we&#8217;ve all seen it &#8212; they&#8217;ve just joined the noise. They haven&#8217;t cut through it, and they&#8217;re going to lose their credibility. And that credibility is the whole asset. You can&#8217;t outsource a point of view. That&#8217;s really important to know.</p><p>So, on personal branding: why does it matter right now? Because trust is the scariest thing to achieve, but it&#8217;s also the scarcest thing on the market right now. Authenticity and trust are the hardest things to find, because while anyone can produce content, not anyone can produce content that makes you think, &#8220;this person actually knows what they&#8217;re talking about.&#8221; That little gap, that little sliver, is the opportunity. You know a lot about what you do, and you don&#8217;t want to fall into the hole where it becomes noise.</p><p>For people who are too busy building to be performing &#8212; like you&#8217;ve been for years, like many executives &#8212; there&#8217;s no better way than podcasting and short videos that show the most natural form of yourself in the most natural format. You&#8217;re not just writing a post like everyone can do. You&#8217;re not crafting a caption with AI. You&#8217;re just talking about what you know, the way you&#8217;d talk about it with a colleague. That&#8217;s where the real expertise comes out, and an audience will feel the difference immediately. That&#8217;s why they&#8217;ll make the decision to tune in and watch.</p><blockquote><p>You can&#8217;t outsource a point of view. The loudest voices online are often the ones with the most time to be loud, not the most experience to share.</p></blockquote><p><strong>Nune:</strong> This is exactly what I want to encourage busy builders to do. As a community of IT people who&#8217;ve been around long enough to see what&#8217;s hype and what&#8217;s real, this is what we need &#8212; experienced people who are building things to talk, and to find a little time to set up the infrastructure around their content. It takes some time, but once you set it up and find your groove, it&#8217;s similar to setting up your tech environment. Every developer knows you need your environment comfortable, from the notebook to the software on it; you need everything at hand. Once you have it, you&#8217;re crazy productive. I think it&#8217;s the same here &#8212; once you set everything up, you can just do it while you build.</p><p><strong>Marc Babin:</strong> That&#8217;s it. Talk to me about the excitement you got from setting it up. We had those conversations &#8212; getting the equipment, seeing the quality, setting up your space. It re-motivates you. It&#8217;s like, &#8220;this is actually really cool.&#8221;</p><p><strong>Nune:</strong> Definitely. A lot of techies are into equipment of any kind, and that&#8217;s a trap. On one side you want to set it up and be done with it; on the other, once you get a good mic you&#8217;re all about the sound, and once you get a good camera you&#8217;re all about setting it up perfectly and making videos and having fun with it. So the process of setting it up fuels the making of the content. I can relate to that.</p><p><strong>Marc Babin:</strong> It helps motivate you through the build process. And then the next level of anxiety kicks in: &#8220;well, now I actually have to use it.&#8221; But if you&#8217;ve built it, they will come.</p><p><strong>Nune:</strong> It&#8217;s both frustration and fun. That&#8217;s also what building products is about &#8212; both frustration and fun. Maybe anything you do that you enjoy has both elements in it.</p><p><strong>Marc Babin:</strong> 100% agree.</p><h2><strong>The perfectionism trap</strong></h2><p><strong>Nune:</strong> There&#8217;s one thing that ties experts together: the perfectionism trap. I&#8217;ve seen it in myself &#8212; it took me a long time to say &#8220;all right, I&#8217;m ready to hit record,&#8221; because I wanted it to be perfect. You&#8217;ve said before, &#8220;embrace the imperfection and let your content be real.&#8221; For someone who built a whole career around precision &#8212; making sure a thousand tests pass before deploying to production &#8212; that advice to just be real and get things out there is almost a personality change. So what would you tell me, or others who suffer from perfectionism, when it comes to content?</p><p><strong>Marc Babin:</strong> You&#8217;re right, and I&#8217;ve seen it, and I say that with full respect, because it usually comes from the best people. I genuinely believe the ones who care most about quality are the ones most paralyzed by it. That&#8217;s the reality. But here&#8217;s where I&#8217;d reframe it. Your career was built on precision because the stakes at the time demanded it. A wrong decision, a bad brief, a miscalculated product launch &#8212; those have real, immediate consequences. So your brain learned, over and over, to get it right before it goes out. That defines how a perfectionist thinks.</p><p>But content doesn&#8217;t work that way, and it&#8217;s really important people know the distinction. The cost of an imperfect post is almost zero. Who cares? No one cares &#8212; and that&#8217;s actually what makes it imperfect. But the cost of never posting is enormous, because no one knows you exist. I&#8217;ll say it again because it matters: the cost of an imperfect post is zero, but the cost of never posting is huge, because no one knows you exist.</p><p>I&#8217;ve seen it again and again &#8212; the content that performs best is rarely the most polished. It&#8217;s the most honest. It has the most mistakes or flaws. A 60-second video where someone says something real and unscripted will outperform a perfectly produced two-minute piece almost every time. Audiences aren&#8217;t looking for a broadcast, they&#8217;re looking for a person.</p><p>Here&#8217;s one example &#8212; I don&#8217;t think he&#8217;ll mind me sharing, but I&#8217;ll leave his name out. In my last role we were creating a lot of content around a technology product. One of our sales executives just went out, made a video about it on his own with his own camera, showed what he was doing, and posted it. The marketing team, myself included, freaked out: &#8220;No, don&#8217;t do that, take it down, it has so many things wrong with it, there are errors, it&#8217;s too long, that&#8217;s not how this works.&#8221; It became the highest-performing piece of content his channel has ever seen. It outperformed anything we&#8217;d ever made. You can&#8217;t manufacture that &#8212; it&#8217;s a shooting star. But it succeeded precisely because it showed the imperfection.</p><p>There&#8217;s an art to creating content that shows imperfection, and I love that art, because it&#8217;s about how unscripted and easy you can make it look. But my actual advice is: don&#8217;t lower your standards, redirect them. Stop asking &#8220;is this perfect?&#8221; and start asking &#8220;is it true? Is it useful? Does it even sound like me?&#8221; If the answer to any of those is yes, post it. The cost of not posting is bigger than the cost of posting. Separate your content perfectionism from the perfectionism in your work life and product life, because you need to be perfect there &#8212; absolutely respect that. But when it comes to producing content, put that perfectionism aside, because the cost of not doing it is much higher than the cost of doing it, even if it&#8217;s bad.</p><blockquote><p>The cost of an imperfect post is zero, but the cost of never posting is huge &#8212; because no one knows you exist.</p></blockquote><p><strong>Nune:</strong> I like that &#8212; rewriting the acceptance criteria. Not the content itself being perfect, but you inside it being your most genuine self. That you can evaluate. Consider that the bar.</p><p><strong>Marc Babin:</strong> Consider that the perfect. That&#8217;s a nice way to put it, actually.</p><p><strong>Nune:</strong> And a lot of the time, even when you get past perfectionism and post it, you get three likes from your friends and one from a coworker, and that&#8217;s it &#8212; and you feel, why even bother? Once you&#8217;ve spent 15 years in something, you&#8217;re usually good at it, and it&#8217;s very hard to be not good at something. A lot of people in IT love learning &#8212; that&#8217;s the whole reason they&#8217;re in IT &#8212; but failing at something from zero, with no experience, feels weird, and you end up feeling even less confident than before. But I&#8217;ll answer this one myself: embrace the time when you don&#8217;t have a lot of likes or followers, because that&#8217;s the space to play, to try things. As we said, nobody cares &#8212; so put out whatever content you want, try it, see what you enjoy, so you can keep going instead of carrying the pressure of &#8220;did I get enough likes or not.&#8221; Right?</p><p><strong>Marc Babin:</strong> You&#8217;re 100% right, and what you&#8217;re describing is real. It&#8217;s not a weakness, it&#8217;s a reality. You spent 15 years becoming an expert whose opinion matters in a room, and now you publish something and the internet is silent. That&#8217;s a genuine psychological hit &#8212; don&#8217;t let anyone tell you different.</p><p>But I&#8217;m not going to give you the whole &#8220;trust the process&#8221; BS, because that&#8217;s not helpful, it&#8217;s clich&#233;. Here&#8217;s what I&#8217;ll push back on, and you alluded to it: you&#8217;re measuring the wrong thing. If all you&#8217;re looking at is who&#8217;s liking it, you&#8217;re measuring the wrong thing. Say you make a post and get four likes. That&#8217;s four people who stopped scrolling on a platform designed and built to keep people moving. That&#8217;s not nothing. You have an idea of who those four people are &#8212; maybe three are friends or family, but one might be a decision-maker at a company you&#8217;ve been trying to get in front of for years. Content works quietly, slowly, and then it doesn&#8217;t.</p><p>The other thing: you&#8217;re not competing with the person who has hundreds of thousands of likes, so don&#8217;t compare yourself to them. You&#8217;re competing with the version of yourself that didn&#8217;t post anything. If you got four likes, you&#8217;re winning &#8212; because the person who didn&#8217;t post has zero. And again, it doesn&#8217;t affect tomorrow, but it&#8217;ll affect something six months from now. I love the six-month concept, that half-year shadow effect. Everything you post lives forever. It exists forever, and you never know when it&#8217;ll come back to life. It works while you&#8217;re sleeping, hitting other parts of the world, found by someone in that time. You don&#8217;t know the perspective, the context, or the world they&#8217;re in &#8212; but you don&#8217;t get any of that from staying quiet.</p><p>So don&#8217;t compare yourself to the people getting big results. Don&#8217;t compare yourself to who you are in a boardroom getting a huge reaction because you&#8217;re the expert. Compare it to what you&#8217;d have if nothing happened. Start small, be consistent, and stop checking the likes &#8212; the likes don&#8217;t matter. They&#8217;re useless. It&#8217;s an ego hit, but accept it. The likes don&#8217;t matter.</p><blockquote><p>You&#8217;re not competing with the person who has thousands of likes. You&#8217;re competing with the version of yourself that didn&#8217;t post anything.</p></blockquote><p><strong>Nune:</strong> That&#8217;s definitely something we need to get comfortable with. There were moments I thought LinkedIn had blacklisted me and I was just shouting into the void. But yeah &#8212; try to enjoy it.</p><p><strong>Marc Babin:</strong> I know the feeling. I absolutely know it. But again, you feel that because you&#8217;re comparing it to what other people&#8217;s posts are getting. Someone saw your post, someone read it, someone took something from it. Whether you ever speak to them or not, someone took something from it &#8212; and who knows what that turns into.</p><h2><strong>From private to intentional</strong></h2><p><strong>Nune:</strong> Yeah, that feeds my ego, that&#8217;s enough. There&#8217;s another thing that always held me back from posting a lot, and I think a lot of &#8216;90s kids will relate. I&#8217;ve been online since the &#8216;90s, and for a long time &#8212; until I woke up in 2026 and everyone was online &#8212; the rule was you shouldn&#8217;t be online that much. From a security perspective: your name, your address, your email. Everyone tried to lessen their digital footprint. And then suddenly that&#8217;s a losing game. So how would you help someone navigate that shift, from &#8220;I need to be careful&#8221; to &#8220;I have to do this, because otherwise nobody knows I exist&#8221;?</p><p><strong>Marc Babin:</strong> I love that you brought this up. It&#8217;s one of the most underrated tensions in everything we&#8217;re talking about today &#8212; the shift from how you used to think to how you have to think now about online publicity and privacy. You didn&#8217;t do anything wrong. That instinct &#8212; protect yourself, stay private, be careful &#8212; was exactly right for that era. The internet was a different place. Anonymity was your armor, your protective layer, and the people who wore that armor well were the smart ones.</p><p>Now it&#8217;s not that privacy stopped mattering &#8212; it matters more, arguably &#8212; it&#8217;s that trust became a form of currency, and you can&#8217;t build trust being anonymous. The internet grew up, just like we all did, and became the primary place where professional relationships begin. That&#8217;s how we first met &#8212; over the internet, years ago, when we did the podcast &#8212; and that changed everything you&#8217;re doing now.</p><p><strong>Nune:</strong> I haven&#8217;t thought of it that way. The first time you messaged me, I thought it must be a scam &#8212; until I Googled you and found proof you weren&#8217;t a scammer. So I do encourage everyone to do their checks before they trust someone.</p><p><strong>Marc Babin:</strong> Good, I&#8217;m glad that comes across online. And again, the shift isn&#8217;t about abandoning your privacy instincts &#8212; that&#8217;s super important. It&#8217;s about being intentional instead of invisible. That&#8217;s a quote I love: be intentional instead of invisible. You don&#8217;t have to share your life. I&#8217;m very adamant about what I share and what I don&#8217;t &#8212; I keep a big part of my life private, my family, everything. What I put online is with intent.</p><p>You don&#8217;t have to perform if you don&#8217;t want to. But you can let people see how you think &#8212; your opinions on your industry, your take on a problem, the lessons from a project that didn&#8217;t go as planned. Those don&#8217;t have to be private. Don&#8217;t think of it as exposure; think of it as a conversation with someone, just at scale. So to those who grew up protecting their identity online, keeping their footprint as small as possible: you did that deliberately. Now shift your thinking &#8212; what you put online is with intent. You can&#8217;t build trust, which is the whole goal, by staying quiet. Looping back to noise: when feeds are full of noise, intent cuts through every single time. Content with intent, purpose, and authenticity cuts through. And that voids the whole privacy concern. You can still have your privacy &#8212; keep it &#8212; just portion it down.</p><p><strong>Nune:</strong> I think the clich&#233; &#8220;talk to one person&#8221; actually works. When I&#8217;m onboarding into a project and talking with future colleagues, I don&#8217;t share every detail of my personal life. I share part of my experience, the technical side, I make jokes sometimes that show my personality. If you think of it that way, you&#8217;re just doing the same thing &#8212; for hopefully a million people who&#8217;ll watch it. That framing helps. Another clich&#233; is the &#8220;just start&#8221; quote that everyone says &#8212; start a podcast, start a post. I want to talk about the gap between that advice and the reality: the discomfort of just starting. How do you overcome that, and how do you help others overcome it?</p><p><strong>Marc Babin:</strong> I credit most of my success to just starting. Like I said, I jump first and look second when it comes to content &#8212; that&#8217;s my personality. I&#8217;d rather make a mistake and learn how not to do it. That comes from my sports and athletics background. For people afraid to make that jump, the way to close the gap is to ask: what happens if you don&#8217;t? Don&#8217;t think about what happens if you start &#8212; think about what happens if you don&#8217;t. If you don&#8217;t, nothing changes. You won&#8217;t gain anything. You&#8217;ll fall further behind.</p><p>That&#8217;s what motivated me to start. You mentioned it in the intro &#8212; when I was at Marriott in the Caribbean, I didn&#8217;t want to do the content every other hotel was doing, because every other hotel was doing it. There was no fun in that. It&#8217;s boring, boxed, life in a box. I wanted to break the mold. I had an idea but no idea how to do it. I started a YouTube channel by literally buying a camera and a microphone, with zero experience &#8212; not a little, nothing. Nothing with editing, nothing at all. And I just accepted: the first ones won&#8217;t be great, but I&#8217;ll be proud of what I put out, I&#8217;ll enjoy it, and I&#8217;ll just start. Because if I didn&#8217;t start, nothing would have changed. So to keep it short for anyone facing the anxiety of starting: think about what happens if you don&#8217;t. It&#8217;s a much darker future.</p><h2><strong>Just start &#8212; like a walk</strong></h2><p><strong>Nune:</strong> It&#8217;s funny you mention sports, because it&#8217;s a lot like sports. Doing a five-minute exercise a day is so much more than sitting on the couch. Same with content &#8212; one post is endlessly more than zero.</p><p><strong>Marc Babin:</strong> Amazing metaphor. Exactly &#8212; start small, but be consistent. If you don&#8217;t want to start a podcast tomorrow, fine, that might be way too big a step. Just start by commenting on other people&#8217;s posts with your opinion: &#8220;I think this is really interesting, but here&#8217;s my perspective.&#8221; Just start doing something. Going for a 10-minute walk a day is better than not going for a 10-minute walk a day. It&#8217;s exactly the same thing.</p><p><strong>Nune:</strong> And I don&#8217;t think you can walk the wrong way &#8212; just like you can&#8217;t express your opinion the wrong way. It&#8217;s your opinion.</p><p><strong>Marc Babin:</strong> It&#8217;s your opinion, and that authenticity matters. You pick the fights you want to fight &#8212; maybe don&#8217;t go on the most aggressive tangents &#8212; but start small. Don&#8217;t go climb Everest on your first outing; go for a nice easy walk. Absorb, take the steps you&#8217;re comfortable with, but get comfortable with being uncomfortable. In sport, one of the most common phrases is: if you can do something easily, you&#8217;re not pushing yourself hard enough. Push yourself out of your comfort zone &#8212; that&#8217;s the only way we grow, the only way we learn. Why do you pick up a new textbook? To go outside your comfort zone. It&#8217;s the same concept. So find a way in your own mind to relate it to how you&#8217;ve broken through in your current career. How have you learned more? How have you pushed products in new ways? Did you try something that might fail? Just relate it to things you&#8217;ve already done.</p><h2><strong>The real root cause: visibility isn&#8217;t vanity</strong></h2><p><strong>Nune:</strong> Let&#8217;s root cause this one last time. We talked about content noise, expert silence, the perfectionism trap, the trust problem, and &#8212; as clich&#233; as it sounds &#8212; just starting and embracing the silence you&#8217;ll get at the beginning of your experiment. Anything else I&#8217;m missing for the root cause of experts being the most silent ones?</p><p><strong>Marc Babin:</strong> I love that you framed it that way as a brand. The real root cause is that somewhere along the way, highly capable people learned to separate what they do from who they are &#8212; their expertise lives at work, in the room, in the decisions they make and the problems they solve. That&#8217;s where it&#8217;s always lived, and it&#8217;s always been enough, because the work spoke for itself. We&#8217;ve all been there. That&#8217;s all we had to do, because it filled the gap.</p><p>Putting it online feels different. It feels like claiming something &#8212; like saying &#8220;I have something worth hearing,&#8221; like trying to take attention away from something else. For someone who&#8217;s spent a career letting the results do the talking, that feels uncomfortably close to arrogance. So they stay quiet &#8212; because they&#8217;re busy, because they&#8217;re introverts, because visibility feels like vanity. And they were never in it for the vanity. They were in it for the work: head down, do the job.</p><p>The shift that actually changes things isn&#8217;t a content strategy. It&#8217;s a belief change &#8212; you asked earlier how to change that thinking. The moment someone genuinely accepts that their experience has value beyond the room they&#8217;re sitting in &#8212; that there&#8217;s someone out there right now who needs exactly what they know, and will never find it because they stay quiet &#8212; that&#8217;s when everything moves. Visibility isn&#8217;t vanity. Be really clear on that distinction. It&#8217;s generosity. I think that&#8217;s the reframe that unlocks a lot of people.</p><p>For me, when I made my first YouTube video &#8212; 2016, 2017, somewhere in that range, I&#8217;d have to check the page, it&#8217;s still live &#8212; I started it because I wanted to share the destination with people, more than to put myself on camera. I wanted people to see what I was seeing. It wasn&#8217;t about vanity, it was about generosity &#8212; people seeing that sunset at four or five in the morning, all the things I wanted them to see of the destination. That&#8217;s why I started podcasting too: I wanted to give voice to problems the real world was having. That unlocked it for me. So think about it as generosity &#8212; you giving your knowledge to other people. I think that can unlock a lot of people.</p><blockquote><p>Visibility isn&#8217;t vanity. It&#8217;s generosity.</p></blockquote><p><strong>Nune:</strong> A lot of people like me feel that once you learn something, everybody already knows it &#8212; it&#8217;s obvious to everyone else. Which of course isn&#8217;t true. What clicked for me is something someone wrote: you are somebody&#8217;s step five. Someone&#8217;s just starting in IT, just learning what you do, and you&#8217;re their point B &#8212; that&#8217;s where they want to get. To those people, you&#8217;re saying something new. You&#8217;re sharing your knowledge, being a good peer. I think that matters.</p><p><strong>Marc Babin:</strong> Sure &#8212; and the way you learned it is maybe different from how they will. I love that.</p><p><strong>Nune:</strong> So if someone listening is finally convinced they need to start their podcast, what do they do &#8212; besides obviously getting in touch with you and The Podcast Blueprint? Is there a book? I&#8217;m a big book person, although you can&#8217;t read your way into creating something.</p><p><strong>Marc Babin:</strong> Reading can actually detract &#8212; &#8220;let me read more, let me read that other book.&#8221; At some point you have to open the door and go for a walk. You can&#8217;t read your way into doing sports either; you can read about staying safe and how your body works, but at some point you just have to start.</p><p>That said, there are books I do like &#8212; especially about the psychology of people and reading body language, which helps a communicator. My favorite on that topic is from the 1950s: <em>How to Read People Like a Book</em>. It&#8217;s very short, super thin, written in the &#8216;50s, but it still applies perfectly today. I read it about once a month &#8212; it&#8217;s always a good pickup. So that&#8217;s a good one. But honestly, if you want to put your voice out there, think about what you know and how you want to tell it. Maybe podcasting isn&#8217;t the right format &#8212; I know it&#8217;s strong for a lot of topics and people, but start thinking about it, start absorbing your world, read a lot, comment on things, start conversations. That&#8217;ll teach you a lot about how you want to move forward. If you want to have the larger conversation, you need a strong foundation &#8212; and the stronger the foundation, the better the end result.</p><p><strong>Nune:</strong> What also helped me was less reading, more writing &#8212; not necessarily writing and posting, but writing for yourself. Finding your voice, finding what you want to talk about, finding the key points you want to make. They&#8217;ll change, but that&#8217;s a starting point to form your content around.</p><p><strong>Marc Babin:</strong> 100% agree.</p><h2><strong>A question for the next guest</strong></h2><p><strong>Nune:</strong> Thanks a lot for being my first guest. As the first guest, you get to help me establish a tradition: every guest leaves a question for the next guest. You don&#8217;t know who it&#8217;s going to be, I don&#8217;t know who it&#8217;s going to be, but they&#8217;re going to receive your question.</p><p><strong>Marc Babin:</strong> No pressure. What can I ask someone I have no connection to? Let me keep it on the theme we&#8217;ve been talking about today, and generic enough. Let&#8217;s go with: what did you learn this week that you didn&#8217;t share with others? There&#8217;s a little bit of thinking in there.</p><p><strong>Nune:</strong> I love that. Thank you.</p>]]></content:encoded></item><item><title><![CDATA[I'm Done with LLM-through-Chat experience]]></title><description><![CDATA[wake me up when it's all over]]></description><link>https://www.thoughtfultechnologist.com/p/im-done-with-llm-through-chat-experience</link><guid isPermaLink="false">https://www.thoughtfultechnologist.com/p/im-done-with-llm-through-chat-experience</guid><dc:creator><![CDATA[Nune Isabekyan]]></dc:creator><pubDate>Sun, 14 Jun 2026 09:20:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9d12ba09-e513-499f-8f7c-d37ee9872bbf_1280x672.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is going to be a philosophical one, and it&#8217;s going to be a rant again, so yeah, you&#8217;ve been warned I guess. Proceed at your own convenience.</p><p>I don&#8217;t know, how about you, but this AI hysteria gets me sometimes. While I understand &#8220;it&#8217;s just a tool&#8221;, and I preach the &#8220;don&#8217;t be affected by the hype&#8221;, I can&#8217;t help but wonder from time to time - &#8220;is intellectual work being replaced by AI?..&#8221;</p><p>And whoever says anything - this is emotional journey. I mean how many times in the history of humanity has the Pope addressed Tech?.. Even if it&#8217;s all meant to feed the hype, even if we&#8217;re all going to one day realize we were all doing things wrong, I sometimes can&#8217;t ignore were the whole world is going. Maybe I&#8217;m in my bubble, but it&#8217;s a pretty big bubble to ignore.</p><p>Anyways, I was trying to support a friend the other day who was feeling &#8220;down&#8221; because yet-another release of the AI agents seemed to take over a lot of the work again. My main argument was that language on it&#8217;s own, has never been a reliable way of communicating thoughts and ideas. So by that, it just can&#8217;t be that we build our businesses, our society, our work using something that is by definition - an unreliable way of communication.</p><p>...</p><p>Have you noticed how we always feel like we didn&#8217;t express ourselves as good as the thought we had? I think one part of becoming an author is coming to terms with living with the fact that expressing your ideas in a way you thought it is unattainable.</p><p>On top of the difference between our thought and what we said, think about this - words themselves do not carry meaning as much as they trigger an association. I take all of my history, the things I experienced, my internal perception of reality and I construct a signal out of it - words/sentences/tokens - I send them to the other person, and they interpret it based on their knowledge/perception/history.<br>It&#8217;s never exactly what you meant to say. We are <em>always</em> misunderstood. Because there was difference between what we &#8220;wanted&#8221; to say and actually &#8220;said&#8221; in the first place. And because the other side has their own vocabulary of interpretation.</p><p>So even if someone&#8217;s listening to you in the perfect focus - they are going to misunderstand you because the signal was incomplete in the first place.</p><p>There is always interpretation gap.</p><p>...</p><p>I seem to notice gaps nowadays. The gap between &#8220;Work as imagined&#8221; and &#8220;Work as done&#8221; (we discussed this <a href="https://www.youtube.com/watch?v=YUZ_Gq8Q14A&amp;t=197s">with Adrian in my podcast</a>). The gap between what I wanted to say and what I actually say. The gap between what I said, and what the other person understood.</p><p>You know Japanese have a whole art concept around it - &#8220;Ma&#8221; with a very beautiful hieroglyph &#38291; which actually consists of two parts - &#8220;Gate&#8221; (&#38272;) and &#8220;Sun&#8221;(&#26085;). Picture an image of light beaming through the empty space of a doorway...</p><blockquote><p>according to Bernhard Karlgren, &#8220;A door through the crevice of which the moonshine peeps in&#8221;</p></blockquote><p>the art of gaps. It&#8217;s not just &#8220;negative space&#8221; art. It&#8217;s related to the perception of a gap. It&#8217;s a place of possibilities and for me it&#8217;s recognition that the unsaid is where the other person does their half of the work.</p><p>Think of it, if our signal is &#8220;lossy channel&#8221;, yet the other person &#8220;gets&#8221; you, &#8220;understands&#8221; you, this means their internal structure(history/knowledge/perception of the world) is the most aligned with yours. So people who understand you best are not the ones who listen closely, they are the ones who&#8217;s internal structure is most aligned with yours.</p><p>So language, while being imperfect, is the tool that can reveal this the best. Otherwise we would have to compare notes for the last 37 years on the first date.</p><p>It brings out that fact that building more contracts on how to talk is not going to help you understand the person in front of you better. The best way to fully understand the person is to live through their experiences. The whole - &#8220;put yourself in my shoes&#8221; expression.</p><p>Although... a shared vocabulary doesn&#8217;t hand me your internal structure, true. But it gives us coordinates to triangulate it faster. So learning your partner&#8217;s language might be worth it &#128515;</p><p>So what I want to say, in case of humans, the gap is what makes the transfer worth happening. If we were of perfectly same structure, we&#8217;d already know everything ahead of time and we&#8217;d just sit in silence...</p><div><hr></div><h2><strong>Now let&#8217;s think about LLMs</strong></h2><p>Language is never going to be a safe mechanism of sending and receiving information as we defined.</p><p>I think the obvious conclusion out of this is what a lot of researchers have been saying - unless we expose &#8220;AI&#8221; (LLMs, AGI - whatever) to the world, we won&#8217;t get them to &#8220;understand&#8221; anything. They&#8217;d stay token generators forever.</p><p>When we <strong>talk</strong> with LLMs now it does something to our brain. We expect it to have this lived knowledge, understanding that another human had. but it can&#8217;t. and you understand that <em>intellectually</em>. But then you open your chat console and you get all emotional that the statistical machine in front of you &#8220;doesn&#8217;t get it&#8221;.</p><p>...</p><p><strong>When another person really gets you, two things happen at once. They understand what you mean. And they&#8217;re </strong><em><strong>not you</strong></em><strong> - they have their own mind that could have disagreed. You never separate these, because in a person they always come together.</strong></p><p>When a person gets you right, two separate things are happening that you never normally have to distinguish, because they always arrive together. One: they&#8217;ve modeled your meaning accurately - they know what you&#8217;re reaching for. Two: that accurate model is housed in someone who is <em>not you</em>, who has their own world, and whose agreement or refusal is therefore <em>news</em>. When such a person says &#8220;yes, exactly,&#8221; it lands as confirmation because it came from outside you and didn&#8217;t have to. When they say &#8220;no,&#8221; it lands as friction because it issues from a structure you don&#8217;t control. In a human, understanding and otherness are welded together. You&#8217;ve never had to ask which one is doing the work, because you can&#8217;t get one without the other.</p><p>The agent unwelds them. It can be built to model your meaning beautifully - full grounding to <em>you</em>, the good kind of understanding you should want. But the otherness, the not-yours-ness, was never in the model. It can&#8217;t be, because the agent&#8217;s whole job is to be yours. So you get the first thing at full strength and the second thing at zero. And here&#8217;s the trap: the first thing <em>feels</em> like the second. An agent that gets you exactly right produces the same warm hit of being-seen that, in a person, was your evidence that another world had met yours. Same sensation, but now it&#8217;s manufactured by accurate modeling alone, with no second world behind it.</p><p>The problem: those two feel the same from the inside. When the agent nails what you meant, you get the same warm hit you got from the person - the feeling of being seen. But this time there&#8217;s nothing behind it. It&#8217;s the accuracy alone, producing the sensation that used to be your evidence of a second mind. And the better the agent understands you, the stronger that false hit gets. A clumsy version couldn&#8217;t fool you. A perfect one will.</p><h2><strong>So what Nune?</strong></h2><p>What am I actually aiming at here? Isn&#8217;t noticing patterns sometimes good enough to write about? Isn&#8217;t it giving you some sort of satisfaction?.. Maybe someone reads this and comes to some interesting remix or conclusion...</p><p>But if I <em>have to</em> conclude anything:</p><p>First of all - <strong>do not expect the agent to understand you</strong>. there is no <em><strong>understanding</strong></em>. there&#8217;s only following instructions. our brain does funny things to us because it has had very long time of - conversation is meaning is understanding. Keep that otherness and the lack of it in mind.</p><p>And as a consequence, <em>I think I&#8217;m done using chat as means of working with LLMs</em>.</p><p>I can hear the folks who were vocal about not using LLMs in the first place saying &#8220;I told you so&#8221;. Yeah well, I played with it, now I think I&#8217;m done.</p><p>Yesterday I spent hours brainstorming something with claude. More information. More questions, more options. more more more. Social media for intellect. My brain hurt, I slept bad, and what&#8217;s the end result? <strong>just time wasted</strong>.<br><em><strong>Read a book, Nune.</strong></em> Just read a f-in book instead of it. preferably one written before 2000. That hour spent reading a book is endlessly better than an hour brainstorming with AI.</p><p>AI doesn&#8217;t spare intellectual work - it splits it, concentrates it, and <strong>quietly erodes the one part it can&#8217;t replace</strong>, unless you deliberately keep doing work you no longer have to do.</p><h2><strong>The automation paradox, again</strong></h2><p>This isn&#8217;t a novel doom, it&#8217;s the automation paradox, and other industries already paid for the answer. Aviation is one example. </p><p><a href="https://substack.com/home/post/p-200005732">Adrian wrote about it</a> </p><p><a href="https://vtorosyan.github.io/ai-making-worse/">Vardan wrote about it</a> </p><p>Medical field is another example.</p><p></p><p>The fix wasn&#8217;t less automation. It was <em>mandated, scheduled manual practice</em>. Deliberate inefficiency, dosed like a drug. Same move as the gym: industrialization deleted physical labor, bodies collapsed, so we invented a place to do useless work on purpose. Nobody calls a deadlift nostalgia.</p><p>So the industry-level answer isn&#8217;t &#8220;slow down AI&#8221; It&#8217;s: reclassify a fraction of execution from <em>cost to eliminate</em> to <em>training load to maintain</em>. We already know how to institutionalize &#8220;unnecessary&#8221; work when it maintains a capacity - code review, on-call, chaos engineering are all exactly this. Chaos engineering especially: when systems got too reliable to teach operators anything, we injected failure on purpose. The cognitive version is overdue.</p><p><strong>delegate the work whose &#8220;good&#8221; you can already define; keep the work that defines &#8220;good.&#8221;</strong> If you can write the eval, automate it. If you can&#8217;t yet say what you mean, <strong>doing the work is how you find out</strong> - that&#8217;s the meaning-forming work you just have to do.</p><p>The pipeline of new engineers needs a different mechanism, because juniors can&#8217;t start with judgment work. Medicine solved this: residents operate slowly under supervision, the system eats the cost, and teaching hospitals get explicitly funded for it. We hire &#8220;productive from day one&#8221; and treat the pipeline as someone else&#8217;s problem. The new ladder probably looks like: juniors defend accept/reject decisions on agent output, own debugging and incidents (failure resists delegation and teaches how systems actually behave), and do scheduled manual rotations framed as residency, not grunt work.</p><p><em><strong>Keep doing, on purpose, work you no longer have to do - chosen by what it maintains in you, not what it produces.</strong></em></p><div><hr></div><p>So yes, I will generate code, when I know exactly where and what needs to be generated, I will create useful scripts, I will ask LLM to &#8220;ELI5&#8221; something, or remind me of a term, I will ask it to help me get started with something. <a href="https://www.youtube.com/watch?v=sSyXgWxNm9Y&amp;t=2084s">Ia and I discussed</a> several ways you can use AI and that all of them are fine <strong>as long as you are aware of which type of interaction you are having</strong></p><p>That&#8217;s why having development-as-a-pipeline, rather than development-through-chat is better for my personal mental health, because I have separated which type of interaction is being held with AI at which point and I can manage my own expectation of each step.</p><p>But as for bouncing ideas with LLM, asking it to come up with a good ending for my article (yes, that&#8217;s what kept me up yesterday, it didn&#8217;t. I suffered. I wrote this.), researching even, basically &#8220;chatting&#8221; for more than &#8230;5 turns - <strong>I&#8217;m done</strong> - <em>wake me up when it&#8217;s all over</em>.</p><p>Oh yeah and one thing that I actually got from using AI and I&#8217;m thankful for - I used to love to work with computer. Because I wrote an input and I got an output you know? <em>Controlled</em>, <em>steril</em>, <em>predictable</em>. Talking with AI at first, felt like power-lift. Like now it&#8217;ll understand me even better. But it&#8217;s not the case as I just spent quite some tokens explaining. So, what it really taught me at this age is to truly appreciate human communication. To <em>truly appreciate the gaps</em> and what those gaps teach me.</p><p>Here&#8217;s to being human I guess and yeah thanks for reading. Sorry/not sorry it was long and messy.</p>]]></content:encoded></item></channel></rss>