<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Haoyu’s Substack]]></title><description><![CDATA[My personal Substack]]></description><link>https://www.zhahaoyu.com</link><image><url>https://substackcdn.com/image/fetch/$s_!1d2c!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be51595-0bb6-42b2-8115-7841eb3b335f_144x144.png</url><title>Haoyu’s Substack</title><link>https://www.zhahaoyu.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 02 May 2026 11:41:00 GMT</lastBuildDate><atom:link href="https://www.zhahaoyu.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Haoyu Zha]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[haoyuz@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[haoyuz@substack.com]]></itunes:email><itunes:name><![CDATA[Haoyu Zha]]></itunes:name></itunes:owner><itunes:author><![CDATA[Haoyu Zha]]></itunes:author><googleplay:owner><![CDATA[haoyuz@substack.com]]></googleplay:owner><googleplay:email><![CDATA[haoyuz@substack.com]]></googleplay:email><googleplay:author><![CDATA[Haoyu Zha]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Rethinking Software Engineering Teams]]></title><description><![CDATA[AI tools aren't the bottleneck. Your org structure is.]]></description><link>https://www.zhahaoyu.com/p/rethinking-software-engineering-teams</link><guid isPermaLink="false">https://www.zhahaoyu.com/p/rethinking-software-engineering-teams</guid><dc:creator><![CDATA[Haoyu Zha]]></dc:creator><pubDate>Mon, 02 Mar 2026 21:58:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1d2c!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be51595-0bb6-42b2-8115-7841eb3b335f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Something interesting is happening across the industry right now.</p><p>Teams gave their devs Claude Code. Engineers started writing code at 5x the old pace. Features that used to take a sprint were getting drafted in a day.</p><p>But then a quieter question started surfacing:</p><p><em>&#8220;If devs are writing code 5x faster... why aren&#8217;t we shipping 5x faster?&#8221;</em></p><p>Because writing code faster and shipping products faster are two very different things. And that gap is precisely the problem.</p><p>I&#8217;ve been thinking about this in four stages. Once you see it, you can&#8217;t unsee it.</p><div><hr></div><h2>Phase 1: The Production Line (Where We All Started)</h2><p>This is the world we all grew up in. Software gets built like a factory assembly line. PM writes the spec. Design makes the mocks. Dev builds the thing. QA breaks the thing. Ship.</p><p>Each lane is a different team. Each team hands off to the next. The cycle time is the <em>sum</em> of all the lanes.</p><pre><code><code>  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;     &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;     &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;     &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
  &#9474;  PM      &#9474;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;  DESIGN  &#9474;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;   DEV    &#9474;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;    QA    &#9474;&#9472;&#9472;&#9654; Ship
  &#9474;  (human) &#9474;     &#9474;  (human) &#9474;     &#9474;  (human) &#9474;     &#9474;  (human) &#9474;
  &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; &#9474;     &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; &#9474;     &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; &#9474;     &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; &#9474;
  &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
    ~2 weeks         ~3 weeks         ~4 weeks         ~3 weeks

  Throughput per lane:

  PM      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   ~2 wk
  Design  &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   ~3 wk
  Dev     &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   ~4 wk
  QA      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   ~3 wk
          &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
          Balanced. Predictable.           Total: ~12 weeks
</code></code></pre><p>It&#8217;s slow. Everyone knows it&#8217;s slow. But it&#8217;s <em>predictably</em> slow. Every lane takes roughly the same amount of time. The bottleneck is everywhere, which means the bottleneck is nowhere.</p><p>This is the world that AI was supposed to fix.</p><div><hr></div><h2>Phase 1.5: The Trap (Where A Lot of Teams Are Right Now)</h2><p>AI tools rolled out. But they didn&#8217;t roll out evenly.</p><p>Dev got Claude Code, Cursor &#8212; the works. Suddenly a senior dev is generating code at 5x the old pace. Features that used to take a sprint are getting drafted in a day.</p><p>Design got some help too. AI-assisted prototyping, concept generation. Maybe a 1.5x improvement.</p><p>PM? About the same. QA? Barely touched.</p><p>Now look what happens to the pipeline:</p><pre><code><code>  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;  &#9484;&#9472;&#9472;&#9472;&#9472;&#9488;         &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
  &#9474;  PM      &#9474;&#9472;&#9654;&#9474; DESIGN &#9474;&#9472;&#9654;&#9474;DEV &#9474;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;          QA           &#9474;&#9472;&#9472;&#9654; Ship
  &#9474;  (human) &#9474;  &#9474; (human &#9474;  &#9474;(h+ &#9474;         &#9474;  (human, no AI help)  &#9474;
  &#9474;          &#9474;  &#9474;  + AI) &#9474;  &#9474;AI) &#9474;         &#9474;                       &#9474;
  &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; &#9474;  &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608; &#9474;  &#9474; &#9608;&#9608; &#9474;         &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  &#9474;
  &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;  &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;  &#9492;&#9472;&#9472;&#9472;&#9472;&#9496;         &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
    ~2 wk        ~2 wk      ~1 wk     &#9888; BOTTLENECK   ~5 wk
                  (1.5x)     (5x)                      (swamped)
</code></code></pre><p>Dev went from 4 weeks to 1 week. But QA didn&#8217;t get faster &#8212; it got <em>slower</em>. It&#8217;s absorbing 5x the volume with the same headcount, the same manual processes, the same regression suite that takes three days to run.</p><pre><code><code>  PM      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   ~2 wk  (no change)
  Design  &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~2 wk  (modest gains)
  Dev     &#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 wk  (5x faster)
  QA      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   ~5 wk  &#9664;&#9472;&#9472; CONSTRAINT
          &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
</code></code></pre><p><strong>End-to-end: ~10 weeks. Not 5x faster. Barely faster at all.</strong></p><p>This is the Theory of Constraints playing out in real-time. You didn&#8217;t eliminate the bottleneck &#8212; you just moved it downstream. And the faster dev ships, the <em>worse</em> the QA bottleneck gets.</p><p>I hear this from teams constantly. &#8220;Dev is shipping so fast now, but we can&#8217;t get anything through QA.&#8221; Or: &#8220;We have 47 PRs waiting for review.&#8221; Or: &#8220;We&#8217;re shipping faster but quality is dropping because we&#8217;re cutting corners on testing to keep up.&#8221;</p><p><strong>Phase 1.5 is a mirage.</strong> The velocity charts look great. The end-to-end delivery doesn&#8217;t.</p><div><hr></div><h2>Phase 2: Give AI to Everyone (Where Smart Teams Are Heading)</h2><p>The natural next step: if uneven AI adoption created bottlenecks, give AI tools to <em>every</em> lane. PM gets AI. Design gets AI. Dev has AI. QA gets AI. Level the playing field.</p><p>This is a real improvement. It works. It&#8217;s worth doing.</p><pre><code><code>  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;     &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;     &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;     &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
  &#9474;  PM      &#9474;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;  DESIGN  &#9474;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;   DEV    &#9474;&#9472;&#9472;&#9472;&#9472;&#9654;&#9474;    QA    &#9474;&#9472;&#9472;&#9654; Ship
  &#9474; (human   &#9474;     &#9474; (human   &#9474;     &#9474; (human   &#9474;     &#9474; (human   &#9474;
  &#9474;  + AI)   &#9474;     &#9474;  + AI)   &#9474;     &#9474;  + AI)   &#9474;     &#9474;  + AI)   &#9474;
  &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   &#9474;     &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   &#9474;     &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   &#9474;     &#9474; &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;   &#9474;
  &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
    ~1 week          ~1.5 weeks       ~1 week          ~1.5 weeks

  Throughput per lane:

  PM      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 wk    (2x faster)
  Design  &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1.5 wk  (2x faster)
  Dev     &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 wk    (4x faster)
  QA      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1.5 wk  (2x faster)
          &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
          Balanced again. Every lane improved.  Total: ~5 weeks
</code></code></pre><p><strong>A genuine 2-3x improvement. You should absolutely pursue this.</strong></p><p>But here&#8217;s the thing most people miss: <strong>it&#8217;s still a production line.</strong></p><p>You still have four separate teams. Four separate handoffs. Four queues. Four sets of context lost in translation. AI made each station faster, but the architecture of how work flows is exactly the same.</p><pre><code><code>  Phase 2 is still sequential:

  PM &#9473;&#9473;&#9473;&#9654; Design &#9473;&#9473;&#9473;&#9473;&#9654; Dev &#9473;&#9473;&#9473;&#9654; QA &#9473;&#9473;&#9473;&#9473;&#9654; Ship
  (fast)  (fast)       (fast)   (fast)
          &#9553;                      &#9553;
          &#9553;  still a handoff     &#9553;  still a handoff
          &#9553;  still waiting       &#9553;  still waiting
</code></code></pre><p>Phase 2 is like putting faster engines in every car on a single-lane road. The cars are faster. <em>The road is still one lane.</em></p><p>5 weeks is great. But the real question is: why do we need four separate teams at all?</p><div><hr></div><h2>But First: What The Diagrams Don&#8217;t Show You</h2><p>Every diagram above is a lie. A generous, best-case lie.</p><p>Real software development is <em>never</em> a clean left-to-right pipeline.</p><pre><code><code>  What the diagram shows:

  PM &#9472;&#9472;&#9654; Design &#9472;&#9472;&#9654; Dev &#9472;&#9472;&#9654; QA &#9472;&#9472;&#9654; Ship


  What actually happens:

  PM &#9472;&#9472;&#9654; Design &#9472;&#9472;&#9654; Dev &#9472;&#9472;&#9654; QA &#9472;&#9472;&#9488;
              &#9650;        &#9650;         &#9474;
              &#9474;        &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;  "This doesn't match the spec"
              &#9474;                  &#9474;
              &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;  "This flow doesn't work,
                                 &#9474;   we need to redesign"
                                 &#9474;
         PM &#9664;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;  "Users are hitting a bug
                                     in production, we need to
                                     rethink the whole approach"
</code></code></pre><p>QA finds a bug &#8212; back to dev. Dev discovers the design breaks at edge cases &#8212; back to design. A production incident forces PM to reprioritize everything. Design and dev go back and forth three times before the interaction feels right.</p><p>These rework loops cross team boundaries every time. And that&#8217;s where three things break:</p><p><strong>Context has to be re-hydrated at every boundary.</strong> The designer who made that mock is on a different project now. The dev has to write up a ticket, attach screenshots, and hope she can reload the mental model she had three weeks ago. Both sides pay this tax. Every loop. Every time.</p><p><strong>Capacity utilization collapses.</strong> Dev is blocked waiting for design. Design is idle waiting for QA to surface issues. QA has nothing for two weeks, then gets slammed with five features at once. The chunks of work don&#8217;t fit neatly across teams. A bug that takes two hours to fix takes five days to <em>schedule</em>.</p><pre><code><code>  Theoretical capacity:

  PM      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  100%
  Design  &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  100%
  Dev     &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  100%
  QA      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  100%


  Actual capacity:

  PM      &#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~50%
  Design  &#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;  ~45%
  Dev     &#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;  ~55%
  QA      &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;  ~40%
          &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
          &#9617;&#9617; = idle / blocked / context-switching / wrong priority
</code></code></pre><p><strong>Coordination eats the remaining capacity.</strong> Every rework loop requires: file a ticket, triage it, assign it, wait for a sprint slot, re-explain context, review the fix, re-test. For a two-hour fix, you spend eight hours on coordination.</p><pre><code><code>  Where time actually goes on a "12-week" feature:

  Productive work:   &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~35%
  Rework:            &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~20%
  Waiting/blocked:   &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~25%
  Coordination:      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~20%
                     &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
                     Only ~35% of the 12 weeks is actual building.
</code></code></pre><p>This is true in Phase 1, Phase 1.5, and Phase 2. Even in Phase 2 &#8212; where every lane is faster &#8212; the rework loops still cross team boundaries, context still has to be re-hydrated, and scheduling is still a problem in itself. Phase 2 shrinks the loops from weeks to days, but they&#8217;re still <em>there</em>. Roughly 40% of Phase 2&#8217;s 5 weeks is still structural waste.</p><p>The production line was never just slow because the stations were slow. It was slow because the <em>architecture</em> &#8212; sequential handoffs, cross-team rework, context loss, scheduling overhead &#8212; was eating most of the time.</p><p>Which is exactly why Phase 3 changes everything.</p><div><hr></div><h2>Phase 3: One Person, A Team of AI Agents (The Real Unlock)</h2><p>Phase 3 isn&#8217;t about giving AI tools to existing roles. It&#8217;s about <em>merging the roles entirely</em> &#8212; because AI agents can now own each function, and a single person can orchestrate all of them.</p><p>One person. A PM agent that writes specs and user stories. A design agent that generates mocks and flows. A dev agent that writes, reviews, and refactors code. A QA agent that writes tests, runs regressions, and flags issues.</p><p>You&#8217;re not a worker on the assembly line. You&#8217;re the <em>conductor of an AI orchestra</em>.</p><pre><code><code>                      &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
                      &#9474;                   &#9474;
                      &#9474;    YOU            &#9474;
                      &#9474;    (orchestrator) &#9474;
                      &#9474;                   &#9474;
                      &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                                &#9474;
                  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
                  &#9474;             &#9474;              &#9474;
           &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
           &#9474;            &#9474; &#9474;            &#9474; &#9474;            &#9474;
           &#9660;            &#9660; &#9660;            &#9660; &#9660;            &#9660;
   &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
   &#9474;  PM Agent  &#9474; &#9474;Design Agent&#9474; &#9474; Dev Agent  &#9474; &#9474;  QA Agent  &#9474;
   &#9474;            &#9474; &#9474;            &#9474; &#9474;            &#9474; &#9474;            &#9474;
   &#9474;  Writes    &#9474; &#9474;  Generates &#9474; &#9474;  Writes    &#9474; &#9474;  Writes &amp;  &#9474;
   &#9474;  specs,    &#9474; &#9474;  mocks,    &#9474; &#9474;  code,     &#9474; &#9474;  runs      &#9474;
   &#9474;  user      &#9474; &#9474;  flows,    &#9474; &#9474;  reviews,  &#9474; &#9474;  tests,    &#9474;
   &#9474;  stories,  &#9474; &#9474;  assets    &#9474; &#9474;  refactors &#9474; &#9474;  flags     &#9474;
   &#9474;  priorities&#9474; &#9474;            &#9474; &#9474;            &#9474; &#9474; regressions&#9474;
   &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
          &#9474;              &#9474;              &#9474;              &#9474;
          &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                                &#9474;
                                &#9660;
                            Ship it
</code></code></pre><p>This doesn&#8217;t just speed up the stations. It dissolves every structural problem we just talked about.</p><p><strong>Context never leaves.</strong> You talked to the PM agent this morning, reviewed the design agent&#8217;s output over lunch, checked the dev agent&#8217;s code after that, and read the QA agent&#8217;s test results before dinner. The full context lives in one head. No re-hydration. No tickets explaining what happened three weeks ago. No designer who&#8217;s already moved on.</p><p><strong>Rework loops shrink from weeks to minutes.</strong> Rework isn&#8217;t the enemy &#8212; <em>slow rework across team boundaries</em> is. When the loop is tight and the context is shared, rework is just iteration.</p><pre><code><code>  Phase 1/2 rework loop (multi-team):

  QA finds bug
    &#9492;&#9472;&#9472;&#9654; File ticket in dev backlog
           &#9492;&#9472;&#9472;&#9654; Wait for next sprint (~1-2 weeks)
                  &#9492;&#9472;&#9472;&#9654; Dev picks it up, needs design input
                         &#9492;&#9472;&#9472;&#9654; Ping design team, wait (~3-5 days)
                                &#9492;&#9472;&#9472;&#9654; Design responds
                                       &#9492;&#9472;&#9472;&#9654; Dev fixes
                                              &#9492;&#9472;&#9472;&#9654; Back to QA queue (~3-5 days)
                                                     &#9492;&#9472;&#9472;&#9654; QA re-tests

  Elapsed time for one rework loop: 2-4 weeks


  Phase 3 rework loop (one orchestrator):

  QA agent flags bug
    &#9492;&#9472;&#9472;&#9654; You see it immediately
           &#9492;&#9472;&#9472;&#9654; Tell dev agent to fix, ping design agent to review
                  &#9492;&#9472;&#9472;&#9654; Both respond in minutes
                         &#9492;&#9472;&#9472;&#9654; QA agent re-tests

  Elapsed time for one rework loop: minutes to hours
</code></code></pre><p><strong>Capacity utilization jumps dramatically.</strong> No idle time waiting for another team. If the QA agent finds a bug, you route it to the dev agent <em>right now</em>. No scheduling. No sprint boundaries. No &#8220;we&#8217;ll get to it next week.&#8221; Sure, agents still iterate, still have gaps &#8212; but 80% utilization at machine speed is a different universe from 50% utilization at human speed.</p><pre><code><code>  Phase 1/2 actual capacity:

  PM      &#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~50%
  Design  &#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;  ~45%
  Dev     &#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;  ~55%
  QA      &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;  ~40%


  Phase 3 actual capacity:

  PM Agent      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  ~80%
  Design Agent  &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  ~80%
  Dev Agent     &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;  ~85%
  QA Agent      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;  ~80%
                &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
                Agents still iterate. Still idle sometimes.
                But the loops are minutes, not weeks.
                And 80% at machine speed beats 50% at human speed
                by orders of magnitude.
</code></code></pre><p>And here&#8217;s what most people underestimate: <strong>AI agents don&#8217;t work at human speed.</strong> They work at <em>machine speed</em>. A PM agent doesn&#8217;t need two weeks to write a spec &#8212; it needs two hours. A QA agent doesn&#8217;t need a week to run regressions &#8212; it needs an afternoon.</p><p>Parallel execution. Machine speed. Dramatically higher capacity utilization. Rework loops that cost minutes, not weeks.</p><pre><code><code>  Phase 3 (parallel, machine speed, one orchestrator):

            Day 1      Day 2      Day 3      Day 4
         &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
  PM     &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474;          &#9474;          &#9474;
  Agent  &#9474;          &#9474;          &#9474;          &#9474;          &#9474;
         &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
  Design &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474;          &#9474;
  Agent  &#9474;          &#9474;          &#9474;          &#9474;          &#9474;
         &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
  Dev    &#9474;          &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474;
  Agent  &#9474;          &#9474;          &#9474;          &#9474;          &#9474;
         &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
  QA     &#9474;          &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474; &#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617; &#9474;
  Agent  &#9474;          &#9474;          &#9474;          &#9474;          &#9474;
         &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                      Continuous, not gated.
                      One person driving all four.
                      Machine speed, not human speed.
</code></code></pre><pre><code><code>  PM Agent      &#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 day
  Design Agent  &#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 day
  Dev Agent     &#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 day
  QA Agent      &#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~1 day
                &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
                Parallel. Machine speed.       Total: ~4 days
</code></code></pre><p><strong>4 days. Not 4 weeks. Not 5 weeks. Not 12 weeks. Four days.</strong></p><p>And it&#8217;s not just the speed &#8212; it&#8217;s the <em>quality of the time</em>:</p><pre><code><code>  Where time goes &#8212; Phase 1 vs Phase 3:

  Phase 1 (12 weeks):
  Productive work:   &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~35%
  Rework:            &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~20%
  Waiting/blocked:   &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~25%
  Coordination:      &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;  ~20%

  Phase 3 (4 days):
  Productive work:   &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;   ~80%
  Rework/iteration:  &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~12%
  Waiting/blocked:   &#9608;&#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~5%
  Coordination:      &#9608;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;   ~3%
                     &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
</code></code></pre><p>What used to be a quarter of work &#8212; three months of cross-team coordination, standups, sprint planning, handoff meetings, QA cycles, and release trains &#8212; collapses into a single work week. One person, one laptop, four agents, shipping on Friday what used to ship in March.</p><div><hr></div><p>Carl Marx wrote in 1859 that <em>&#8220;at a certain stage of development, the material productive forces of society come into conflict with the existing relations of production... From forms of development of the productive forces these relations turn into their fetters.&#8221;</em></p><p>In plain language: the way work is organized initially helps technology grow &#8212; but eventually the old organizational model becomes the thing holding it back. The structure that once enabled progress becomes the constraint on it.</p><p>That&#8217;s exactly what&#8217;s happening right now.</p><p>The production line &#8212; PM, Design, Dev, QA as separate teams with sequential handoffs &#8212; was the right structure when every function required deep human specialization. It enabled massive scale. But AI agents have fundamentally changed what&#8217;s possible, and the org structure hasn&#8217;t caught up. The very structure that enabled the last era of productivity is now the fetter on the next one.</p><p>The steam engine existed for decades before it transformed manufacturing. The breakthrough wasn&#8217;t a better engine. It was the factory &#8212; a new organizational model designed around what the engine made possible. The resistance was never technical. It was structural. People who organized work around the old constraints couldn&#8217;t imagine organizing it differently.</p><p>12 weeks &#8594; 10 weeks &#8594; 5 weeks is what you get from better tools inside the old structure.</p><p>5 weeks &#8594; <strong>4 days</strong> is what you get when you redesign the structure itself.</p><p>The tools are not the bottleneck. The org is.</p><div><hr></div><p><em>Phase 1 &#8594; 1.5 was about giving some humans AI tools.</em> <em>Phase 1.5 &#8594; 2 was about giving every human AI tools.</em> <em>Phase 2 &#8594; 3 is about redesigning the organization around what AI makes possible.</em></p><p><em>The tools are ready. The question is whether the org is.</em></p>]]></content:encoded></item><item><title><![CDATA[Environment Engineering: The Evolving Role of the Software Engineer]]></title><description><![CDATA[The product we build as software engineers is changing. It used to be the software. Now it's the environment that builds the software.]]></description><link>https://www.zhahaoyu.com/p/environment-engineering-the-evolving</link><guid isPermaLink="false">https://www.zhahaoyu.com/p/environment-engineering-the-evolving</guid><dc:creator><![CDATA[Haoyu Zha]]></dc:creator><pubDate>Wed, 25 Feb 2026 23:19:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ba45593b-db7e-4c18-b682-ea18b711a7a3_647x311.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>An agent that needs your input every few minutes is a tool. An agent that works autonomously for hours is a colleague. The difference isn&#8217;t the agent&#8217;s intelligence &#8212; it&#8217;s the environment you put it in.</p><p>Most engineers are focused on what to say to agents &#8212; better prompts, better context, better instructions. That matters. But it&#8217;s the smaller lever. The bigger lever is what the agent can <em>do</em>: what tools it has, what feedback it gets, how completely it can close its own loop. I call this <strong>environment engineering</strong>, and it&#8217;s becoming the highest-leverage skill in the industry.</p><h2>Agents Are Capable. They&#8217;re Also Trapped.</h2><p>Coding agents have read more documentation than you ever will. They can assess whether something is working and they know what &#8220;done&#8221; looks like. These capabilities are already strong, and they&#8217;re improving fast &#8212; every model generation brings broader knowledge and sharper judgment.</p><p>But none of that matters if they can&#8217;t reach the real world. Your docs live in Notion. Your UI lives in a browser. Your data lives in a production database. Your requirements live in a Slack thread. The agent can&#8217;t grab any of it. It&#8217;s a brilliant worker locked in an empty room.</p><h2>Context Engineering Is Necessary but Insufficient</h2><p>Context engineering &#8212; giving agents the right information to reason well &#8212; has gotten a lot of attention. But context lets an agent <em>think</em> about the world. It doesn&#8217;t let it <em>act</em>, observe the outcome, and course-correct.</p><pre><code><code>  Context only:

  Context &#9472;&#9472;&#8594; Agent reasons &#9472;&#9472;&#8594; Outputs code &#9472;&#9472;&#8594; Human tests
     &#8593;                                               &#9474;
     &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472; Human provides feedback &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;

  The human IS the feedback loop.
  Agent stops and waits every cycle.
</code></code></pre><p><strong>Environment engineering</strong> goes further. An environment is context <em>plus tools and feedback</em>:</p><ul><li><p><strong>Context</strong> &#8212; the information the agent needs. Instructions, codebase knowledge, documentation, requirements. This is what context engineering already covers.</p></li><li><p><strong>Tools + Feedback</strong> &#8212; the actions the agent can take <em>and</em> the signal it gets back. Running tests and seeing pass/fail. Opening a browser and visually inspecting the result. Querying a database and checking the output. Tools without feedback are just buttons the agent pushes blindly. Tools <em>with</em> feedback are how the agent learns whether what it did was right.</p></li></ul><p>Not all tools are equal. A test suite that runs in two seconds and returns a clear failure message is a different instrument than one that takes ten minutes and dumps a wall of stack traces. The engineering skill isn&#8217;t just giving agents tools &#8212; it&#8217;s designing tools that produce fast, precise signal the agent can iterate against. The quality of that signal determines whether the agent self-corrects or spirals.</p><h2>The Closed Loop Changes Everything</h2><p>When an agent has context and tools that return strong signal, it can close its own feedback loop:</p><pre><code><code>  With a well-designed environment:

          &#9484;&#9472;&#9472;&#9472;&#9472; no &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
          &#8595;                                     &#9474;
    Agent writes code &#9472;&#9472;&#8594; Runs tests &#9472;&#9472;&#8594; Pass? &#9472;&#9496;
                          Opens browser    &#9474;
                          Checks types    yes
                                           &#9474;
                                           &#8595;
                                         Done

  No human in the loop.
  Feedback steers the agent autonomously.
</code></code></pre><p>This is the core unlock. The agent&#8217;s autonomous time &#8212; how long it can work without needing you &#8212; expands from minutes to hours. That expansion <em>is</em> the leverage.</p><p>METR&#8217;s research puts hard numbers on this. They measure the length of tasks that frontier AI agents can complete autonomously, and found that this time horizon has been doubling roughly every seven months.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5dpZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5dpZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 424w, https://substackcdn.com/image/fetch/$s_!5dpZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 848w, https://substackcdn.com/image/fetch/$s_!5dpZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 1272w, https://substackcdn.com/image/fetch/$s_!5dpZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5dpZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png" width="1212" height="597" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:597,&quot;width&quot;:1212,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://haoyuz.substack.com/i/187039776?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5dpZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 424w, https://substackcdn.com/image/fetch/$s_!5dpZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 848w, https://substackcdn.com/image/fetch/$s_!5dpZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 1272w, https://substackcdn.com/image/fetch/$s_!5dpZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674d5a97-05ea-48cc-b819-70de0ea326a8_1212x597.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But METR measures the ceiling &#8212; what an agent <em>can</em> do under idealized conditions. Whether it actually reaches that ceiling depends on the completeness and quality of the environment. A frontier model in a weak environment &#8212; no tests, no browser, no feedback &#8212; will underperform a weaker model in a well-designed one. <strong>The raw capability is there. The environment is what unleashes it.</strong></p><p>The agent is only as good as the signal it iterates against. And once you have a closed loop that works, you can multiply it &#8212; run multiple agents in parallel, each in its own isolated environment, each closing its own loop independently. You&#8217;re not multiplying your time. You&#8217;re multiplying autonomous agents.</p><h2>What This Looks Like in Practice</h2><p>I set up isolated Docker containers for frontend development &#8212; each with its own database, server, and full application stack &#8212; and gave the agent a browser tool so it could open the site, visually inspect the result, and click through the UI.</p><p>The feedback design is what makes it work. The agent runs the type checker, executes the test suite, opens the browser, and visually verifies the result. Each tool returns a different signal: types catch structural errors, tests catch logic errors, the browser catches everything a user would actually see. Fast, layered feedback the agent can iterate against.</p><p>Before this environment, the loop ran through me. The agent would write code, I&#8217;d check the browser, describe what was broken, and the agent would try again. Every iteration cost me five minutes of context-switching, and the agent couldn&#8217;t do anything in the meantime.</p><p>Now the agent handles the full cycle on its own. It writes code, spins up the stack, opens the browser, sees that a button is overlapping the nav bar, fixes the CSS, re-checks &#8212; three iterations I never see. Multiple agents run in parallel across different features without stepping on each other.</p><p>This wasn&#8217;t a better prompt or a smarter model. It was an investment in the environment.</p><h2>The Takeaway</h2><p>The product we build as software engineers is changing. It used to be the software. Now it&#8217;s the environment that builds the software &#8212; and the quality of that environment directly determines how much of an agent&#8217;s raw capability you actually capture.</p><p>The engineers who figure this out first &#8212; who stop optimizing prompts and start designing environments &#8212; will have a compounding advantage as agents improve. Every improvement to the environment pays dividends across every task that runs inside it. Every leap in model capability makes a well-designed environment more powerful.</p><p>The agents are getting smarter. The question is whether your environment is ready for them.</p>]]></content:encoded></item></channel></rss>