<?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:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Thomas Pierrain. (υѕe caѕe drιven) on Medium]]></title>
        <description><![CDATA[Stories by Thomas Pierrain. (υѕe caѕe drιven) on Medium]]></description>
        <link>https://medium.com/@tpierrain?source=rss-5a80e41668a3------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*pKO_80TIJoSqt2n7B0VqXw.jpeg</url>
            <title>Stories by Thomas Pierrain. (υѕe caѕe drιven) on Medium</title>
            <link>https://medium.com/@tpierrain?source=rss-5a80e41668a3------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 21:12:25 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@tpierrain/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[My agents run /clear on their own]]></title>
            <link>https://medium.com/@tpierrain/my-agents-run-clear-on-their-own-5d7727180b43?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/5d7727180b43</guid>
            <category><![CDATA[context-engineering]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[harness-engineering]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[context-rot]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Mon, 09 Nov 2026 21:50:37 GMT</pubDate>
            <atom:updated>2026-11-12T06:29:16.091Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>TL;DR</strong>: what if your agent ran its own /clear? Not auto-compaction, which summarizes more or less at random. A real relay: it writes down what matters, empties its conversation and starts again fresh, without you. Forty lines of code, three traps avoided, and no need to sit in front of your screen for it.</p><p><em>A short follow-up to my series on context engineering: </em><a href="https://medium.com/@tpierrain/same-model-so-why-do-some-devs-ship-more-bugs-484c7053bff9"><em>the diagnosis</em></a><em> (long sessions produce bugs), </em><a href="https://medium.com/@tpierrain/a-good-harness-makes-clear-free-5f22c0e01d34"><em>the harness that makes /clear free</em></a><em>, then </em><a href="https://medium.com/@tpierrain/what-if-clear-was-no-longer-our-job-16fe571ae206"><em>the question of no longer having to type it</em></a><em>. Here, the harness types it by itself.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*35cX1t__5OqOryTdkAgJRQ.png" /></figure><h3>Don’t block for no reason</h3><p><strong>Right now, I am working on an </strong><a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988"><strong>agentic software factory</strong></a><strong>. My guiding principle: humans should only have to step in on tasks that add value, and everyone should be as efficient as possible</strong>. Every manual intervention costs twice: the time to do it, and all the time the agent stays blocked, waiting for a human to unblock it.</p><p>For a few months now, I have been hunting these interventions one by one, to make them disappear. One stubborn one was left: <strong>the /clear</strong>. In <a href="https://medium.com/@tpierrain/a-good-harness-makes-clear-free-5f22c0e01d34"><strong>a previous article</strong></a>, I explained how to make it free: the state of the work lives in a plan, not in the conversation, so you can empty the conversation and resume without losing anything. It works very well. But a human still has to think about it, type /clear, then “let’s resume”.</p><p>“<em>What about auto-compaction?</em>” It does avoid the intervention, but it does not give good results. It starts at the worst moment, when the agent is the most tired, sometimes in the middle of a task. Its summary is generic, and you do not choose what survives: a decision forgotten along the way comes back later as a bug. <a href="https://medium.com/@tpierrain/comment-%C3%A9viter-de-devenir-zinzin-votre-ia-et-vous-un-peu-aussi-a704af30455a">Reducing the window size</a> (article in French) makes it start earlier, but then you just get it more often, and each run blocks the agent and costs one more call to the model.</p><p>So the choice was: stay in front of the screen to type /clear at the right moment, or let the agent degrade. I wanted neither.</p><h3>Greg’s idea: a “relay” mod that types for you</h3><p>I like to run my experiments at home, in the evening. Tonight, I tried an idea from Grégory, our QA lead, who is passionate about AI and further ahead on the subject than most people: <strong>use a Claude mod to trigger the /clear from outside the conversation, instead of waiting for a human to type it</strong>. What follows is my own experiment of the evening: a mod written from the <a href="https://code.claude.com/docs/en/plugins/mods/overview">official documentation</a>, measured, and the traps I found along the way.</p><p>A mod is a plugin that contains TypeScript code run by Claude Code itself. It can listen to what happens (the end of an answer, for example) and do what you would do at the keyboard: read the size of the conversation, send a message, run a command… like /clear.</p><p>The relay takes four steps:</p><ol><li>at the end of each answer, the mod reads the size of the conversation;</li><li>above the threshold, it asks Claude to update `state.md`: what is settled, what was tried and failed, and the next step;</li><li>when that turn is over, it runs /clear;</li><li>then it sends “let’s resume”, and the fresh conversation reads state.md again (one line in CLAUDE.md tells it to).</li></ol><p>The mod fits in three files:</p><ul><li>.claude-plugin/plugin.json: its name;</li><li>hooks/hooks.json: { &quot;modules&quot;: [&quot;./register.ts&quot;] }, which tells Claude Code which code to load;</li><li>hooks/register.ts: the code, below.</li></ul><pre>import type { Register } from &#39;claude-code&#39;<br><br>const MARGIN = 40_000 // relay once the conversation grew 40k tokens past its starting size<br>type State = { phase: &#39;armed&#39; | &#39;writing&#39; | &#39;clearing&#39; | &#39;resumed&#39;; base?: number; held?: string[] }<br><br>const HANDOVER =<br>  &#39;The conversation is getting long. Update state.md in ten lines at most: &#39; +<br>  &#39;what is settled, what was tried and failed, and the exact next step. &#39; +<br>  &#39;Then answer &quot;state.md updated&quot; and nothing else.&#39;<br><br>export const register: Register = on =&gt; {<br>  on(&#39;turn.complete&#39;, async ($, e, next) =&gt; {<br>    const result = await next(e)<br>    if (e.agentId) return result // main conversation only, not subagents<br>    const key = `relay:${await $.session.root()}`<br>    const s = ((await $.store.get(key)) as State | undefined) ?? { phase: &#39;armed&#39; }<br>    const tokens = (await $.session.usage()).context.tokens ?? 0<br><br>    if (s.phase === &#39;writing&#39;) {<br>      // state.md is written: clear, then resume, right after this hook returns<br>      await $.store.set(key, { ...s, phase: &#39;clearing&#39; })<br>      $.clock.after(0, async () =&gt; {<br>        await $.command.run({ command: &#39;clear&#39; })<br>        await $.store.set(key, { ...s, phase: &#39;resumed&#39; })<br>        await $.prompt.submit({ text: &quot;let&#39;s resume&quot;, asUser: true })<br>      })<br>    } else if (s.phase === &#39;resumed&#39; || s.base === undefined) {<br>      // first turn of a conversation: measure its starting size, then send back what was held<br>      await $.store.set(key, { phase: &#39;armed&#39;, base: tokens })<br>      for (const text of s.held ?? []) $.clock.after(0, () =&gt; void $.prompt.submit({ text, asUser: true }))<br>    } else if (s.phase === &#39;armed&#39; &amp;&amp; tokens &gt;= s.base + MARGIN) {<br>      await $.store.set(key, { ...s, phase: &#39;writing&#39; })<br>      $.clock.after(0, () =&gt; void $.prompt.submit({ text: HANDOVER }))<br>    }<br>    return result<br>  })<br><br>  // While the relay runs, hold what the person types, and send it again after the resume<br>  on(&#39;prompt.submit&#39;, async ($, e, next) =&gt; {<br>    if (e.origin.kind === &#39;plugin&#39; || e.command) return next(e)<br>    const key = `relay:${await $.session.root()}`<br>    const s = ((await $.store.get(key)) as State | undefined) ?? { phase: &#39;armed&#39; }<br>    if (s.phase !== &#39;writing&#39; &amp;&amp; s.phase !== &#39;clearing&#39;) return next(e)<br>    await $.store.set(key, { ...s, held: [...(s.held ?? []), e.text] })<br>    return { drop: &#39;Relay in progress: your message will be sent again right after the resume.&#39; }<br>  })<br>}</pre><p>To try it: claude --plugin-dir ./relay. And claude plugin validate ./relay tells you what the mod listens to and calls.</p><h3>The three traps</h3><ol><li><strong>Don’t set the threshold too low, to avoid livelocks.</strong> Before the first message, a conversation already weighs a few tens of thousands of tokens, more depending on the plugins you have loaded, and even more in Claude Desktop. If your threshold for relaying to a new session is below this starting base, the conversation is still too big right after the /clear, and the answer to “let’s resume” immediately starts another relay, then another, then another… The mod then runs on its own, forever, and the work stops moving: that is a livelock (everyone is busy, nobody makes progress). This is why the mod measures the size at the first turn of each conversation, and adds a margin.</li><li><strong>Don’t run /clear from inside the hook.</strong> The documentation of $.command.run says so: the command is refused if it comes from a hook that the turn is waiting on. So the mod hands it to $.clock.after, to run once the hook is finished. This is not a bad Thread.Sleep that bets on a delay: the duration plays no role, it is just a way to get out of the hook. Claude Code guarantees the order, because it queues /clear and &quot;let&#39;s resume&quot; and only runs them when the session is idle.</li><li><strong>Let nothing through during the relay.</strong> A message typed while Claude writes state.md would go in just before the /clear, and its answer would be wiped out with the rest. So the mod also listens to prompt.submit: during the relay, it puts aside what the person types, shows &quot;relay in progress&quot;, then sends it again, unchanged, once the fresh conversation has started. Nothing is lost.</li></ol><h3>What a good handoff note keeps</h3><p>The prompt in the mod is short on purpose. But the whole relay depends on this note. Here are the rules that work:</p><ul><li><strong>One line per entry, as few words as possible.</strong> The note is read by a fresh agent, not by a human.</li><li><strong>Keep what is still open</strong>: each goal not met yet, with its next step; the branch, and whether it is committed; each dead end, with what was tried and what happened; the human’s instructions that still apply.</li><li><strong>Keep only what is verified.</strong> A claim that no run has confirmed goes on its own line, with the check that will settle it. Anything vague is removed.</li><li><strong>Remove what is done</strong>: goals met, dead ends solved, claims verified, instructions that no longer apply.</li><li><strong>Leave out what can be found elsewhere</strong>: reasoning, finished work, numbers, quotes, tips. The code, the plan and git already hold them.</li><li><strong>Keep a question for the human only if</strong> no run can answer it.</li></ul><h3>Free, then automatic</h3><p>It works, in Claude CLI as well as in Claude Desktop, including on a TEAM account. <a href="https://medium.com/@tpierrain/a-good-harness-makes-clear-free-5f22c0e01d34">The first episode</a> made /clear free. This one makes it automatic. One interruption less, and nobody will miss it.</p><p>This relay is only one piece of a bigger whole. My next article, the third and last of <a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988">my series on the agentic software factory</a>, will tell the story of this software factory itself: the factory in which this small mod is just one small part.</p><h3>Addendum for loop engineering</h3><p>When I shared this with Greg, he immediately went one step further: add a notion of “goals” to state.md, and a sentence like “<strong><em>until you meet your goals</em></strong>” to the message the mod sends after the /clear , <strong>and you get </strong><a href="https://medium.com/@tpierrain/what-if-clear-was-no-longer-our-job-16fe571ae206"><strong>loop engineering</strong></a>. The agent no longer stops at the end of a session: it relays, again and again, until the work is done. He is right, and the relay is exactly the piece that makes it possible. I don’t do it at work yet, because the token bill is not the same at all: for now, I keep it for my personal projects at home.</p><h3>Going further</h3><ul><li><a href="https://medium.com/@tpierrain/same-model-so-why-do-some-devs-ship-more-bugs-484c7053bff9">Same model — so why do some devs ship more bugs?</a>: the diagnosis, why long sessions produce bugs.</li><li><a href="https://medium.com/@tpierrain/a-good-harness-makes-clear-free-5f22c0e01d34">A good harness makes /clear free</a>: the state of the work lives in the repo, so that /clear costs nothing.</li><li><a href="https://medium.com/@tpierrain/what-if-clear-was-no-longer-our-job-16fe571ae206">What if /clear was no longer our job?</a>: cutting in time and in space, with loop and graph engineering.</li><li><a href="https://medium.com/@tpierrain/comment-%C3%A9viter-de-devenir-zinzin-votre-ia-et-vous-un-peu-aussi-a704af30455a">Comment éviter de devenir zinzin (votre IA, et vous un peu aussi)</a> (in French): seeing the size of your context, and setting the auto-compaction window.</li><li><a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988">The hardest part begins when it works</a>: the first episode of my series on the agentic software factory.</li><li><a href="https://code.claude.com/docs/en/plugins/mods/overview">The official documentation of Claude Code mods</a>.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d7727180b43" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why some companies are not there (yet) with AI]]></title>
            <link>https://medium.com/@tpierrain/why-some-companies-are-not-there-yet-with-ai-d06377790eb6?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/d06377790eb6</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[engineering-management]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Wed, 28 Oct 2026 18:25:16 GMT</pubDate>
            <atom:updated>2026-10-29T09:34:57.871Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Running in place, on steroids: eight reasons AI is not paying off for you yet.</em></p><p><strong>[</strong><a href="https://medium.com/@tpierrain/pourquoi-certaines-entreprises-ne-sy-retrouvent-pas-encore-avec-l-ia-b8d85f9550f4"><strong>French version here</strong></a><strong>]</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yhalWmzVLzDieTAG--RODg.png" /><figcaption><em>We changed the engine. Not the wheels.</em></figcaption></figure><p>Today, almost everyone has Claude or an equivalent. Everyone produces a lot more code. And yet, more and more companies say the same thing, quietly: we are not getting anywhere. No more value delivered, tired people, and <strong>the feeling of running in place, on steroids</strong>. It does not have to be this way. Since the start of the year, I have been guiding the agentic transformation of an incredibly talented scale-up of more than 70 developers, and what I see there, and elsewhere, fits in one sentence. The difference between what works and what does not has nothing to do with the model or the tool.</p><p>Here are 8 traps almost all of us fall into.</p><h3>1. We get distracted too easily</h3><p>Everything is within reach, and everything takes only a few minutes. The AI keeps suggesting: “it would be nice to do this too, wouldn’t it?” And it is true. So we say yes, and we squeeze lots of non-urgent, non-priority things into our days. Lots of small details, but the total time can be surprising. With AI, <strong>the last one who spoke is right</strong>, and the last one who spoke is almost always the AI. We drift away from what matters without noticing, several times a day, every day. <a href="https://medium.com/@tpierrain/five-useful-things-and-zero-progress-3b79d8e63dd3"><strong>Keeping your eyes on the expected value</strong></a>, the way an experienced product manager does, can be learned, but it does not come naturally to everyone.</p><h3>2. We do too many things in parallel</h3><p>Since the agent works while we wait, we start a second topic. Then a third. I saw a developer with five agent windows open. He was not going five times faster: quite the opposite. We start more things, each one waits longer, and cycle time gets worse. Donald Reinertsen wrote it long before AI: every piece of work in progress that waits has a <a href="https://www.youtube.com/watch?v=du2WV1IbULU">cost of delay</a>, and nobody puts it on the bill. AI does not change this rule, it just makes work in progress (WIP) much easier to start. Unfortunately.</p><h3>3. We become too passive, and we lose our grip</h3><p>When the agent works well, the day changes nature: we read, we approve, we click the recommended option… we read, we approve, we click the recommended option (and so on). We are still in the room, but no longer in the equation. And what we no longer understand, we frame badly: teams losing their grip on their own business domain, and mechanically more slop, so more rework. The real risk is not bugs. It is the comprehension debt, and the disengagement that comes with it. That is the subject of <a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988">the article drawn from my keynote</a>.</p><h3>4. We optimize the wrong things</h3><p>The textbook case: human code review 🤦‍♂️. At an AI conference recently, I was shocked by how many people still spend time and money having humans review AI-generated code. It is one of the first things we do when we start with agents, and it is not an interesting thing to invest in: it is like <a href="https://www.linkedin.com/posts/thomas-p-0664769_having-ai-write-the-code-and-humans-review-share-7516580651093925888-eTLy/">putting a Formula 1 engine in a carriage and keeping the wooden wheels</a>. The human becomes the bottleneck, and above all the human burns out. Doing the same as before, only faster, is not the answer: it gives you a gain, then a plateau.</p><h3>5. Our tools and practices become brakes with every new model release</h3><p>Our first harness was about ten specialized agents: an architect, a tech lead, a reviewer. We moved to a single agent and to scripts that check the rules instead of the prompt (<a href="https://claude.com/resources/articles/building-agents-when-to-fold-subagents-into-your-main-agent-loop">which Anthropic now recommends too</a>), because every new version of the model absorbs what we used to do on the side, and our homemade setup was slowing us down instead of helping. Without understanding the fundamentals, we copy someone else’s tooling, and it ends up holding us back.</p><h3>6. We become AI mechanics</h3><p>This trap looks like work. We spend our days under the hood: a new skill, one more hook, a harness to polish. All of it is fascinating, and all of it shows up in commits. Meanwhile, the product we owe our customers stops moving. Tooling is a means: the day it becomes the subject, we have changed jobs without noticing.</p><h3>7. We burn out</h3><p>Before, a developer was expected to know their area by heart. With agents, people cover more and more areas, move from topic to topic much faster, and no longer have time to let anything sink in. Some are in real distress, not because they cannot keep up with the tool, but because they can no longer consolidate their mental models. Cognitive load has become the bottleneck of teams. We need to work differently: accept that we will not remember everything, and be able to get a topic back into our heads in a few minutes, for example with an agent that asks us questions instead of answering them, as in <a href="https://medium.com/@tpierrain/back-in-the-equation-218cecb4c2cd">the design harness</a> I described recently.</p><h3>8. We measure speed, rarely impact (and never rework)</h3><p>This is the trap that makes all the others invisible. Dashboards show code produced, PRs merged, tickets closed: output, not outcome. A green test is output too: it is not a product that someone has launched and used. <strong>Many developers ship to production without ever having opened the application, and the defects are found later, by others</strong>. Nobody counts the rework, and nobody puts velocity next to business impact. So we can be going flat out and getting nowhere, and nobody notices. Full speed, zero distance.</p><h3>The good news</h3><p>There are plenty of solutions to all these problems, and none of them involves switching to another AI model. I will tell you about them in my next article. Stay tuned!</p><p><em>I am VP of Technology at </em><a href="https://shodo.io/"><em>Shodo</em></a><em>, where we help teams succeed in their agentic transformation without losing either their grip on the business domain (Domain-Driven Design) or their impact (Product &amp; Flow). If these traps sound familiar, let’s talk.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d06377790eb6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pourquoi certaines entreprises ne s’y retrouvent pas (encore) avec l’IA]]></title>
            <link>https://medium.com/@tpierrain/pourquoi-certaines-entreprises-ne-sy-retrouvent-pas-encore-avec-l-ia-b8d85f9550f4?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/b8d85f9550f4</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[engineering-management]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Wed, 28 Oct 2026 18:18:08 GMT</pubDate>
            <atom:updated>2026-10-29T09:33:59.726Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Du surplace sous stéroïdes : huit raisons pour lesquelles l’IA ne paie pas encore chez vous.</em></p><p><strong>[</strong><a href="https://medium.com/@tpierrain/why-some-companies-are-not-there-yet-with-ai-d06377790eb6"><strong>English version here</strong></a><strong>]</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yhalWmzVLzDieTAG--RODg.png" /><figcaption>On a changé le moteur. Pas les roues.</figcaption></figure><p>Aujourd’hui, presque tout le monde a Claude ou équivalent. Tout le monde produit beaucoup plus de code. Et pourtant, de plus en plus d’entreprises disent la même chose à voix basse : on ne s’y retrouve pas. Pas plus de valeur livrée, des gens fatigués, et l’impression de faire du surplace sous stéroïdes. Ce n’est pas une fatalité : j’accompagne depuis le début d’année la transformation agentique d’une scale-up incroyablement talentueuse de plus de 70 devs, et ce que je vois là-bas comme ailleurs tient en une phrase. La différence entre ce qui fonctionne (ou pas) ne tient ni au modèle ni à l’outil.</p><p>Voici 8 pièges qu’on rencontre presque toutes et tous.</p><h3>1. On se laisse distraire trop facilement</h3><p>Tout est à portée de main et tout coûte quelques minutes seulement. L’IA propose sans arrêt : « ce serait pas mal de faire ça aussi, non ? » Et c’est vrai. Alors on dit oui, et on intercale plein de choses non urgentes et non prioritaires dans nos journées. Plein de petits détails, mais le temps cumulé peut être surprenant. Avec l’IA, <strong>c’est le dernier qui a parlé qui a raison</strong>, et c’est presque toujours elle. On s’éloigne de l’essentiel sans le voir, plusieurs fois par jour, tous les jours. <a href="https://medium.com/@tpierrain/five-useful-things-and-zero-progress-3b79d8e63dd3"><strong>Garder le cap sur la valeur attendue</strong></a> comme un·e product manager expérimenté·e, ça s’apprend, mais ce n’est pas donné à tout le monde.</p><h3>2. On fait trop de choses en parallèle</h3><p>Comme l’agent travaille pendant qu’on attend, on lance un deuxième sujet. Puis un troisième. J’ai vu un dev avec cinq fenêtres d’agent ouvertes. Il n’allait pas cinq fois plus vite : au contraire. On commence plus de choses, chacune attend plus longtemps, et le cycle time se dégrade. Donald Reinertsen l’a écrit bien avant l’IA : tout travail en cours qui attend a un coût du retard (le <a href="https://www.youtube.com/watch?v=du2WV1IbULU">cost of delay</a>), que personne ne facture. L’IA ne change pas cette règle, elle rend juste le travail en cours (WIP) beaucoup plus facile à démarrer. Malheureusement.</p><h3>3. On devient trop passif·ve, et on perd en maîtrise</h3><p>Quand l’agent travaille bien, la journée change de nature : on lit, on valide, on clique sur l’option recommandée… on lit, on valide, on clique sur l’option recommandée (et ainsi de suite). On est encore dans la pièce, plus dans l’équation. Et ce qu’on ne comprend plus, on le cadre mal : des équipes qui perdent la main sur leur propre métier, et mécaniquement plus de slop, donc plus de rework. Le vrai risque n’est pas les bugs. C’est la dette de compréhension, et le désengagement qui vient avec. C’est le sujet de <a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988">l’article tiré de ma keynote</a>.</p><h3>4. On optimise les mauvais sujets</h3><p>Le cas d’école : la revue de code humaine 🤦‍♂️. À une conférence sur l’IA récemment, j’ai été choqué par le nombre de personnes qui consacrent encore du temps et de l’argent à faire relire du code généré par l’IA à des humains. C’est un des premiers trucs qu’on fait quand on commence l’agentique, et ce n’est pas un sujet intéressant à investir : c’est comme <a href="https://www.linkedin.com/posts/thomas-p-0664769_having-ai-write-the-code-and-humans-review-share-7516580651093925888-eTLy/">mettre un moteur de Formule 1 dans une calèche en gardant les roues en bois</a>. L’humain devient le goulot, et surtout il s’épuise. Faire comme avant, mais en plus vite, n’est pas la solution : ça donne un gain, puis un palier.</p><h3>5. Nos outils et nos pratiques deviennent des freins à chaque nouvelle version des modèles</h3><p>Notre premier harnais, c’était une dizaine d’agents spécialisés : architecte, tech lead, reviewer. On est passés à un seul agent et à des scripts qui vérifient les règles à la place du prompt (<a href="https://claude.com/resources/articles/building-agents-when-to-fold-subagents-into-your-main-agent-loop">ce qu’Anthropic recommande aussi désormais</a>), parce que chaque nouvelle version du modèle intègre ce qu’on faisait à côté, et que notre bricolage freinait au lieu d’aider. Sans comprendre les fondamentaux, on copie l’outillage de quelqu’un d’autre, et il finit par nous ralentir.</p><h3>6. On devient des garagistes de l’IA</h3><p>Ce piège ressemble à du travail. On passe ses journées sous le capot : un nouveau skill, un hook de plus, un harnais qu’on polit. Tout ça est passionnant, et tout ça se mesure en commits. Pendant ce temps, le produit qu’on doit livrer à nos clients n’avance plus. L’outillage est un moyen : le jour où il devient le sujet, on a changé de métier sans s’en rendre compte.</p><h3>7. On se crame</h3><p>Avant, on attendait d’un·e dev qu’iel connaisse son périmètre par cœur. Avec l’agentique, les gens couvrent de plus en plus de périmètres, enchaînent beaucoup plus vite, et n’ont plus le temps d’imprimer. Certain·es sont en détresse, pas parce qu’iels ne suivent pas l’outil, mais parce qu’iels n’arrivent plus à consolider leurs modèles mentaux. La charge cognitive est devenue le goulot des équipes. Il faut fonctionner autrement : accepter de ne plus tout retenir, et pouvoir remettre un sujet en tête en quelques minutes, par exemple avec un agent qui nous interroge au lieu de nous répondre, comme dans <a href="https://medium.com/@tpierrain/back-in-the-equation-218cecb4c2cd">le harnais de conception</a> que j’ai décrit récemment.</p><h3>8. On mesure la vitesse, rarement l’impact (et jamais le rework)</h3><p>C’est le piège qui rend tous les autres invisibles. Les tableaux de bord affichent du code produit, des PR fusionnées, des tickets fermés : de l’output, pas de l’outcome. Un test vert aussi : c’est de l’output, pas un produit que quelqu’un a lancé et utilisé. <strong>Beaucoup de devs livrent en prod sans avoir jamais ouvert l’application, et les défauts sont trouvés plus tard, par d’autres</strong>. Personne ne compte le rework, ni ne rapproche la vélocité de l’impact métier. Alors on peut être à fond et faire du surplace sans que personne ne s’en aperçoive. À pleine vitesse, zéro distance.</p><h3>La bonne nouvelle</h3><p>Il y a plein de solutions à tous ces problèmes, et aucune ne consiste à changer de modèle d’IA. Je vous en parlerai dans mon prochain article. Stay tuned!</p><p><em>Je suis VP of Technology chez </em><a href="https://shodo.io/"><strong><em>Shodo</em></strong></a><em>, où l’on aide les équipes à réussir leur transformation agentique sans perdre ni la maîtrise du métier (Domain-Driven Design) ni l’impact (Product &amp; Flow). Si ces pièges vous parlent, parlons-en.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8d85f9550f4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Five useful things and zero progress]]></title>
            <link>https://medium.com/@tpierrain/five-useful-things-and-zero-progress-3b79d8e63dd3?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/3b79d8e63dd3</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[focus]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Sat, 24 Oct 2026 10:13:58 GMT</pubDate>
            <atom:updated>2026-10-24T19:35:05.913Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Your AI has a new good idea every thirty seconds. It is one of the reasons so many companies feel faster and deliver less. Here is how to stay focused and keep your own goal in sight.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*V0sG6zq_wUjBvTBMBF0Epw.jpeg" /><figcaption><em>My captain’s log. A few euros, no updates, no suggestions. My way.</em></figcaption></figure><p>A few weeks ago, I lost a whole afternoon. Not because of a bug, and not because of too many meetings. I lost it while working, with Claude, head down. And around 6 pm, when I finally looked up: wait, wait, wait. What was my goal, at 2 pm?</p><p>I knew it very well. It was even written down. <strong>I am currently building an agentic software factory for my client</strong>, and we have just opened it in beta to a handful of volunteers. The goal of the afternoon was one of the big, deep pieces of work on that factory, the kind you do not finish in one hour. I did not touch it. Not one line.</p><p>Here is what happened instead. A first piece of feedback from one of the beta users arrives on Slack: “it would be nice if…”. Ten minutes, fixed, and I am happy: he can see that her feedback is taken seriously, he will come back. While I am there, Claude slips in: “by the way, while we are at it, we could also…”. True, it would be nice. And it will not take long. Done. A second piece of feedback comes in. Then a small optimization of my own, because it is convenient, I am already in there and ideas keep coming. Then a third piece of feedback. And so on until the evening: five or six small things delivered, all useful, all appreciated, and none of them was the one I had come to do.</p><p><strong>The worst part is that every detour had a good reason.</strong> I wanted the people testing the factory to feel that their feedback was handled fast, so that they would want to use it more often and earlier. That is change management, and it is right. But it was not the goal of the afternoon. I spend my days explaining to teams how to stay in control of their AI, and I got caught like a complete noob. And I do not think I am an isolated case. In the companies I visit, everyone has the feeling of going faster, and the projects that matter are not moving forward any more than before: AI mostly speeds up tasks that probably should not have been done at all.</p><h3>Getting sidetracked</h3><p>You know the mechanism. You are working on a topic. Claude answers, and on the way it adds: “it would be nice to do this too, what do you think?” And it is true, it would be nice. Then another idea bounces off the previous one. Then a third. Topics pile up like a stack you never climb back down. With AI, <strong>the last one who spoke wins.</strong> And the last one who spoke is almost always the AI.</p><p>Nobody forces you. You just get led around, gently, from good idea to good idea, far from what you came to do. A colleague gave me the right image: it is a thread, and you do not control the thread you are pulling, because it is infinite.</p><p>This is not new. What is new is that <strong>everything is now a few minutes away.</strong> Nothing costs enough anymore to make you hesitate. <strong>And time flies when things happen: with an AI, something happens every thirty seconds.</strong> That day, my afternoon beat to the rhythm of Claude’s suggestions and Slack notifications, not to mine. The young Thomas I used to be would have been eaten alive.</p><p>And it has a price. Too much information, too many details, too many decisions, too many questions: <strong>like in boxing, when you take too many hits, you end up getting beaten more often, and you lose track of what needs to be done</strong>. And once you have lost track, you stop leading. You just approve whatever comes through. It is exhausting, and it is exactly how you end up producing slop: mushy code that you approved without reading it. <strong>Every “good idea” you accept is also one more topic open in parallel.</strong> Since we launched AI at my client, I keep repeating the same rule: two topics in progress per person, no more. I have seen a developer running with five Claude Code windows open. He was not going five times faster. And on that famous afternoon, I was no better.</p><h3>Notebook against the machines</h3><p>After that afternoon, I brought back an old friend: my small notebook. <strong>A worn lavender cover, an erasable Legami pen</strong> (very important) slipped between the pages. A few euros. <strong>It has not left my desk since, and it is what keeps me focused, and in control.</strong></p><p>The principle fits in one line. Before I start, I write down the goal for the next two hours, or for the morning, and I keep it in front of my eyes, next to the keyboard. Not a list: one line. On today’s page, for example, it says: “Detect when the developer proposes to implement something that already exists elsewhere on the platform”. It is my captain’s log.</p><p>When Claude offers me a great idea that is not in my goal, I answer: “Good idea. Keep it on the side, but not now.” And Claude is the one who writes it down. <strong>My notebook is not there to store Claude’s ideas</strong>: Claude is very good at filing them away by itself. <strong>My notebook is for my own direction.</strong> My steps, what I want to do, and what I expect from it.</p><p>And this is where it works: as long as an idea is not written anywhere, a small voice keeps running in the background, “whatever you do, do not forget”. Once it is written down, the voice goes quiet. My head is free for what I had decided to do.</p><p>It feels a bit old school, I know. A notebook and a pen, facing agents that write code on their own. But Romain, the colleague who told me about the infinite thread, is much younger than me, and he keeps the same kind of notebook, “to stay on the critical path”. Another one closes Slack, writes down what he is going to do in his notebook, holds on for two hours, then reopens Slack. Small, simple things that have much more leverage than you would imagine.</p><p>So next time you look up at the end of the day, ask yourself the question: <strong>did I work on what matters, or on the extras?</strong></p><p><strong>If you are not sure, buy yourself a notebook.</strong></p><p>This small story sits next to a longer series on the agentic software factory: <a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988"><strong>The hardest part begins when it works</strong></a> and <a href="https://medium.com/@tpierrain/back-in-the-equation-218cecb4c2cd"><strong>Back in the equation</strong></a>, with a third article to come.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3b79d8e63dd3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Back in the equation]]></title>
            <link>https://medium.com/@tpierrain/back-in-the-equation-218cecb4c2cd?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/218cecb4c2cd</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[harness-engineering]]></category>
            <category><![CDATA[harness-design]]></category>
            <category><![CDATA[domain-driven-design]]></category>
            <category><![CDATA[claude-code]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Sat, 17 Oct 2026 19:05:35 GMT</pubDate>
            <atom:updated>2026-10-18T13:54:48.674Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><strong><em>TL;DR.</em></strong><em> Reading and approving all day long, the AI pushed us out of the equation, and slop and lack of impact exploded. My proposal to become effective (and less miserable) again as developers: a design harness that flips the direction of the conversation. The tool asks, the human produces.</em></blockquote><blockquote><em>Second of three articles taken from my keynote “The hardest part begins when it works”. </em><a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988"><em>The first one</em></a><em> set the diagnosis: when agentic AI works, we become passive. This one tells my first answer, a design harness. The third one will go one level up, to the software factory in an agentic world, and the new role developers can play in that world.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4Sfebc8o7hfFE-8bjKXxuQ.png" /><figcaption><em>Ulysses at Calypso’s. Seven years of Chronos. One single Kairos, the day he takes the boat back.</em></figcaption></figure><h3>The teams that do great with AI know their domain and avoid passivity</h3><p>In <a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988"><strong>the first article</strong></a>, I told what happened to us the day agentic AI worked: reading and approving all day long, still in the room, no longer in the equation. And one observation that has been my compass ever since: the teams that do great with AI are the ones that master their craft and their business domain.</p><p>What I had not said is that the two are connected. Everything that makes us passive disengages us, and when we disengage, we lose mastery. Some of the people who had lost their grip on their domain were exactly the ones who had automated as much as they could. Including what they should never have automated: understanding what is asked of them, deciding where the code will live, saying what “done” means. Passivity makes us lose mastery, and mastery is exactly what makes the difference later, when we frame the work of AIs. If we are bad at this, we can optimize execution as much as we want: we will just produce slop faster.</p><h3>The solution: a conversational DESIGN harness</h3><p>Two things to fix at once, then:</p><ul><li>get us active again,</li><li>and get us back in control of the domain and the product we work on.</li></ul><p>My answer is a DESIGN harness. A harness, as in <a href="https://medium.com/@tpierrain/knowing-when-to-capitalize-instead-of-just-fixing-the-harness-makers-craft-d2afc7a2fb60">the harness maker’s craft</a>, is everything the agent re-reads before working for us: rules, plans, guardrails, skills. Most harnesses are implementation harnesses: they help the agent write good code. A design harness sits upstream. In the keynote, I define it as everything between the feature the product team hands us and the Definition of Done tests of each slice.</p><h3>A harness for the humans, not for the agents</h3><p>It flips the usual role: it does not frame the agent, it guides us, the humans, <strong>forcing us to ask the right questions at the right moment, precisely in the activities we should never have automated</strong>:</p><ul><li>understanding the domain and the business,</li><li>designing the architecture and the product.</li></ul><p>One move, two effects: active again, and back in touch with our product.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M9dkGdv0MsHlrAOpwK4oxA.png" /><figcaption>From my keynote: the sentence from Jordan Nourry, managing director at Shodo Studio, that inspired me to build Slicer.</figcaption></figure><p>Slicer is my design harness, with 4 moments and 2 tempos. The moments: understand, design, slice, set the Definition of Done. Nothing new, this is the job. We already did it before AI, and we even did it better. What changes is who holds the pen.</p><p>The first two moments are <a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6"><strong>Kairos</strong></a>, the time to understand, yours. The tool asks, you think, and you write in your own words. It takes the time it takes, and it is the only place where a mistake still costs nothing.</p><p>The next two are Chronos, the time that flies, its own. The tool proposes, writes, counts, re-reads, and wakes you up to decide. You no longer write: you decide.</p><p>And the meetings between humans stay, with no agent in the room: event storming when there are still gaps, refinement with the PM, always. Slicer does not replace them. It makes sure we get there with something to say, rather than with a summary to approve.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Hd2FIvrZBYBYFB38gbE8iA.png" /><figcaption><em>The four moments, and who holds the pen each time. “Claudius” is the nickname we give to Claude.</em></figcaption></figure><h3>The “Understand” moment</h3><p>Understand is done solo, no exception: each person on their own, and we then compare the restatements and the perspectives of everyone who did it. So you open Slicer with the product ticket. It does not summarize it for you. It asks: “Tell me in two sentences what you think this feature does, and for whom.” And it waits.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Nmx6DDxpsLxN7Nx7zKmWXQ.png" /><figcaption>One question, your sentence, and a one-line follow-up that tells you where to look, not the answer.</figcaption></figure><p>You write, it follows up, and the boxes turn green one by one. When only one is left in yellow, the vocabulary, comes the last test: it asks you to retell the whole feature, from memory, without reopening the ticket.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*omXOsbBEJFaeJW1t3zkMkw.png" /><figcaption>Four boxes green, one still yellow: the vocabulary.</figcaption></figure><p>I restated by voice (Superwhisper) everything I had kept in mind. Here is what it detects: it compares my words with what the PM wrote, and for each gap, it decides: the ticket says the same thing as you / you drift away from the ticket on this… / you propose something new (to be clarified if relevant). In the fictional upsell case I show you here, one single word gave me away.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VPWhUVRUfu9WZIDsTrvHsA.png" /><figcaption><em>Line by line, my word against the PM’s.</em></figcaption></figure><p>“Subscription” four times in my mouth, and the ticket never says it. And yes, the one who got it wrong was me, again.</p><blockquote><em>A wrong word at the Understand moment becomes logic in the wrong place at the Design moment.</em></blockquote><h3>The “Design” moment</h3><p>Design is the same conversation on another question: now that we know what to do, where do we do it, and how (business architecture and technical architecture)? This one, on the contrary, is better done together: we sketch the solution and the architecture as a team. The tool has access to the code and to the whole system, and it asks. You are the one who chooses, and above all, you are the one who writes down what you rule out, and why. And since everything we weighed is in the conversation, the agent suggests and writes the matching ADRs (Architecture Decision Records) when it is relevant.</p><p>An ADR is for the decisions that would be costly to question again: no need to write one for everything, even if AIs love to generate text.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dxYc17mb77WZLKq0JPDXJw.png" /><figcaption>The tool knows the system and questions the name we had chosen. Your turn to answer.</figcaption></figure><h3>A Domain-Driven Design moment, rather</h3><p>Under the hood, Design draws on all the wisdom of strategic Domain-Driven Design, so dear to my heart, without ever using its jargon: it simply forces us to ask ourselves the right questions. Who is responsible for what, which subdomains talk to each other and how, which model depends on which other one. And when we move to technical architecture, it draws the same way on all the know-how we have built up: when a modular monolith (in Hive mode) is the right choice, when it makes sense to extract a service, when a worker is what you need.</p><p>The whole challenge of Understand and Design is in this balance: ask enough questions to be relevant, but not too many either, so that it stays acceptable. We want to avoid sessions as long and tedious as the ones we sometimes go through with Matt Pocock’s /grill-me.</p><h3>Then the tempo changes</h3><p>Once we have done the “Understand” and “Design” phases, which will have kept us busy, the AI speeds up and does a bit more of the work for us.</p><p>The third moment is slicing: cutting the feature into several increments of value (at least to go and get feedback), that is, user stories for which it creates the tickets. For this, it only asks us to choose between several go-to-market options, each with its arguments, to be validated together with the Product Manager.</p><p>The fourth moment is when it suggests Definition of Done (DoD) tests for each user story. This moment matters, because the DoD tests will be the working base of the implementation harness agents (back or front) we then use to write the code. Once we have iterated with it on the list of tests, written in natural language but as concise as possible, Slicer’s last deliverable is to generate the code of these DoD tests, and the contracts or walking skeletons of the code to come.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ns2yxvS55uz4mFj7Zp1aYw.png" /><figcaption>Another feature, the bulk deletion of fixed-asset records: 33 Definition of Done tests, by type, in plain language. Not a single line of code yet.</figcaption></figure><h3>Preparing the ground for slop-free implementation</h3><p>One last word about these Definition of Done tests, because everything rests on them. AIs are now very good at writing clean code, at least the frontier models like Opus 5.5, but they are still incredibly bad at writing tests. They always tend to cut corners: rephrasing and changing the tests to make them pass, rather than doing the work needed for the implementation to turn them green. They also love to write what we call tautological tests: tests that only describe what the code already does, so they are always green, and completely useless when the code does not do exactly what we want it to do.</p><p>This is why the Definition of Done tests written by Slicer must be protected: <strong>the implementation harnesses (back and front) that write the code for us must never be able to change them</strong>.</p><p>But we will see that in the third and last article, about the agentic software factory, of which the design harness is only one element.</p><p><em>The first article: </em><a href="https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988"><em>The hardest part begins when it works</em></a><em> (October 11, 2026). To date the thread: </em><a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6"><em>Your agent gives you Chronos. It cannot give you Kairos.</em></a><em> (August 26, 2026).</em></p><p><em>Keynote given at Thales’ cortAIx Club on October 1, 2026 and at Naboo on October 6, 2026.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=218cecb4c2cd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The hardest part begins when it works.]]></title>
            <link>https://medium.com/@tpierrain/the-hardest-part-begins-when-it-works-408371946988?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/408371946988</guid>
            <category><![CDATA[harness-engineering]]></category>
            <category><![CDATA[domain-driven-design]]></category>
            <category><![CDATA[agentic-software-factory]]></category>
            <category><![CDATA[product-engineering]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Sun, 11 Oct 2026 09:08:45 GMT</pubDate>
            <atom:updated>2026-10-17T19:08:11.068Z</atom:updated>
            <content:encoded><![CDATA[<p><em>More than six months of agentic AI in a fintech, with nearly 75 very experienced developers. What happens once it works, and why the real risk is not the bugs.</em></p><blockquote><strong>TL;DR.</strong> This is the first of three short articles based on my keynote “<strong>The hardest part begins when it works</strong>”: more than six months of agentic transformation in a scale-up, with very experienced people. Sudden adoption, incredible results, bottlenecks moving one after the other until they reach the product team, and then the backlash for everyone: the passivity trap, which AI pushes us into a little too easily. To face this, my first answer is a design harness that reverses the relationship. It works as a conversation, where the AI asks the questions (Socratic style) and the humans propose, actively.</blockquote><blockquote>This article introduces the problem. <a href="https://medium.com/@tpierrain/back-in-the-equation-218cecb4c2cd"><strong>The second one details the principles of this design harness</strong></a>. The third and last one will talk about the logical next step: <strong>the agentic software factory we are building right now.</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tXgZhCX3BeRl5P2vPtO3ag.png" /><figcaption><em>From my keynote. The group on the ridge thinks it is almost there. It is not.</em></figcaption></figure><p><em>“You have a few days to get used to it. Starting next Monday, you no longer use your IDE: you will work in agentic mode with Claude Code in the command line (CLI), as we saw together in these two sessions. This applies to everyone and to every team.”</em></p><p>This is how our second mob programming session with the whole tech team of my client ended, in late March 2026. The person who said this was Hossam, the CTO at the time, with me at his side. Who am I? Thirty years as a developer and consultant, VP of Technology at Shodo and, since February 2026, part-time Head of Engineering at this fast-growing fintech in accounting and tax, with nearly 75 very senior developers.</p><h3>Late March: everybody in the pool</h3><p>At this client, the adoption of agentic AI was not gradual. It was sudden. Everyone at the same time, in the command line, outside the IDE. No volunteers-first, no trial period: so that each person would drop their habits and not miss the experience. One single, mandatory life jacket, our very first agentic harness, designed with the former CTO, me and a few engineering managers and tech leads, and we all jump into the pool together. The goal was to force everyone to focus on discovering what agentic development really is, without losing weeks comparing models or letting each person pick their own tools and approach. We are in a fintech, a scale-up, and delivery does not wait.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dyYfUlii8xTIlE4fZNR8HA.png" /><figcaption><em>One life jacket for everyone, and nobody stays on the edge of the pool.</em></figcaption></figure><p>The results were incredible. In early May, one month after the kick-off: 27% more user stories delivered per developer. And contrary to what I was reading on social networks, going faster with AI did not make bugs explode. Quite the opposite: 49% fewer bugs. Six months later, in September, we are at 75% more user stories delivered per developer, and 40% fewer bugs. Almost x2.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nwo_v-curesLXSCHlK7afA.png" /><figcaption><em>Six months after the kick-off. Almost x2, and the bugs did not follow ☀️</em></figcaption></figure><h3>From one bottleneck to the next</h3><p>Very early, the bottleneck was no longer writing the code. It was reading it. Then the bottleneck moved again, twice.</p><p>Pull request reviews without end, handed over to agents, and then, on July 1st, the end of blocking cross-team reviews: with Michael, the new CTO, we want teams to be as autonomous as possible. As I told them: “No more gated code reviews. Long live code reviews after the fact, like when you do continuous delivery the advanced way.” So the code goes to production reviewed by Claude and by the harness, and a quality watch or humans read it afterwards, in batches, and only when it is really useful. We also ask people to let go of the code a little:</p><blockquote>if the review shows no problem of architecture, scalability or performance, or security, then it is “good enough” to ship. No more endless code review debates about cosmetic details.</blockquote><p>Reading the code was no longer the only problem; production support became one. One of our talented developers built a tool that, from a simple message like “something is wrong on this screen”, reads the APM, the logs, the database and the code, and proposes a pull request. A team working on large business flows used to spend 40% of its time on run and support. It now spends 5%. <strong>That leaves even more time to ship value.</strong></p><p>Production support was no longer the main problem, so the product became one. Backlogs empty out, developers wait: when tech speeds up, the wave hits the product team. So in July, we help our friends in product build their own agentic harness. It covers everything from discovery to writing PRDs for initiatives, and epics and features ready for the squads.</p><p>You could think we were done accelerating.</p><h3>Running very fast. And going nowhere.</h3><p>This is when the difficulties come back on the tech side, and they do not look like the previous ones. Some teams do great, others struggle. The product team is the one telling us: in some teams, people are no longer very involved in understanding the business. Refinements happen by proxy and lose their value, because the developers’ Claudes are asking questions to the product team’s Claudes. Splitting features into user stories happens all by itself, and when it does, we become AI mechanics, not developers who are more involved in the product and the business, as we wanted at the start.</p><p>Meanwhile, former colleagues tell me it is the same in their company. Everyone feels they are going faster, but not always with more impact for customers. And very often, this leaves the C-level puzzled…</p><p>The cause is built into working with LLMs, and with Claude in particular. Read and confirm. Read and confirm. Read and confirm. Over time, you become passive, and it wears you out. Our agents give us Chronos. Too often, they take our <a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6">Kairos</a> away. Accepting Claude’s recommended solutions becomes too tempting, and disengaging.</p><p>Lisanne Bainbridge wrote it in 1983: we automate the easy tasks, and we leave the hardest one to the human, which is monitoring. But monitoring a system that works is the worst task you can give to a brain. You are still in the room. You are just no longer in the equation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VlmDRRXsG6oPWNqE9W5jFQ.png" /><figcaption><em>Bainbridge, 1983. Forty years later, we gave ourselves the control tower job.</em></figcaption></figure><p>Some teams felt disengaged, and much less effective. It produces slop, and it reworks more than others. Business knowledge is not always there. The real risk is not the bugs: it is the understanding debt, and the disengagement. The real trap is becoming more and more passive.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9n1PCFJGpplwbxRO4VJlHw.png" /><figcaption><em>Read and confirm, read and confirm. The person is still there. Sort of.</em></figcaption></figure><h3>AI asks the questions, humans decide</h3><p>One observation: the teams that really do great here are the ones whose developers master the domain and the product. You can only frame well what you understand. So here is a question I now force myself to ask about every tool we adopt or build: does this tool make me produce and rephrase, or just validate? A tool that makes you produce the decision keeps you in the equation. A tool that makes you validate a result takes you out of it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NU8lZgXOGtu0FcycSZq2cg.png" /><figcaption>A message sponsored by Captain Obvious 😉</figcaption></figure><p>To fight passivity, I proposed a design harness to our teams: Slicer. It was born after a conversation, fruitful as always, with my colleague Jordan Nourry, managing director at Shodo Studio (they deliver fixed-price projects and are true specialists of agentic work): “At our place, AI asks the questions, humans decide.” Slicer was born from this inspiring sentence. The goal of Slicer? To get people back on the path of mastering the product and the business. The means: a conversational mode where everything is designed so that the AI questions us, and we have to contribute.</p><p>Contribute to what? First, to explain what we understood from the initiative or the feature, in our own words, without rereading the ticket, but by talking with a great coach. I played the developer in a hurry who had not read it: the tool did not let me through, and one single word gave me away. I said “subscription” four times in my rephrasing; the PM’s ticket talked about an “expression of interest”. With my word, we would write into the offers repository. With hers, we send an email. It is not the same feature. Slicer forces us to ask ourselves the right questions, and even to practice Domain-Driven Design (DDD), which is so dear to me, without noticing, and without jargon.</p><h3>Four crucial moments</h3><p>This harness has four moments:</p><ol><li>Understand the feature or the initiative.</li><li>Design the architecture (functional and technical).</li><li>Slice into value increments, for a good go-to-market and early feedback.</li><li>Define the Definition of Done tests of each slice, and have them generated.</li></ol><p>We have been experimenting with it here and there at my client for about a month, and it will be the subject of the second article.</p><h3>Stop validating!</h3><p>The hardest part begins when it works. Because when it works, we stop looking. We validate. We leave the equation without noticing.</p><p>So starting tomorrow, let the AI question you (Socratic mode), instead of spending your time reading its proposals and validating them.</p><p><a href="https://medium.com/@tpierrain/back-in-the-equation-218cecb4c2cd"><strong><em>The second article details Slicer, the design harness</em></strong></a><em>, and its four moments. The third will take one step back: the software factory in an agentic world. To date the thread: </em><a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6"><em>Your agent gives you Chronos. It cannot give you Kairos.</em></a><em> (August 26, 2026). Keynote first given at Thales on October 1st (early draft 🙂), 2026, and at Naboo on October 6th, 2026.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=408371946988" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Did you notice? CLAUDE.md feeds those who produce and judge, not those who explore]]></title>
            <link>https://medium.com/@tpierrain/did-you-notice-claude-md-feeds-those-who-produce-and-judge-not-those-who-explore-199fe0505381?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/199fe0505381</guid>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[harness-engineering]]></category>
            <category><![CDATA[context-engineering]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Sun, 13 Sep 2026 17:08:11 GMT</pubDate>
            <atom:updated>2026-09-13T17:30:32.346Z</atom:updated>
            <content:encoded><![CDATA[<p><em>TL;DR: I stumbled on this detail of Claude Code by chance, and it changed how I write my CLAUDE.md files. Sharing it in case it saves you the same surprise.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8B5xf227tYLX_kqIqV1F1w@2x.jpeg" /></figure><h3>The scouts never got the memo</h3><p><strong>Claude Code now spawns sub-agents on its own. Two of them, Explore and Plan, fire constantly</strong>: every time the agent looks around the codebase, every time plan mode gathers context.</p><p><strong>These two do not load your CLAUDE.md. By design</strong>, and no setting changes that. Every other agent, the implementer, the general-purpose sub-agent, your custom reviewer, loads it.</p><p>So the agents that write and judge code see your rules. The agents that search the codebase never will.</p><h3>Rules for builders, not tour guides</h3><p>Most CLAUDE.md files I have seen, mine included until recently, are guided tours: directory layout, where each module lives, how to run the build. That is content for explorers. And explorers, now delegated to sub-agents, are precisely the ones who will never read it. The implementer, meanwhile, rebuilds that map in a few seconds of grep.</p><p>What the implementer and the reviewer cannot rebuild is your judgment: what “done” means here, what a good test looks like, which patterns get refused in review, which invariants must never move. That content has nowhere else to live.</p><p>So: what helps an agent act and evaluate goes in CLAUDE.md; what helps it orient itself goes elsewhere. Build and test commands stay, not for the explorer but because producer and judge need to know how to reach green.</p><p>Same rule for nested CLAUDE.md files in your modules: local rules, not a local map. What you want an explorer to discover belongs in a README or an ADR. Those are plain files, Explore will find them. And if a rule absolutely must reach Explore, there is exactly one channel: the prompt you give when delegating.</p><h3>Reason why Anthropic quietly rewrote /init</h3><p>The original /init generated a map: commands, key directories, detected conventions. The new interactive flow (behind CLAUDE_CODE_NEW_INIT=1) runs on one rule: only include what Claude would get wrong without it. It even ships /init-verifiers, scaffolding skills dedicated to checking changes. Feeding the judges, again.</p><h3><strong>Time for us to change too</strong></h3><p>Your CLAUDE.md is not onboarding documentation. It is a contract for those who produce and those who judge.</p><p>So, what is in yours that only an explorer should have read?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=199fe0505381" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My two modes today: Interactive to ship, Loop to explore]]></title>
            <link>https://medium.com/@tpierrain/my-two-modes-today-interactive-to-ship-loop-to-explore-f5e91a3d51a9?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/f5e91a3d51a9</guid>
            <category><![CDATA[context-engineering]]></category>
            <category><![CDATA[harness-engineering]]></category>
            <category><![CDATA[graph-engineering]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[loop-engineering]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Thu, 27 Aug 2026 06:18:54 GMT</pubDate>
            <atom:updated>2026-08-27T06:18:54.542Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>TL;DR:</strong> Interactive Mode is where our ROI is today at work. Loop and Graph Mode are where I explore, for the next level. The harness is what pays in both.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dPHhLUgZNkizpzyeY46kkw.png" /><figcaption>My two modes with AI, right now.</figcaption></figure><p>I’ve been posting a lot about Loop Mode and Graph Mode lately. Framing a choice is not the same as recommending one, so let me be explicit about what I’d actually do today.</p><h3>Two Modes, Two Bills</h3><ol><li><strong>In Interactive Mode, you stay behind the agent</strong> and steer as it goes. What it burns is your context window and your token quota, and it holds your attention.</li><li><strong>In Loop and Graph Mode, you let go</strong>: you define the harness for your loop (or your graph of agents) and the verification criteria up front, then you let it run. What it saves is your attention. What it burns is everything else.</li></ol><p>That’s the whole trade. Neither mode is more advanced than the other. <strong>They optimize different scarce things.</strong></p><h3>Where I actually am</h3><p>Still digging. So far I haven’t found the conditions that make Loop Mode reliable and efficient for me. Three walls, every time.</p><ul><li><strong>The token bill, and it’s the wall I hit first.</strong> A loop burns quota at a rate interactive work never comes close to. I’m in the red far more often than I used to be, and I’ve started hitting my weekly limits, not just the daily ones. The quota runs out long before the night does, so the run I set up to work while I sleep stops somewhere around 3am.</li><li><strong>Letting go is not free.</strong> A loop only pays off on work that is loop-shaped: a large stock, well specified, mechanically verifiable. Producing that backlog is real work, and today it’s work only a human does. The new job isn’t watching the loop, it’s building the thing the loop can chew on before you go to bed.</li><li><strong>Green doesn’t mean done, let alone done well.</strong> On my own runs, three review passes over work the loop had declared finished, green and mutation-tested, still surfaced 45 findings, one of them a release blocker. The blocker is the scary one; the other 44 are the expensive one. A loop that trusts its own verdict compounds the wrong thing overnight.</li></ul><p>Last time I wrote that <a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6">your agent hands you chronos and can never hand you kairos</a>, the moments you have to be present for, and that reviewing is a passive posture: the more you invest in the agent, the more you drift out of the work without anyone ever deciding it. <strong>A loop is that posture taken to its limit</strong>, since by construction everything reaches you downstream and finished. So a loop spends all of your kairos up front, before you go to bed. Which is exactly why the verification has to be something you built, and never something the loop declares about its own copy.</p><p>Put the three together, and the cost/benefit isn’t there yet, for me.</p><h3>Disclaimer</h3><p>Occam’s razor: between “the mode isn’t ready” and “I’m holding it wrong”, the second is by far the simpler explanation, and it’s the one I’d bet on today. I’m a few nights and a few days in, on my own repo, with my own harness. So read all of this as a report on my own runs, not as a verdict on Loop Mode.</p><h3>Nights &amp; Days</h3><p>By day, I optimize Interactive Mode, or try to. That’s the work that pays now, on real projects, with real teams. At night and on weekends, I explore Loop Mode and Graph Mode. Right now I’m collecting data, not conclusions. The findings, takeaways and learnings from those runs are coming, and that’s the context they’ll arrive in: experiments, not recommendations.</p><h3>My advice</h3><p>Secure and optimize Interactive Mode. That’s where the momentum and the leverage are right now, and that’s where most teams still have a lot of easy ground to take: sharper context, a harness that makes a fresh session cheap, verification you actually trust.</p><h3>Good News</h3><p>Everything you invest in your harness serves both modes. <a href="https://medium.com/@tpierrain/knowing-when-to-capitalize-instead-of-just-fixing-the-harness-makers-craft-d2afc7a2fb60">The harness is the shared asset</a>: it’s what makes Interactive Mode fast today, and it’s the prerequisite for Loop Mode ever paying off at all. There’s no wasted step, and no order to skip.</p><p>So: Loop Mode is worth digging into, for what’s coming. It just isn’t where your return is this month. Don’t read my enthusiasm as a suggestion to jump.</p><h3>Links</h3><ul><li><a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6">Your agent gives you chronos. It cannot give you kairos.</a>: why speed got cheap and presence did not, and why reviewing is the posture that quietly moves you out of your own work.</li><li><a href="https://medium.com/@tpierrain/what-if-clear-was-no-longer-our-job-16fe571ae206">What if /clear was no longer our job?</a>: where Loop Mode and Graph Mode come from. A context boundary can be drawn in time or in space; the two modes are what happens when you stop drawing it by hand.</li><li><a href="https://medium.com/@tpierrain/knowing-when-to-capitalize-instead-of-just-fixing-the-harness-makers-craft-d2afc7a2fb60">Knowing when to capitalize instead of just fixing — the harness-maker’s craft</a>: why the harness is capital and not maintenance, which is the whole reason investing in it is never a wasted step.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f5e91a3d51a9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Your agent gives you chronos. It cannot give you kairos.]]></title>
            <link>https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b5125a0d0f6</guid>
            <category><![CDATA[engineering-management]]></category>
            <category><![CDATA[ai-slop]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[harness-engineering]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Wed, 26 Aug 2026 15:46:07 GMT</pubDate>
            <atom:updated>2026-08-27T06:20:21.433Z</atom:updated>
            <content:encoded><![CDATA[<p><em>The Greeks had two words for time. Only one of them is getting cheaper with AI. The other one is ours to reclaim.</em></p><p><strong>TL;DR</strong>: AI made almost everyone faster. Effectiveness does not come automatically. <strong>When a team loses its grip on the business</strong> it is building for, <strong>it produces slop</strong>, and slop does not only land in the code: it lands in our heads and in our human interactions. The scarce resource is no longer time as a quantity, it is <strong>knowing which moments you have to be present for</strong>. The Greeks had a word for those moments — kairos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Wau-8uAoUCBUr4klvgkfSw.png" /><figcaption><em>And you? Autopilot, or in control?</em></figcaption></figure><h3>Chronos is cheap now. Kairos is not.</h3><p><strong>Chronos</strong> is quantitative and linear: hours, sprints, commits, tokens. <strong>Kairos is qualitative</strong>: the opportune moment, <strong>the critical point where acting actually changes the outcome</strong>.</p><p>Every number your agent improves is chronos. <strong>Kairos stays entirely on our side.</strong></p><h3>A team can be faster and less effective at the same time</h3><p>Talking with former colleagues and with friends in other companies, I keep hearing the same shape: entire engineering groups where everybody feels fast, and where very little impact comes out at the other end. <strong>Full speed, zero distance.</strong></p><h3>Less mastery of the business, more slop</h3><p>It shows up even where things are going well. I have been inside one such successful transformation for six months now, in a French SaaS scale-up, and, though they remain a small minority, some teams are starting to struggle more than others. The discriminating factor is not tooling, and it is not talent. It is domain and business awareness. <strong>Teams that have less mastery of their business domain mechanically produce more slop, and therefore more rework</strong>. It is still incredibly faster than it was before AI, but far less effective than the teams that understand their domain well.</p><h3>The slop is not only in the code</h3><p>Slop is mush, and we usually talk about it as mush in the codebase. That is only where it becomes visible.</p><p>Very often, the output of AI is verbose, so we skim it. We skim it, so we no longer really understand what we shipped, or why. <strong>A weaker understanding produces vaguer framing</strong>: vaguer instructions, vaguer acceptance, vaguer decisions. <strong>And vaguer framing produces more slop.</strong></p><p>When you are inside this loop, nothing looks like a failure. Every day feels productive. It is a treadmill: full speed, but you never move.</p><h3>Passivity is the number one enemy</h3><p>Underneath that loop runs a quieter mechanism, and it is the one that worries me most. <strong>Reviewing is a passive posture.</strong> If your whole contribution becomes reading what the agent produced, its plans, its summaries, its questions, its code, then <strong>you have been moved out of the work without anyone ever deciding it</strong>.</p><p>You are still in the room. You are just no longer in the equation. And the more you invest in the agent, the more systematically it happens: nobody writes you out, you drift out.</p><p>Indigestible output makes that drift much faster. A wall of verbose prose does not invite you in, it invites you to nod. <strong>Verbosity and passivity feed each other</strong>, and we are badly equipped for that fight.</p><h3>An asymmetric war on slop</h3><p><a href="https://x.com/dexhorthy">Dex Horthy</a>, one of the most generous and clear-headed voices on agentic coding right now, describes himself as fighting “an asymmetric war on slop”. <em>Asymmetric</em> is the important word. Producing a hundred lines of plausible mush now takes seconds. Noticing that those hundred lines solve the wrong problem takes a human being, with context, paying attention.</p><h3>Where to spend your kairos</h3><p>The useful question is not “how do I use less AI?”. It is: <strong>which moments do I refuse to be absent from?</strong> Four answers from the field, and they are certainly not the only ones:</p><ul><li><strong>work on the digestibility of what the AI sends back to you</strong>: the shape of its plans, the shape of its explanations, and the shape of the questions it asks you. We set the terms of that exchange and its verbosity, not the tool;</li><li><strong>human workshops with no agent in the room</strong>, event storming sessions for instance, whose only purpose is to align our mental models: with the business, and within the team that will steer the machines afterwards;</li><li><strong>product refinement sessions led by people, not by the agent’s questions</strong>: everyone states in their own words what they understood and what they did not. <strong>It ends only when those who will do the work can explain it back to the team and to the product manager</strong> (otherwise: rinse and repeat). It is human-based back-pressure;</li><li><strong>deliberate sessions on the business and the domain</strong>, ideally with the team running the demos themselves, which anchors both the knowledge and the engagement. <strong>Domain understanding is a performance variable now, not a comfort.</strong></li></ul><h3>Caution: None of this is a brake!</h3><p>None of these four slows the machine down. None of them asks you to generate less, or to read more. Go as fast as your agent lets you go in execution: what these 4 protect is the thinking that happens around execution, before it starts, while it runs, and after it lands.</p><h3>Producing keeps you in the work</h3><p>Now look at what they have in common. <strong>In each one of them you produce something</strong> — a shared mental model, a story someone can explain back, a demo you ran yourself, the shape of a plan — <strong>you do not review something</strong>. Reviewing puts you downstream of the work. <strong>Producing keeps you inside it</strong>. That is the difference between being present and being kept informed.</p><p>And that is why the first of the four, digestibility, is the one worth engineering. The other three cost you meetings; that one costs you a harness. <strong>The whole job of a good harness is to make the lucid mode cheap </strong>— cheap enough that you still choose it on a Tuesday afternoon, when you are tired and the fast path is right there.</p><h3>Digestibility</h3><p>This is the one I want to end on. <strong>It sounds like a comfort item, and it is not</strong>: a verbose tool quietly eats into your kairos, a little more each day. <strong>A user story, a ticket or a plan that is exhausting to read will not be read</strong>, and the decision it was meant to inform gets taken blind.</p><p>Nodding at a plan you could not restate is not approval. We need to avoid what I call <strong>the uh-huh syndrome</strong>: the exact moment the slop stops living in the codebase and starts living in your head.</p><p>I am not the only one digging here. Dex Horthy’s <a href="https://x.com/dexhorthy/status/2087569590268391897">/show-me skill</a> makes the agent explain itself with <strong>concise visuals instead of walls of prose</strong>, and it pays most on <strong>program design</strong>: discussing the shape of the code before the agent writes any of it. <strong>That is a kairos, made cheaper to attend</strong>. His reasoning was partly inspired by <a href="https://www.youtube.com/watch?v=e_6gkfTomUQ">a Coda Hale talk on intuition and attention</a>: analysing information exhausts us, while our visual cortex handles rich images effortlessly. Or, as Coda Hale puts it: software has to fit the human mind the way an axe has to fit the human hand.</p><h3>Rework is your silent alarm</h3><p>Nobody is beaten by a lack of speed any more. <strong>We are beaten by our own detours.</strong> Building the wrong thing quickly is one. Shipping code nobody understands, six months before it has to change, is the most expensive of all, and it shows up on no dashboard this quarter.</p><p>So: <strong>measure our rework, alongside our business impact.</strong> Not to blame anyone, and not as a quality metric. It is the cheapest signal we have, nobody counts it, and it is the one thing that tells us we are running on the treadmill. A rework rate that climbs is rarely a coding problem: it means <strong>the moments that decided what to build happened without us</strong>.</p><p>The machines will keep handing us chronos. They cannot hand us kairos. Measuring our detours is how we notice we stopped spending it.</p><p>Slop is speed. Mastery is velocity.</p><h3>Links</h3><ul><li>Dex Horthy, <a href="https://x.com/dexhorthy/status/2087569590268391897">the </a><a href="https://x.com/dexhorthy/status/2087569590268391897">/show-me skill</a>: “make your agent converse visually instead of in walls of prose”</li><li>ayghri, <a href="https://github.com/ayghri/i-have-adhd">the </a><a href="https://github.com/ayghri/i-have-adhd">i-have-adhd skill</a>: ten rules that make an agent lead with the next action instead of burying it in prose. Its own line: &quot;ADHD-friendly outputs. No ADHD diagnosis needed!&quot;</li><li>Coda Hale, <a href="https://www.youtube.com/watch?v=e_6gkfTomUQ">his talk on intuition and attention</a>: why analysing information exhausts us and visuals do not.</li><li>Thomas Pierrain, <a href="https://medium.com/@tpierrain/what-if-clear-was-no-longer-our-job-16fe571ae206">What if /clear was no longer our job?</a>: episode 3 of <em>Work smaller, ship fewer bugs with AI</em>.</li><li><a href="https://medium.com/@tpierrain/my-two-modes-today-interactive-to-ship-loop-to-explore-f5e91a3d51a9">My two modes today: Interactive to ship, Loop to explore</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b5125a0d0f6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Knowing when to capitalize instead of just fixing — the harness-maker’s craft]]></title>
            <link>https://medium.com/@tpierrain/knowing-when-to-capitalize-instead-of-just-fixing-the-harness-makers-craft-d2afc7a2fb60?source=rss-5a80e41668a3------2</link>
            <guid isPermaLink="false">https://medium.com/p/d2afc7a2fb60</guid>
            <category><![CDATA[ai-software-engineering]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[software-craftsmanship]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[harness-engineering]]></category>
            <dc:creator><![CDATA[Thomas Pierrain. (υѕe caѕe drιven)]]></dc:creator>
            <pubDate>Sun, 23 Aug 2026 15:51:27 GMT</pubDate>
            <atom:updated>2026-08-27T06:21:07.320Z</atom:updated>
            <content:encoded><![CDATA[<p><strong><em>TL;DR</em></strong><em>: with an AI coding agent, incidents happen every day. You can fix them one by one, and pay for the same diagnosis again and again. Or you can capitalize: turn each incident into an asset (a rule, a guardrail, an instrument) that pays you back every time the incident does not happen again. We will also see 3 pitfalls to avoid, so the capital does not turn against you. Knowing when to capitalize instead of just fixing — that’s the harness-maker’s craft.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Qrej4Vl2Cf3K0xApvxh_3w.png" /><figcaption><em>A job of the future, established 1850</em></figcaption></figure><p>A few days ago, I joked online: given the time I spend on the harness of my AI agents (the rules, the plans and the written guardrails they re-read at every session), I should change my LinkedIn title to “harness maker” (“<strong>bourrelier</strong>” in French) — the craftsman who made and fitted the harnesses of draft horses, so that the animal would pull straight. The job of the future, established 1850.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l9ppmsTqc3h9vhLYsvTgIA.png" /></figure><p>Since then, I have come to believe the joke describes a real craft, and that it fits in one sentence: <strong>knowing when to capitalize instead of just fixing</strong>.</p><p><strong>Three situations I lived through, all in the same weekend</strong>, to show the difference.</p><p>One thing to know before we start, because everything else follows from it: <strong>an agent restarts amnesiac</strong>. From one session to the next, it only knows what the files tell it.</p><h3>Night freight</h3><p><strong>The incident.</strong> I am currently exploring “loop engineering”: framing the work of a coding agent well enough to let it run in a loop, autonomously, including at night. It works alone, cycle after cycle, and each cycle ends by scheduling the next one, like winding up an alarm clock; I review in the morning. One morning, a surprise: the session had stopped at 3 a.m. No crash, no error: the last iteration had simply forgotten to wind the alarm.</p><p><strong>The fix.</strong> Restart it that same evening (if I had been in front of my screen or my phone). Ten seconds, perfectly legitimate. And nothing prevents the same silent night from happening again next week.</p><p><strong>The asset.</strong> Three lines carved into the plan (the Markdown file that drives the agent, the one it re-reads at every iteration): “re-arming the alarm is the last action of every iteration”. Cost: three minutes, once. Since then: not one more night lost this way.</p><p>That is the whole difference. <strong>Fixing is an expense</strong>: the value dies with the incident. <strong>Capitalizing is an investment</strong>: the same incident produces an asset (a rule, a guardrail, an instrument) that pays you back every time the problem does not come back. And the cost is almost the same: in an incident, the expensive part is the diagnosis.</p><blockquote><strong><em>Fixing without capitalizing means buying the diagnosis at full price and throwing away the receipt.</em></strong></blockquote><h3>My agent is called Dory</h3><p><strong>The incident.</strong> One morning, my agent asks me a question we had settled the day before. I snap at it: “it is as if you learned nothing and remembered nothing”. Its diagnosis was worth more than my anger: my answer was indeed written in the plan. But the progress summary at the top of the file, three hundred lines above it, still said “decision pending”. A fresh, amnesiac session reads that summary first: the answer was on the disk, and invisible.</p><p><strong>The fix.</strong> Answer again. Thirty seconds, and the question would have come back at every session.</p><p><strong>The asset.</strong> Repairing the mechanism itself: the state of a piece of work now lives in one single place, and everything else points to it. Measured gain: resuming work used to require opening eight files, each repeating a piece of the state; it is now one.</p><p>Note that this incident was not a breakdown: it was a friction, something you suffer again and again. The best signals for capitalization rarely look like bugs. One guardrail, though: <strong>not everything deserves to be capitalized</strong>. One question filters: does this failure belong to a class, can it happen again? If not, fix it and move on. <strong>Capitalizing on one-off events means building yourself a cathedral of guardrails</strong>: an impressive pile of rules, costly to maintain, that protects against accidents that will never happen again, and that ends up slowing down every session. The asset becomes a liability.</p><h3>Kill the Hydra, not its heads</h3><p><strong>The incident.</strong> A recurring problem (the state of my plans going stale in silence) had already received five mechanisms: a rule, an amendment to the rule, a guardrail (a script that blocks the end of a session until the relevant files have been re-read), an exception to the guardrail, a variant of the exception. And the problem kept coming back.</p><p><strong>The fix.</strong> A sixth mechanism to prevent the n-th consequence of the root cause, proposed by Claude.</p><p><strong>The asset.</strong> A study, not a mechanism: I asked the agent to count instead of arguing. The verdict, counted over three weeks of plans: 84% of the progress information was written as free prose, outside the checkboxes and the slots designed for it. My five mechanisms were treating symptoms; the cause was the very format of my plans. Changing it (state now has only two allowed forms, a checkbox or a line in the progress summary; everything else is narrative) made three of the five mechanisms useless.</p><p>Notice the progression across the three stories: the first incident produced a rule; the second repaired a structure; the third removed mechanisms by fixing the cause. Capitalizing does not always mean adding something.</p><h3>3 pitfalls to avoid</h3><p>This story taught me that capitalization has failures of its own. Three ways to stagnate, worth watching:</p><ol><li><strong>forgetting the product</strong>: the harness gets polished while the thing you have to ship stops moving — the meta-work is comfortable, because in it you are always right;</li><li><strong>treating symptoms instead of the root cause</strong>: failures keep coming back, always from the same class as the ones already covered; each new mechanism covers one more consequence, never the cause;</li><li><strong>letting the harness ossify</strong>: rules whose reason has been forgotten, guardrails that raise false alarms and end up ignored.</li></ol><h3>A job of the future, established 1850</h3><p>With a coding agent, incidents happen every day. Two postures: fix as you go, and pay for the same diagnosis again and again; or treat each incident as raw material. The diagnosis is already paid for anyway; the only question is what you buy with it.</p><p>Anyone can stitch a broken strap. The harness-maker’s job is to make sure it never breaks the same way twice. This is craft.</p><h3>Links</h3><ul><li><a href="https://medium.com/@tpierrain/your-agent-gives-you-chronos-it-cannot-give-you-kairos-1b5125a0d0f6"><strong>Your agent gives you chronos. It cannot give you kairos</strong></a>. — what AI keeps making cheaper, what it never will, and the one number I would like us to start watching.</li><li><a href="https://medium.com/@tpierrain/my-two-modes-today-interactive-to-ship-loop-to-explore-f5e91a3d51a9"><strong>My two modes today: Interactive to ship, Loop to explore</strong></a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d2afc7a2fb60" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>