<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Ryu Xin</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://ryu.xin/</id>
  <link href="https://ryu.xin/" rel="alternate"/>
  <link href="https://ryu.xin/feed.xml" rel="self"/>
  <rights>All rights reserved 2026, Ryu Xin</rights>
  <subtitle>Long-form essays on software engineering, artificial intelligence, organizations, and people</subtitle>
  <title>
    <![CDATA[Software, AI & People]]>
  </title>
  <updated>2026-07-30T16:00:00.000Z</updated>
  <entry>
    <author>
      <name>Ryu Xin</name>
    </author>
    <category term="Software Engineering" scheme="https://ryu.xin/categories/software-engineering/"/>
    <category term="AI" scheme="https://ryu.xin/tags/AI/"/>
    <category term="Software Engineering" scheme="https://ryu.xin/tags/Software-Engineering/"/>
    <category term="Organizations" scheme="https://ryu.xin/tags/Organizations/"/>
    <category term="Books" scheme="https://ryu.xin/tags/Books/"/>
    <content>
      <![CDATA[<header class="abstract"><h2 data-no-number="true">Abstract</h2><p>AI has made code generation astonishingly fast. It has also encouraged a dangerous assumption: if implementation is cheaper, software projects should move faster and teams should shrink. In practice, the opposite pressures soon appear. More generated code means more to understand, test, coordinate, and own. The more agents can do in parallel, the more human attention, judgment, and accountability become points of congestion.</p><p><em>Peopleware</em> was never merely a book about noisy offices or management technique. It was a book about the conditions under which knowledge work can happen: how concentration forms, how teams cohere, how trust makes learning possible, and how management quietly destroys all three. AI has not made those questions obsolete. It has simply added machines to the list of things that can interrupt us, while giving every strength and weakness in an organization a larger lever.</p></header><p class="thesis">AI has changed the speed of software production. It has not changed the fact at the heart of <em>Peopleware</em>: the hardest part of a software project is rarely the code. It is the people living with it.</p><p class="part-label">Part I · The people hidden by the tools</p><h2 id="Why-revisit-Peopleware-now"><span class="section-no">01</span><a href="#Why-revisit-Peopleware-now" class="headerlink" title="Why revisit Peopleware now?"></a>Why revisit <em>Peopleware</em> now?</h2><p class="lead dropcap">The first time I read <em>Peopleware</em>, I took it for a book about managing software teams. Its concerns seemed wonderfully concrete: noisy offices, too many meetings, impossible schedules, staff turnover, team cohesion, and the many ways a manager can dismantle a good team without quite realizing it.</p><p>Reading it again after the arrival of AI coding tools, I noticed that Tom DeMarco and Timothy Lister were asking a more fundamental question. <strong>In software development, is the real constraint technical—or human?</strong></p><p>For years, the industry treated productivity as a typing problem. We invented higher-level languages, more capable frameworks, better IDEs, and increasingly automated delivery pipelines. AI has carried that instinct to its logical extreme. One developer can now ask several agents to search a repository, change code, write tests, inspect logs, and update documentation at the same time. Work that once took days can produce a plausible candidate in hours.</p><p>And yet projects have not acquired infinite speed. Requirements are still ambiguous. Systems still have histories. Boundaries still require judgment. Releases still fail. Responsibility still has to land somewhere. When the third edition of <em>Peopleware</em> appeared in 2013, its publisher still described software development as being shaped by human rather than technical issues. In the age of agents, that claim feels sharper, not weaker.<sup class="ref"><a href="#ref-1">[1]</a></sup></p><blockquote><p>As execution gets cheaper, framing, judgment, verification, and ownership get more expensive. AI did not remove the human bottleneck. It moved it upstream from the keyboard into the decision chain.</p></blockquote><h2 id="The-bottleneck-did-not-disappear-It-moved"><span class="section-no">02</span><a href="#The-bottleneck-did-not-disappear-It-moved" class="headerlink" title="The bottleneck did not disappear. It moved."></a>The bottleneck did not disappear. It moved.</h2><p>In conventional development, implementation time was the most visible scarcity. Plans revolved around one question: how long will it take to build? AI cuts that cost dramatically, but it does not reduce every adjacent cost at the same rate. Someone still has to understand the problem, choose an approach, review the change, verify the business rules, assess security, plan a migration, observe the release, and restore service when things go wrong.</p><p>The cost simply travels downstream. The old shape of the work might have been four hours of coding followed by one hour of review. The new shape might be ten minutes of generation followed by two hours of reconstruction and verification. In the first case, the waiting happened before production. In the second, the queue forms after it. Measure only generation and the improvement looks spectacular. Measure the entire value stream and the gain may be modest—or swallowed by rework.</p><p>DORA’s 2025 research on AI-assisted software development treats this as a systems problem. AI magnifies the conditions already present in a team and its delivery system. Strong platforms, loosely coupled architectures, and fast feedback can absorb a larger volume of change. Weak tests, slow workflows, and tightly coupled systems turn that same volume into instability.<sup class="ref"><a href="#ref-6">[6]</a></sup></p><div class="callout"><p><strong>The useful comparison is not “human coding speed” versus “AI coding speed.”</strong></p><p>It is whether the whole system moves a problem from discovery to safe, maintainable value any faster.</p></div><p>That is where a modern reading of <em>Peopleware</em> begins: never mistake the local speed of a tool for the productivity of an organization.</p><p class="part-label">Part II · Attention becomes the new production line</p><h2 id="AI-removed-waiting—and-created-more-interruption"><span class="section-no">03</span><a href="#AI-removed-waiting—and-created-more-interruption" class="headerlink" title="AI removed waiting—and created more interruption"></a>AI removed waiting—and created more interruption</h2><p>One of the most durable ideas in <em>Peopleware</em> is the value of uninterrupted time. Programmers, designers, and architects rarely do their best work in the gaps between notifications. The problem, the code, the business constraints, and the available design choices have to coexist in the mind long enough to become a usable model.</p><p>That model may take fifteen minutes to assemble; it may take half an hour. A message that consumes two minutes can therefore cost much more than two minutes. Research on task switching finds the same pattern: changing tasks requires people to shift goals and reactivate rules, and the cost grows with the complexity of those rules.<sup class="ref"><a href="#ref-2">[2]</a></sup></p><p>In the old development environment, interruptions mostly came from other people: a product manager asking for status, a tester reporting a bug, a manager calling an impromptu meeting, a colleague asking for help. In the AI environment, machines have joined the queue.</p><p>A developer may have three, five, or more agents running at once: one refactoring a service, another building a UI, a third writing tests, a fourth reading production logs. Each returns results, asks questions, requests permissions, reports a failure, or waits for a decision. The developer stops working on one coherent problem and starts hopping among several partially remembered worlds:</p><ul><li>What exactly did agent A change, and did it cross the task boundary?</li><li>Is agent B’s failing test a code problem or an environment problem?</li><li>Which approach did agent C take, and what assumptions did it discard?</li><li>How do I stop agent D from “helpfully” refactoring an unrelated module?</li><li>How do these independent outputs fit back into one system?</li></ul><p>The programmer has become a scheduler of concurrent cognitive work. The catch is simple: agents can run in parallel; human understanding, judgment, and accountability remain largely serial.</p><figure class="article-figure"><img src="/assets/articles/peopleware-ai-era/figure-peopleware-attention-bottleneck.webp?v=43cae87c946f1926" width="1672" height="941" loading="lazy" alt="An engineer sits at the center of a circular workspace while many AI tools send tasks and results inward, making human attention the bottleneck"><figcaption><p><strong>Figure 1 · The attention bottleneck.</strong> Machines can produce ten results at once. A person still has to rebuild the context, judge the risk, and accept responsibility one result at a time. Concurrency expands the supply of candidates, not the bandwidth of the human mind.</p></figcaption></figure><p>This explains a distinctly modern kind of exhaustion. You may spend little of the day typing and still finish it depleted. The effort went into rebuilding context, handling exceptions, and closing cognitive loops that kept reopening.</p><div class="pullquote"><p>Managers once interrupted programmers with meetings. Now programmers can launch ten agents and interrupt themselves.</p></div><h2 id="Code-is-abundant-High-quality-attention-is-not"><span class="section-no">04</span><a href="#Code-is-abundant-High-quality-attention-is-not" class="headerlink" title="Code is abundant. High-quality attention is not."></a>Code is abundant. High-quality attention is not.</h2><p>The easiest mistake in AI-assisted development is to confuse lower implementation cost with lower cost everywhere. When generation capacity surges upstream, review, testing, integration, and decision-making become the new places where work waits.</p><p>Code can be generated in parallel; careful review cannot scale without limit. Options can be produced in batches; a team still has to choose among them. Tests can run automatically; someone still has to understand why they failed. Agents can retry indefinitely; people still own the production incident. If every workflow sends every exception to a human, attention becomes the single-threaded lock shared by the entire automation system.</p><p>A manager therefore needs questions more useful than “How many more agents can we add?”</p><div class="principles"><div class="principle"><strong>Is the input ready?</strong> — Which tasks deserve generation, and which problems are still too vague to delegate?</div><div class="principle"><strong>Can the output be filtered?</strong> — What should be rejected, deduplicated, or combined automatically before it reaches an engineer?</div><div class="principle"><strong>Is ownership explicit?</strong> — Who makes the final call, verifies business correctness, and decides to merge or release?</div><div class="principle"><strong>Is concurrency bounded?</strong> — How many live contexts can one person carry without losing the shape of the system?</div></div><p>Without answers, adding agents is like increasing the speed of an upstream conveyor belt after the line is already jammed. The result is not faster delivery. It is a review backlog, an overloaded test system, architectural drift, and more operational risk.</p><p>When production becomes cheap, the organization has to protect attention—not spend it even faster.</p><h2 id="The-codebase-grew-The-team’s-understanding-did-not"><span class="section-no">05</span><a href="#The-codebase-grew-The-team’s-understanding-did-not" class="headerlink" title="The codebase grew. The team’s understanding did not."></a>The codebase grew. The team’s understanding did not.</h2><p>Software organizations have always been tempted to substitute visible activity for difficult-to-measure value: lines of code, commit counts, features shipped, tickets closed, sprint velocity. AI makes those proxies more dangerous.</p><p>An agent can produce thousands of lines in minutes. It can create a dozen modules in one pass. It can turn a small fix into a handsome, fully structured refactor. If output is still the measure of productivity, AI can make almost any team’s numbers look excellent.</p><p>But code is not automatically an asset. It becomes one only when the team understands it, has evidence that it works, can change it safely, and knows why it exists. Otherwise, faster generation does not build capability. It builds <strong>cognitive debt</strong>.</p><p>When a developer writes a piece of code, they usually remember why it took that shape, which boundary conditions mattered, and which alternatives were rejected. The documentation may be incomplete, but the decision passed through a human mind. AI-generated code can arrive in the repository without that journey. It may run. It may pass the tests. It may even look cleaner than the handwritten version. And no one on the team may truly own it.</p><figure class="article-figure"><img src="/assets/articles/peopleware-ai-era/figure-peopleware-cognitive-debt.webp?v=411f4e0c90bf18ba" width="1672" height="941" loading="lazy" alt="Three team members study a limited system map while AI tools rapidly expand a vast modular city beyond a narrow bridge"><figcaption><p><strong>Figure 2 · Cognitive debt.</strong> The system expands in code while the team’s shared mental model remains on the other side of the bridge. The real risk is not who wrote the code, but whether anyone can explain it, change it, and recover it.</p></figcaption></figure><p>This creates a convincing project illusion. The feature is done. The demo works. The repository is growing. Yet the engineers are looking at a system that feels less familiar every week. Only when production misbehaves, a business rule changes, or a cross-cutting refactor becomes necessary does the organization discover that generated code never became controlled software capability.</p><p>In 2025, METR ran a randomized study with 16 experienced developers working on 246 real tasks in mature open-source repositories. With the particular tools and sample used at the time, developers allowed to use AI took about 19 percent longer on average, even while believing they had become faster. The researchers stressed that this was a snapshot of early-2025 tools and a specific population. By 2026, selection effects made a follow-up experiment too unreliable to support a confident current estimate. The enduring lesson is not that “AI makes developers slower.” It is that <strong>feeling faster is not a substitute for measuring the whole workflow.</strong><sup class="ref"><a href="#ref-7">[7]</a></sup><sup class="ref"><a href="#ref-8">[8]</a></sup></p><div class="callout"><p><strong><em>Peopleware</em> warned us:</strong> do not confuse time at a desk with useful work.</p><p><strong>The AI-era corollary:</strong> do not confuse model output with capability the team has actually acquired.</p></div><p class="part-label">Part III · A team is not a container to be compressed</p><h2 id="Psychological-safety-is-part-of-AI-reliability"><span class="section-no">06</span><a href="#Psychological-safety-is-part-of-AI-reliability" class="headerlink" title="Psychological safety is part of AI reliability"></a>Psychological safety is part of AI reliability</h2><p><em>Peopleware</em> returns again and again to a truth that management theory often misses: a team cannot be assembled into cohesion by command. A real team develops trust, a shared purpose, an identity, and enough autonomy to act as a unit. None of these qualities matters less in the AI era. They matter more.</p><p>As AI takes on more coding work, engineers have reasonable questions. Is my experience becoming less valuable? Is the company adopting AI to help me, or to reduce headcount? If I turn my working methods into a skill or an agent, am I documenting my way out of a job? When generated code fails, who is accountable?</p><p>If management avoids those questions and talks only about efficiency, people protect themselves. Some keep useful methods private rather than turn them into organizational knowledge. Some perform adoption without changing how they work. Some create complexity only they can explain. Others lower their sense of ownership because “the model wrote it.” None of this is irrational. It is what uncertainty produces when candor feels unsafe.</p><p>Amy Edmondson defined team psychological safety as a shared belief that interpersonal risk-taking is safe within the team. Her study of 51 work teams associated psychological safety with learning behavior, which in turn connected to team performance.<sup class="ref"><a href="#ref-3">[3]</a></sup> AI collaboration demands exactly this kind of risk-taking. People have to be able to say:</p><ul><li>“I do not understand this generated code yet.”</li><li>“The tests pass, but I do not believe they cover the real risk.”</li><li>“My prompt sent this in the wrong direction. We should start again.”</li><li>“This problem is not ready for more automation. We need to clarify it first.”</li></ul><figure class="article-figure"><img src="/assets/articles/peopleware-ai-era/figure-peopleware-psychological-safety.webp?v=790d147eef7c493b" width="1672" height="941" loading="lazy" alt="Five team members discuss incomplete system models around a shared table while their collaboration forms a protective structure and AI tools provide materials"><figcaption><p><strong>Figure 3 · Safety creates room to learn.</strong> A team can catch mistakes before production only if incomplete models, doubts, and bad news are welcome at the same table. Agents bring material; trust determines whether that material receives an honest evaluation.</p></figcaption></figure><p>If an organization makes “I don’t know” unsafe, AI magnifies false certainty. The model answers confidently. The engineer hesitates to object. The manager wants a visible win. Those three forces can carry code that nobody understands through every review and into production.</p><div class="pullquote"><p>Psychological safety is not a soft corporate benefit. It is the mechanism that lets bad news reach the team before it becomes an incident.</p></div><h2 id="Teamicide-in-the-AI-era"><span class="section-no">07</span><a href="#Teamicide-in-the-AI-era" class="headerlink" title="Teamicide in the AI era"></a>Teamicide in the AI era</h2><p><em>Peopleware</em> coined a wonderfully severe word: <em>teamicide</em>. Capable teams are often damaged not by a lack of talent, but by the way they are managed—impossible deadlines, constant reshuffling, internal competition, excessive standardization, and process used as a substitute for trust.</p><p>AI gives management several new ways to commit the same old crime.</p><h3 id="Turn-engineers-into-agent-operators"><a href="#Turn-engineers-into-agent-operators" class="headerlink" title="Turn engineers into agent operators"></a>Turn engineers into agent operators</h3><p>A manager may decide that the model can now handle most technical work, gradually remove design authority from engineers, and leave them to receive tasks, invoke agents, and submit the results. Output may rise for a while. Judgment will not. People who are no longer expected to make design decisions eventually lose the opportunity—and then the ability—to make good ones.</p><h3 id="Turn-AI-use-into-an-individual-output-contest"><a href="#Turn-AI-use-into-an-individual-output-contest" class="headerlink" title="Turn AI use into an individual output contest"></a>Turn AI use into an individual output contest</h3><p>Who generated the most code? Who closed the most tickets? Who ran the most agents at once? These metrics look objective and reward exactly the wrong thing: local activity at the expense of shared review, knowledge, and responsibility. The SPACE framework already argues that developer productivity spans satisfaction and well-being, performance, activity, communication and collaboration, and efficiency and flow. No single activity metric can stand in for the whole.<sup class="ref"><a href="#ref-4">[4]</a></sup> As generation gets cheaper, the distance between activity and value only grows.</p><h3 id="Cut-until-the-system-loses-its-memory"><a href="#Cut-until-the-system-loses-its-memory" class="headerlink" title="Cut until the system loses its memory"></a>Cut until the system loses its memory</h3><p>Once some tasks can be automated, it is tempting to conclude that work once done by ten people now requires three. But those ten people did more than write code. They carried business memory, operational judgment, cross-functional relationships, customer context, on-call experience, and spare capacity for the unexpected. Those contributions are almost invisible in task counts. They are also what let a team recover when reality departs from the plan.</p><p>The people who look least productive on a dashboard may be carrying the context the system cannot regenerate.</p><div class="table-wrap"><table><caption>Three common forms of AI-era teamicide</caption><thead><tr><th>Management move</th><th>Short-term appearance</th><th>Long-term loss</th></tr></thead><tbody><tr><td>Reduce engineers to operators</td><td>Faster tasks, more uniform process</td><td>Weaker design judgment; no owner for hard problems</td></tr><tr><td>Rank people by AI activity</td><td>More commits, code, and closed tickets</td><td>Local optimization, shallow review, hoarded knowledge</td></tr><tr><td>Cut roles by automatable task count</td><td>Rapid reduction in labor cost</td><td>Lost memory, resilience, and recovery capacity</td></tr></tbody></table></div><h2 id="The-best-AI-team-is-not-the-one-with-the-fewest-people"><span class="section-no">08</span><a href="#The-best-AI-team-is-not-the-one-with-the-fewest-people" class="headerlink" title="The best AI team is not the one with the fewest people"></a>The best AI team is not the one with the fewest people</h2><p>The AI era has produced an extreme but seductive picture of the future: one founder, surrounded by a tireless workforce of agents. That model can produce prototypes at remarkable speed. It may even operate a small product with clear boundaries. It is less convincing as a plan for the long life of a complex system, because the hardest problems in such systems are rarely questions of code generation.</p><p>Complex systems need the friction of different responsibilities. Architects think about long-term evolution. Developers see implementation and readability. Testers search for failure paths. Operators watch runtime behavior. Product people ask whether the work creates value. Security specialists imagine the paths ordinary use never takes.</p><p>AI can simulate each role and list the questions it might ask. What it struggles to reproduce is the judgment created by real consequences. The person responsible for production stability treats a harmless-looking dependency update differently. Someone who has lived through a financial reconciliation failure asks about idempotency before being prompted. Someone who has served the same customers for years knows which innocent sentence in the requirements is actually non-negotiable. That knowledge comes from experience under responsibility, not from information alone.</p><p>The aim of a strong AI team, then, is not to drive the human count toward zero. It is to move human time away from mechanical implementation and toward work that carries more value: framing problems, designing boundaries, testing reality, handling exceptions, building knowledge, repairing systems, and making tradeoffs that can be explained.</p><div class="callout"><p><strong>AI’s value is not that it can erase the team. It is that it can let the team spend its attention differently.</strong></p><p>Removing pointless labor is a means. Preserving judgment, learning, and recovery capacity is the return.</p></div><p class="part-label">Part IV · Designing an environment for people and agents</p><h2 id="The-manager’s-new-job-redesign-the-work-environment"><span class="section-no">09</span><a href="#The-manager’s-new-job-redesign-the-work-environment" class="headerlink" title="The manager’s new job: redesign the work environment"></a>The manager’s new job: redesign the work environment</h2><p>In the view of <em>Peopleware</em>, management is not primarily the art of keeping people busy. It is the work of creating an environment in which people can get something done. That idea survives intact in the AI era, but the environment has become larger.</p><p>It now includes more than quiet rooms, sensible meetings, and stable teams. It includes which resources an agent may access; which actions require human approval; which results must pass automated checks; how much of the system one task may change; how context is preserved and handed over; how concurrent workflows avoid overwriting each other; how work stops, rolls back, and recovers after failure; and who owns the final result.</p><p>None of this can be solved by adding one clever sentence to a prompt. If an organization buys AI tools for everyone but leaves the development system untouched, AI becomes an accelerator bolted onto the old machinery. It produces code faster. It does not make the requirements clearer, the decisions wiser, the tests stronger, or the releases safer.</p><figure class="article-figure"><img src="/assets/articles/peopleware-ai-era/figure-peopleware-human-agent-environment.webp?v=630ce7b744eb3d61" width="1672" height="941" loading="lazy" alt="AI tools send a large stream of modules into a system where people sort and validate them through recovery paths and quiet workspaces before they reach a stable shared environment"><figcaption><p><strong>Figure 4 · The environment is the control system.</strong> Management is not the act of demanding more upstream generation. It is the design of boundaries, gates, feedback, recovery paths, and quiet spaces that let speed arrive in a system people can understand and own.</p></figcaption></figure><p>The real change is to treat software delivery as an operating system shared by people and agents. Machines search, generate, repeat, and perform preliminary checks. People define goals, resolve ambiguity, make tradeoffs, recognize risk, and accept responsibility. The interface between those roles has to be explicit. So does the pace.</p><h2 id="Treat-human-attention-as-capacity-not-as-a-free-resource"><span class="section-no">10</span><a href="#Treat-human-attention-as-capacity-not-as-a-free-resource" class="headerlink" title="Treat human attention as capacity, not as a free resource"></a>Treat human attention as capacity, not as a free resource</h2><p>The most common design error in an AI workflow is to count model throughput without counting human absorption. A patch may cost almost nothing to generate. Turning it into a trustworthy change still requires review time, domain knowledge, test evidence, and a release window. If any one of those is scarce, candidates wait in line.</p><div class="equation"><p><strong>Effective delivery = min (generation, understanding, verification, release and recovery)</strong> This is a management constraint, not a formal equation: system throughput is bounded by its narrowest point.</p></div><p>Even a team with unlimited agents cannot deliver faster than its weakest control loop. Too much work in progress also damages the very capacity needed to clear it. Unfinished reviews, unanswered questions, parallel branches, and unresolved options occupy working memory and make every context switch more expensive.</p><p>Limiting concurrency is not a retreat from modern tooling. It is an engineering measure that protects cognitive integrity. A team can start with a few unglamorous practices:</p><ul><li>Set a limit on active agent workflows per engineer instead of rewarding unlimited concurrency.</li><li>Filter low-confidence, duplicate, and out-of-scope results automatically before asking for human attention.</li><li>Require every agent to deliver a change summary, key assumptions, verification evidence, and known gaps.</li><li>Reserve uninterrupted, notification-free time for understanding and reviewing complex work.</li><li>Measure the path from start to safe production, not merely the time the model spent generating.</li></ul><p>Productivity research supports this broader view. SPACE rejects the single metric; DORA emphasizes the way platforms, process, architecture, and value streams shape the outcome of AI adoption.<sup class="ref"><a href="#ref-4">[4]</a></sup><sup class="ref"><a href="#ref-6">[6]</a></sup> The manager’s real optimization target is not “model calls per engineer.” It is whether the team can deliver the right value with less cognitive strain and more dependable quality.</p><h2 id="Six-Peopleware-rules-for-AI-teams"><span class="section-no">11</span><a href="#Six-Peopleware-rules-for-AI-teams" class="headerlink" title="Six Peopleware rules for AI teams"></a>Six <em>Peopleware</em> rules for AI teams</h2><p>Bringing <em>Peopleware</em> into an agent workflow does not require a grand new management doctrine. A better place to start is to turn respect for human work into concrete system constraints.</p><div class="principles"><div class="principle"><strong>01 · Protect continuity</strong> — Treat deep understanding and review time as production capacity. Batch agent updates instead of making every event an interruption.</div><div class="principle"><strong>02 · Limit work in progress</strong> — Bound concurrency by human capacity to understand and verify, not by the number of tasks the tools can launch.</div><div class="principle"><strong>03 · Keep decisions and ownership together</strong> — Name who frames the goal, accepts the risk, and owns the release. “AI-generated” must never mean ownerless.</div><div class="principle"><strong>04 · Reward shared capability</strong> — Recognize reusable knowledge, review quality, and team outcomes—not code volume, commit counts, or the number of agents used.</div><div class="principle"><strong>05 · Make uncertainty speakable</strong> — Leaders should model questions, admit what they do not know, and thank people for bad news. Challenging the model is normal engineering work.</div><div class="principle"><strong>06 · Preserve memory and slack</strong> — Experience without a visible output is not waste. Stable teams, cross-training, and recovery capacity are insurance for the system.</div></div><div class="diagnostic"><h3>A five-minute diagnostic for managers</h3><ol><li>Can the team say whether generation, understanding, verification, or release capacity is currently the scarcest?</li><li>How many active agent workflows does one engineer carry? Was that number chosen deliberately?</li><li>When was a model output last rejected? Did the reason become a rule, test, or evaluation?</li><li>Can someone say “I don’t understand this code” without being judged as bad at AI?</li><li>Is time saved by AI reinvested in learning, quality, and customer value—or immediately filled with more work?</li></ol></div><h2 id="The-better-AI-gets-the-more-Peopleware-matters"><span class="section-no">12</span><a href="#The-better-AI-gets-the-more-Peopleware-matters" class="headerlink" title="The better AI gets, the more Peopleware matters"></a>The better AI gets, the more <em>Peopleware</em> matters</h2><p><em>The Mythical Man-Month</em> taught us that adding people does not accelerate a software project linearly because communication and coordination grow with the team. <em>Peopleware</em> went further: even without adding people, even with better tools, productivity collapses when an organization ignores cognition, emotion, relationships, and the conditions of work.</p><p>AI has not overturned either book. It has given their old problems new forms.</p><p>We once worried about adding programmers to a late project. Now we should worry about adding agents to a process already out of control. Managers once consumed engineers’ days with meetings, reports, and procedure. Now model output, permission requests, review queues, and parallel tasks can consume the same finite attention. Teams once lost flow to office noise. Now they can lose it to AI workflows that never stop asking for the next decision.</p><p>The more capable the tool becomes, the easier it is to see the person as the slow, expensive component that should be compressed. Yet this is exactly when judgment, trust, responsibility, and imagination become most valuable. AI can generate code, but it cannot decide on behalf of an organization what deserves to exist. It can offer options, but it cannot carry the consequences of choosing one. It can imitate the language of collaboration, but it cannot automatically create trust.</p><p>After rereading <em>Peopleware</em>, my conclusion is not the comforting slogan that people will never be replaced. It is something less reassuring and more useful:</p><p>AI will not make a software organization better by itself. It will make the organization more like itself.</p><p>An organization that trusts people, protects focus, and cares about quality can use AI to extend its abilities dramatically. One that worships metrics, exhausts teams, and chases short-term output will use the same technology to accumulate technical debt, cognitive debt, and organizational debt at greater speed. DORA’s description of AI as an amplifier gives that observation a timely empirical echo.<sup class="ref"><a href="#ref-5">[5]</a></sup></p><p>The software teams that lead the next era may not run the most agents or have permanent access to the strongest model. They may simply be the first to understand that when code is no longer scarce, people are what must be protected.</p><section class="references" id="references"><h2 data-no-number="true">References and further reading</h2><p class="note"><em>Peopleware</em> provides the essay’s central line of argument. The research below is used to ground the discussion of task switching, psychological safety, and productivity measurement. Links point to publishers, paper records, or the research organizations themselves.</p><ol><li id="ref-1">DeMarco, Tom, and Timothy Lister. <em><a href="https://www.pearson.com/en-us/subject-catalog/p/peopleware-productive-projects-and-teams/P200000000214/9780321934116">Peopleware: Productive Projects and Teams</a></em>, 3rd ed. Addison-Wesley Professional, 2013.</li><li id="ref-2">Rubinstein, Joshua S., David E. Meyer, and Jeffrey E. Evans. “<a href="https://pubmed.ncbi.nlm.nih.gov/11518143/">Executive Control of Cognitive Processes in Task Switching</a>.” <em>Journal of Experimental Psychology: Human Perception and Performance</em>, 27(4), 2001.</li><li id="ref-3">Edmondson, Amy. “<a href="https://doi.org/10.2307/2666999">Psychological Safety and Learning Behavior in Work Teams</a>.” <em>Administrative Science Quarterly</em>, 44(2), 1999.</li><li id="ref-4">Forsgren, Nicole, et al. “<a href="https://www.microsoft.com/en-us/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/">The SPACE of Developer Productivity: There’s More to It Than You Think</a>.” <em>ACM Queue</em>, 19(1), 2021.</li><li id="ref-5">Harvey, Nathen, and Derek DeBellis. “<a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report">Announcing the 2025 DORA Report: State of AI-Assisted Software Development</a>.” Google Cloud Blog, 2025.</li><li id="ref-6">DORA / Google Cloud. “<a href="https://cloud.google.com/resources/content/2025-dora-ai-assisted-software-development-report">2025 State of AI-Assisted Software Development Report</a>.” 2025.</li><li id="ref-7">Becker, Joel, et al. “<a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity</a>.” METR, 2025.</li><li id="ref-8">Becker, Joel, et al. “<a href="https://metr.org/blog/2026-02-24-uplift-update/">We Are Changing Our Developer Productivity Experiment Design</a>.” METR, 2026.</li><li id="ref-9">Brooks, Frederick P. Jr. <em>The Mythical Man-Month: Essays on Software Engineering</em>. Addison-Wesley, 1975; Anniversary Edition, 1995.</li><li id="ref-10">Skelton, Matthew, and Manuel Pais. <em>Team Topologies: Organizing Business and Technology Teams for Fast Flow</em>. IT Revolution, 2019.</li></ol></section>]]>
    </content>
    <id>https://ryu.xin/posts/peopleware-ai-era/</id>
    <link href="https://ryu.xin/posts/peopleware-ai-era/"/>
    <published>2026-07-30T16:00:00.000Z</published>
    <summary>A fresh reading of Peopleware for the age of coding agents: when code is abundant, attention, trust, judgment, and shared responsibility become the scarce resources.</summary>
    <title>Revisiting Peopleware: The Better AI Gets, the More Software Depends on People</title>
    <updated>2026-07-30T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Ryu Xin</name>
    </author>
    <category term="Software Engineering" scheme="https://ryu.xin/categories/software-engineering/"/>
    <category term="AI" scheme="https://ryu.xin/tags/AI/"/>
    <category term="Software Engineering" scheme="https://ryu.xin/tags/Software-Engineering/"/>
    <category term="Books" scheme="https://ryu.xin/tags/Books/"/>
    <category term="Architecture" scheme="https://ryu.xin/tags/Architecture/"/>
    <content>
      <![CDATA[<header class="abstract"><h2 data-no-number="true">Abstract</h2><p>Generative AI has pushed the marginal cost of producing code to a level few software teams would have believed possible only a few years ago. That has encouraged a seductive conclusion: if code can be produced almost on demand, the old laws of software engineering must be on their way out.</p><p>This essay argues the opposite. What endures in <em>The Mythical Man-Month</em> is not Brooks’s view of a particular language or tool. It is his account of complexity, communication, organizational structure, and conceptual integrity. AI changes the division of labor and the speed of feedback. It does not decide what a product ought to be, which constraints matter, or who remains answerable when a system fails.</p><p>The chapters that follow revisit Brooks’s central arguments and carry them forward into coding agents, multi-agent coordination, context engineering, architecture constraints, evaluation, and organizational knowledge. The point is neither that AI is merely another tool nor that it makes software engineering obsolete. The control plane of software development is moving upward—from code toward knowledge, boundaries, and systems of verification.</p></header><p class="thesis">AI has not retired <em>The Mythical Man-Month</em>. It has enlarged the question: from organizing programmers to produce code, to organizing people and agents to keep complexity under control.</p><p class="part-label">Part I · Returning to Brooks's problem</p><h2 id="Why-reread-The-Mythical-Man-Month-now"><span class="section-no">01</span><a href="#Why-reread-The-Mythical-Man-Month-now" class="headerlink" title="Why reread The Mythical Man-Month now?"></a>Why reread <em>The Mythical Man-Month</em> now?</h2><p class="lead dropcap">When <em>The Mythical Man-Month</em> first appeared in 1975, software was typed into terminals by hand, build cycles were expensive, and large systems were the province of a small number of institutions. Half a century later, we can ask a model—in ordinary language—to write an endpoint, expand a test suite, migrate a framework, or dispatch several agents into isolated workspaces. It looks like a different profession. Yet we have arrived at a version of Brooks’s old tar pit: output rises, but the system does not necessarily become easier to understand; more participants join the work, but the project does not necessarily finish sooner. <sup class="ref"><a href="#ref-1">[1]</a></sup></p><p>The book survives because it is less concerned with tools than with ratios. How much of the work can be parallelized, and how much still depends on sequential decisions? How much local speed becomes end-to-end throughput? How much new capability can a system absorb before its cognitive burden outruns the team that owns it? Tools change those ratios. They do not make them disappear.</p><p>AI makes visible output unusually easy to count: lines changed, pull requests opened, prototypes produced, tickets closed. The less visible liabilities accumulate elsewhere—unstated assumptions, permissions no one modeled, migration paths no one rehearsed, on-call load, hidden coupling, and the mental model a future maintainer will have to reconstruct. Brooks’s enduring contribution is to pull our attention away from the pile of output and back toward the shape of the system.</p><p>A useful rereading therefore starts with three questions. Which costs has AI actually removed, and which has it merely pushed downstream? What happens to coordination when the set of contributors includes agents whose context is assembled afresh for each run? And what kind of knowledge and governance turns faster generation into software that can remain healthy for years?</p><h2 id="What-a-5-billion-bet-taught-us-about-software"><span class="section-no">02</span><a href="#What-a-5-billion-bet-taught-us-about-software" class="headerlink" title="What a $5 billion bet taught us about software"></a>What a $5 billion bet taught us about software</h2><p>Brooks did not arrive at his conclusions from a quiet study. In 1964 IBM introduced System/360, a compatible family of computers intended to replace several incompatible product lines. IBM remembers the program as a $5 billion, bet-the-company gamble; Fred Brooks was one of its project leaders. Its defining commercial promise was portability within the family: customers could grow their hardware without rewriting all their software. <sup class="ref"><a href="#ref-3">[3]</a></sup></p><p>A unified hardware architecture created a platform, but it also concentrated unprecedented complexity in OS/360. Compatibility requirements, machine configurations, delivery schedules, organizational growth, and communication paths became one engineering problem. Under that pressure Brooks saw the flaw in treating software as divisible labor. Some tasks have an irreducible order. Newcomers must learn the system. Interfaces have to be negotiated. Existing team members stop producing while they explain, align, and integrate.</p><p>The modern parallel is not that an AI agent resembles a 1960s programmer. It is that we are living through another change in the production platform. Software organizations once treated the number of people available to write code as a scarce resource. Code supply is now expanding, so scarcity moves elsewhere: precise problem framing, domain judgment, architectural context, credible verification, and accountability for production outcomes. The production function has changed. Any organization that continues to manage the old scarcity will accumulate a large inventory of work that appears finished but has not truly been absorbed.</p><div class="callout"><p><strong>The useful historical analogy:</strong> System/360 unlocked reuse through a common architecture and exposed a new class of operating-system scale problems. AI unlocks code generation through a common language interface and exposes a new class of problems in knowledge consistency, verification capacity, and responsibility.</p></div><h2 id="What-did-fifty-years-of-software-engineering-actually-change"><span class="section-no">03</span><a href="#What-did-fifty-years-of-software-engineering-actually-change" class="headerlink" title="What did fifty years of software engineering actually change?"></a>What did fifty years of software engineering actually change?</h2><p>Read as a list of technologies, the last fifty years look like a sequence of revolutions. Read as an engineering history, they form a surprisingly continuous line. Structured programming constrained arbitrary control flow. Object orientation tried to gather data and behavior into comprehensible units. Agile shortened the distance between a requirement and the feedback that could disprove it. Cloud computing made infrastructure programmable. DevOps brought build, test, release, and operations into one feedback system; platform engineering turned that system into an internal product. AI coding and Agent Engineering extend the same movement by making candidate implementation—and parts of the toolchain itself—delegable.</p><dl class="timeline"><dt>1968</dt><dd>The “software crisis” entered public debate, and software engineering began to take shape as a discipline.</dd><dt>1975</dt><dd><em>The Mythical Man-Month</em> distilled the scheduling, organizational, and design lessons of large software programs. <sup class="ref"><a href="#ref-1">[1]</a></sup></dd><dt>1987</dt><dd>Brooks published “No Silver Bullet,” separating essential complexity from accidental difficulty. <sup class="ref"><a href="#ref-2">[2]</a></sup></dd><dt>1990s</dt><dd>Object orientation, design patterns, and open-source collaboration widened the boundary of reuse.</dd><dt>2001</dt><dd>The Agile Manifesto emphasized working software, human interaction, customer collaboration, and responsiveness to change. <sup class="ref"><a href="#ref-10">[10]</a></sup></dd><dt>2010s</dt><dd>Cloud, continuous delivery, SRE, and DevOps pulled feedback and operations into everyday development.</dd><dt>2021</dt><dd>Natural-language code completion reached a mass audience; developers began working alongside models.</dd><dt>2024</dt><dd>Tool use and protocols such as MCP made it easier to connect models to repositories, data, and external systems. <sup class="ref"><a href="#ref-28">[28]</a></sup></dd><dt>2025–26</dt><dd>Coding agents moved beyond completion to reading repositories, editing files, running tests, preparing changes for review, and working in parallel agent workbenches. <sup class="ref"><a href="#ref-24">[24]</a></sup> <sup class="ref"><a href="#ref-25">[25]</a></sup></dd></dl><p>AI is not an alien break in this history; it is the next rise in the level of abstraction. Every such rise removes some manual work and creates a new control surface. High-level languages needed compilers and type systems. Cloud needed infrastructure as code and observability. Continuous delivery needed automated gates. Agents need context, tool permissions, run traces, evaluations, and human approval.</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-01-software-engineering-evolution-en.webp?v=58f227e34c1f3662" width="1360" height="768" loading="lazy" alt="Fifty years of software engineering, from Code and Framework to Platform, Cloud, AI Coding, Agent Engineering, and Knowledge Engineering"><figcaption><p><strong>Figure 1 · Fifty years of software engineering.</strong> From Code to Knowledge Engineering, execution becomes increasingly automated while the engineering control plane rises toward orchestration, constraints, and organizational knowledge.</p></figcaption></figure><p class="part-label">Part II · Eight classic arguments, read for the AI era</p><h2 id="AI-changes-the-speed-of-coding-not-the-existence-of-essential-complexity"><span class="section-no">04</span><a href="#AI-changes-the-speed-of-coding-not-the-existence-of-essential-complexity" class="headerlink" title="AI changes the speed of coding, not the existence of essential complexity"></a>AI changes the speed of coding, not the existence of essential complexity</h2><p>In “No Silver Bullet,” Brooks separates two sources of difficulty. <em>Essential complexity</em> belongs to the problem itself: the relationships the software must faithfully express. <em>Accidental complexity</em> is imposed by our tools, representations, and implementation process. The distinction is often flattened into a slogan—“AI can only remove accidental complexity”—but the reality is more interesting.</p><p>AI plainly reduces a great deal of implementation friction. Boilerplate, data conversion, familiar endpoints, test scaffolding, query construction, first-draft documentation, and translation across languages can all be produced faster. It can also help people explore the essential problem by summarizing interviews, proposing counterexamples, comparing designs, tracing dependencies, and explaining an unfamiliar domain. AI is not merely a faster typist. Used well, it expands the surface area of thought.</p><p>Assistance is not abolition. A bank still has to decide what evidence justifies declining a transaction. A medical system still needs a defensible definition of acceptable risk. A collaboration product still has to reconcile permission inheritance, retention policy, and legal obligations. A model can offer candidate answers. It cannot make the trade-offs vanish, and it cannot grant itself the authority to bear the consequences.</p><p>There is a second-order effect as well. When accidental costs fall, systems tend to grow. If another service, setting, workflow, or abstraction can be added almost for free, “one more” becomes the default answer. The local implementation gets easier while the whole system becomes harder to hold in mind. This is complexity rebound: coding cost saved at one point in the value stream is consumed by more features, dependencies, states, and operational obligations elsewhere.</p><blockquote><p>“There is no single development … which by itself promises even one order-of-magnitude improvement.”</p><p>Frederick P. Brooks Jr., “No Silver Bullet,” 1987 <sup class="ref"><a href="#ref-2">[2]</a></sup></p></blockquote><p>Brooks was not arguing against progress. He was arguing against the promise that one breakthrough would transform the entire economics of building software. AI may deliver order-of-magnitude gains on particular tasks. Once the unit of analysis expands from “produce a function” to “operate the right system safely for a decade,” the claim has to be tested again.</p><h2 id="Brooks’s-Law-more-agents-can-make-a-bad-architecture-fail-faster"><span class="section-no">05</span><a href="#Brooks’s-Law-more-agents-can-make-a-bad-architecture-fail-faster" class="headerlink" title="Brooks’s Law: more agents can make a bad architecture fail faster"></a>Brooks’s Law: more agents can make a bad architecture fail faster</h2><blockquote><p>“Adding manpower to a late software project makes it later.”</p><p><em>The Mythical Man-Month</em>, Chapter 2 <sup class="ref"><a href="#ref-1">[1]</a></sup></p></blockquote><p>The law bites when three conditions hold: the work cannot be divided cleanly, newcomers need context, and the outputs must eventually be integrated. Human teams meet all three conditions. Agent systems do too. Ten agents do not create ten times the throughput if they read different versions of the requirement, edit the same surface, invent incompatible interfaces, and leave a human to settle the semantic conflicts at the end.</p><p>An agent appears to have almost no onboarding cost. Give it a repository, instructions, and tools, and it can begin. But its context is not durable understanding; it is a selection of information assembled, compressed, and reconstructed for a particular run. More parallel tasks mean more context slices, branches, build slots, and candidate changes demanding judgment. Where boundaries are vague, agents scale the vagueness with impressive efficiency.</p><p>A contemporary form of Brooks’s Law might read: <strong>adding agents to a project that has lost its conceptual boundaries usually produces more locally plausible work that cannot be safely combined.</strong> The remedy is not to reject parallelism. It is to improve divisibility first: define ownership, stabilize interfaces, write acceptance conditions, restrict write scopes, make every change independently testable—and only then choose the level of concurrency.</p><div class="table-wrap"><table><caption>The coordination costs of adding people and adding agents</caption><thead><tr><th>Source of cost</th><th>Human team</th><th>Agent team</th><th>Engineering response</th></tr></thead><tbody><tr><td>Acquiring context</td><td>Training, meetings, code reading</td><td>Retrieval, instructions, context compression</td><td>A concise system map and well-formed task packet</td></tr><tr><td>Decision consistency</td><td>Different experience and mental models</td><td>Different prompts, models, and samples</td><td>ADRs, contracts, examples, and invariants</td></tr><tr><td>Write conflicts</td><td>Several people editing the same module</td><td>Parallel branches with semantic conflicts</td><td>Ownership boundaries and small-batch integration</td></tr><tr><td>Quality judgment</td><td>Finite reviewer attention</td><td>Candidate output outruns verification</td><td>Automated gates plus risk-tiered review</td></tr><tr><td>Accountability</td><td>Roles backed by organizational authority</td><td>An agent cannot own a production outcome</td><td>A named human approver and a rollback path</td></tr></tbody></table></div><h2 id="The-Surgical-Team-are-agents-its-digital-counterpart"><span class="section-no">06</span><a href="#The-Surgical-Team-are-agents-its-digital-counterpart" class="headerlink" title="The Surgical Team: are agents its digital counterpart?"></a>The Surgical Team: are agents its digital counterpart?</h2><p>Brooks borrowed Harlan Mills’s idea of a “surgical team”: one chief programmer preserves the intellectual unity of the design and implementation, while specialists support that person much as anesthetists, nurses, and technicians support a surgeon. The point was not to celebrate the lone hero. It was to avoid dividing one central design evenly among many people and hoping that coherence would somehow emerge.</p><p>Coding agents give the idea a new and quite practical form. A technical lead can ask one agent to search the project history, another to write a migration, a third to extend the tests, and others to inspect security risks or update documentation. The lead keeps authority over the problem statement, the choice of design, and the final merge. OpenAI’s 2025 introduction of Codex described an engineering agent that could work on software tasks in parallel, inside isolated cloud environments, run tests, and return changes for review. By 2026, the product surface had shifted further toward supervising several long-running agents at once. <sup class="ref"><a href="#ref-24">[24]</a></sup> <sup class="ref"><a href="#ref-25">[25]</a></sup></p><p>This digital surgical team works only when the surgeon actually understands the system. If the lead merely distributes vague requests and nobody maintains the whole model, the arrangement becomes ten scalpels cutting at once. AI cannot supply an absent design authority. It can only amplify the authority, rules, and blind spots already present.</p><p>Nor should a modern version reproduce every weakness of a single-expert hierarchy. Conceptual authority may be concentrated, but evidence and dissent should be distributed. A security agent should be able to challenge the favored design; a test agent should look for counterexamples; a domain expert should be able to reject a false premise; important decisions should still face team review. The strongest structure is not “one person is always right,” but “one design thread remains legible while disagreement is deliberately organized.”</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-02-digital-surgical-team.webp?v=d56a31a4cdf1e66a" width="1672" height="941" loading="lazy" alt="A Digital Surgical Team with a human Tech Lead at the center, connected to Research, Implementation, Test, Security, and Documentation agents, with all output passing through a common validation and merge gate"><figcaption><p><strong>Figure 2 · The Digital Surgical Team.</strong> A human Tech Lead preserves conceptual integrity and carries final responsibility. Five specialist agents contribute research, implementation, testing, security, and documentation; every output passes through a shared Validation &amp; Merge Gate before it becomes an accepted change.</p></figcaption></figure><h2 id="Conceptual-integrity-is-becoming-a-scarce-advantage"><span class="section-no">07</span><a href="#Conceptual-integrity-is-becoming-a-scarce-advantage" class="headerlink" title="Conceptual integrity is becoming a scarce advantage"></a>Conceptual integrity is becoming a scarce advantage</h2><p>Brooks considered conceptual integrity the most important quality in system design. Users do not experience the organization chart behind a product. They experience whether the product follows a predictable set of ideas: whether the same word means the same thing, similar actions behave alike, errors are expressed consistently, and permissions and data lifecycles obey a recognizable logic.</p><p>Conceptual integrity is not the same as stylistic consistency. A formatter can standardize indentation, but it cannot decide whether “customer” and “account” belong to the same domain boundary. A framework can standardize controller code, but it cannot decide whether inventory should be reserved at order time, payment time, or shipment. The integrity that matters lives in meaning and trade-offs.</p><p>AI magnifies the difference. In a repository with precise names, stable boundaries, and tests that express business invariants, an agent can infer a sound pattern from many consistent examples. In a ten-year-old codebase containing five competing architectures, it has no reliable way to know which one represents the future. A model tends to choose the most locally plausible answer, and a historical accident quietly becomes the next convention.</p><p>This is why domain-driven design, architecture decision records, the C4 model, and evolutionary architecture have fresh importance in the AI era. <sup class="ref"><a href="#ref-12">[12]</a></sup> <sup class="ref"><a href="#ref-16">[16]</a></sup> <sup class="ref"><a href="#ref-17">[17]</a></sup> <sup class="ref"><a href="#ref-18">[18]</a></sup> Each, in a different way, makes the reason behind a design searchable, reviewable, and traceable. Their purpose is not to feed a model more prose. It is to give people and models a small, stable set of concepts they can share.</p><div class="callout"><p><strong>Conceptual integrity is a form of semantic compression.</strong> When a handful of principles explain a great many local decisions, a system is easier to learn and predict. When every file requires its own explanation, the system has lost that compressibility. AI is exceptionally good at amplifying the first kind of system—and at producing plausible deviations in the second.</p></div><h2 id="The-documentary-hypothesis-the-central-repository-will-be-a-knowledge-repository"><span class="section-no">08</span><a href="#The-documentary-hypothesis-the-central-repository-will-be-a-knowledge-repository" class="headerlink" title="The documentary hypothesis: the central repository will be a knowledge repository"></a>The documentary hypothesis: the central repository will be a knowledge repository</h2><p>In his “documentary hypothesis,” Brooks argued that a project needs a small set of pivotal documents to express its objectives, constraints, organization, budget, schedule, and interfaces. The lesson was never that more documentation is always better. It was that a few authoritative objects are needed to preserve a shared reality. In the AI era, that principle is more dependable than “the code is the documentation.”</p><p>When most code was written by people, an experienced developer could sometimes recover intent from names, commit history, and implementation detail. When agents generate substantial amounts of code quickly, the code looks more like the sediment left by decisions; it may contain very little of their rationale. An implementation passing today’s tests does not tell its next owner which behaviors are contractual promises, which are temporary choices, or which changes require a data migration or a customer notice.</p><p>A useful knowledge repository needs at least six kinds of material: business vocabulary and important scenarios; a system map and ownership boundaries; architectural principles and ADRs; interface and data contracts; build, test, and release instructions; and the lessons of incidents, rollbacks, and security boundaries. Prompts, skills, project rules, retrieval indexes, and agent memory can form an access layer. They are not substitutes for the underlying facts.</p><p>Documentation also needs a lifecycle. Material without an owner or a version—material that cannot be tested and expires separately from the code—gives an agent confidently wrong context. The healthier pattern is straightforward: one authoritative source for each fact; decisions linked to changes; contracts checked by machines wherever possible; examples drawn from real tests; and a way to detect and remove stale material.</p><div class="table-wrap"><table><caption>From code repository to knowledge repository</caption><thead><tr><th>Knowledge layer</th><th>Question it answers</th><th>Useful form</th><th>How it is verified</th></tr></thead><tbody><tr><td>Intent</td><td>Why are we doing this, and for whom?</td><td>Business goals, scenarios, measures</td><td>User feedback and outcome measures</td></tr><tr><td>Concepts</td><td>What do the system’s words mean?</td><td>Domain vocabulary, bounded contexts</td><td>Cross-team terminology review</td></tr><tr><td>Decisions</td><td>Why did we choose this design?</td><td>ADRs, risks, alternatives</td><td>Links to changes and periodic review</td></tr><tr><td>Contracts</td><td>Which behavior must not break?</td><td>Schemas, APIs, policies, invariants</td><td>Contract tests and static rules</td></tr><tr><td>Operations</td><td>How do we build, release, and recover?</td><td>Runbooks, automated scripts</td><td>Drills and observability</td></tr><tr><td>Agent layer</td><td>How should an agent act correctly?</td><td>Instructions, skills, permissions, memory</td><td>Evaluations, trace audits, human approval</td></tr></tbody></table></div><h2 id="Why-Babel-failed-shared-language-is-still-infrastructure"><span class="section-no">09</span><a href="#Why-Babel-failed-shared-language-is-still-infrastructure" class="headerlink" title="Why Babel failed: shared language is still infrastructure"></a>Why Babel failed: shared language is still infrastructure</h2><p><em>The Mythical Man-Month</em> uses Babel to discuss a failure of communication. Projects fail not only because the technology is hard, but because their participants cease to share a language and a picture of the system. As a group grows, its potential communication paths rise roughly with the square of its size. Hierarchies, modules, and interfaces exist in part to prevent every participant from having to communicate with every other one.</p><p>Agents do not tire of meetings, but they bring their own version of Babel. One reads the product specification, another reads the code, and a third receives only the task description. Each may carry a different definition of “done.” A larger context window does not settle conflicts between sources, determine which one is current, or establish which one has authority. Memory can make matters worse by carrying an obsolete judgment cleanly and consistently into a new task.</p><p>Open protocols such as the Model Context Protocol (MCP) and Agent2Agent (A2A) aim, respectively, to standardize how models connect to tools and data and how agents interoperate. <sup class="ref"><a href="#ref-28">[28]</a></sup> <sup class="ref"><a href="#ref-29">[29]</a></sup> This work matters, but a protocol answers whether information can be exchanged, not whether its meaning is agreed. HTTP allowed services to communicate; it did not eliminate contract failures in distributed systems. Agents being able to call one another does not give them a shared understanding.</p><p>Context engineering is therefore an information-architecture problem before it is a prompt-size problem. A system needs priorities among sources, timestamps, scope, versions, and a way to resolve conflict. A handoff should contain the decision summary, open questions, evidence, and validation status—not merely the full chat transcript. Shared language has to be designed.</p><h2 id="The-second-system-effect-when-features-become-nearly-free"><span class="section-no">10</span><a href="#The-second-system-effect-when-features-become-nearly-free" class="headerlink" title="The second-system effect when features become nearly free"></a>The second-system effect when features become nearly free</h2><p>Brooks observed that designers of a second system are tempted to include every idea they restrained themselves from putting into the first. The result is often bloated and over-engineered. AI makes that temptation stronger. Features once rejected because they were expensive can now appear as prototypes in hours. An abstraction that once demanded careful debate can be produced by asking a model to “make it more general.”</p><p>The cost of generating a feature and the cost of owning it are not the same number. Every new capability widens the test matrix, permission surface, documentation, monitoring, compatibility promise, and set of choices presented to users. Agents are good at completing a visible happy path. Most long-term cost lies in the failure paths: how old data migrates, how partial success is compensated, what happens when a dependency times out, and how an audit explains an automated decision.</p><p>The danger in vibe coding is not the use of natural language. It is the confusion of “it runs” with “we can responsibly own it.” Prototypes should move fast. Once a system carries real money, data, or organizational process, it owes a productionization tax: threat modeling, observability, capacity planning, recovery, data governance, and service objectives. AI can help pay that tax. It cannot declare the bill nonexistent.</p><p>Resisting the second-system effect means valuing deletion as highly as addition. Give the product a feature budget. Ask what concept each new concept replaces. Put limits on dependencies and configuration. Judge value by product outcomes, not generation speed. Mature AI engineering is not the ability to make anything; it is the judgment not to generate what should not exist.</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-03-complexity-rebound-curve-en.webp?v=6840b6f42a6636dc" width="1360" height="768" loading="lazy" alt="A complexity rebound curve in which implementation cost per feature falls with AI while feature count, dependency count, and verification burden rise, causing total cost of ownership to rebound without constraints"><figcaption><p><strong>Figure 3 · The complexity rebound curve.</strong> AI lowers the cost of an individual implementation while stimulating growth in features, dependencies, and verification load. Without sufficient architectural constraints and verification capacity, the local efficiency gain turns into higher total cost of ownership after the inflection point.</p></figcaption></figure><h2 id="Plan-to-throw-one-away-from-grand-rewrites-to-replaceable-experiments"><span class="section-no">11</span><a href="#Plan-to-throw-one-away-from-grand-rewrites-to-replaceable-experiments" class="headerlink" title="Plan to throw one away: from grand rewrites to replaceable experiments"></a>Plan to throw one away: from grand rewrites to replaceable experiments</h2><p>“Plan to throw one away” is often repeated as a romantic case for the rewrite. Its real warning is that a first design, made before the problem is understood, will usually be a learning instrument. AI does make exploratory implementation cheaper. A team can compare data models, API shapes, or migration strategies quickly, using working code rather than slides to expose what it does not yet know.</p><p>Brooks reconsidered the maxim in the anniversary edition. He came to favor incremental growth: a system should develop through continuing feedback, not by completing one disposable whole and then replacing it wholesale. That revision matters even more now. AI lowers the cost of regenerating an implementation; it does not lower the cost of replacing a production system by the same amount. Production contains data, customer habits, external integrations, audit history, and hard-won operating knowledge. None can be recreated with a prompt.</p><p>The modern rule should be: <strong>make experiments disposable and assets migratable.</strong> Isolate uncertainty in a spike, sandbox, or shadow implementation. State the learning goal before the work enters the main branch. Protect external behavior with contract tests, make database migrations reversible, and replace old capability a piece at a time. When a prototype accidentally becomes production, require an explicit ownership and production-readiness review; having run once is not an inheritance mechanism.</p><p>AI also makes it practical to generate several candidates for the same requirement and choose among them with evaluations and benchmarks. Throwing one away then becomes the ordinary cost of search, not a failure. The evaluation criteria must come first, however. Otherwise, the team is simply choosing the most attractive of several answers it cannot explain.</p><h2 id="No-silver-bullet-why-the-myth-keeps-returning"><span class="section-no">12</span><a href="#No-silver-bullet-why-the-myth-keeps-returning" class="headerlink" title="No silver bullet: why the myth keeps returning"></a>No silver bullet: why the myth keeps returning</h2><p>Every generation of software technology spends a little time cast as the silver bullet: fourth-generation languages, objects, components, low-code systems, microservices, cloud-native platforms, and now large language models. All created genuine value. All met a new form of complexity when their field of application widened. The myth returns because a local gain in production is so easily projected onto the delivery of the whole system.</p><p>AI is unusual in that it touches many stages at once—requirements, design exploration, implementation, testing, operations, and knowledge retrieval. Its reach may prove broader than that of any previous single tool. Breadth is still not freedom from constraints. As long as software models a changing world, it must deal with incomplete requirements, conflicting aims, organizational power, and an unknowable future.</p><p>“No silver bullet” must not become an excuse for conservatism. Brooks did not claim that tools were useless. He argued that no single technology promised an order-of-magnitude improvement in software productivity, reliability, and simplicity within a decade. <sup class="ref"><a href="#ref-2">[2]</a></sup> An engineer can hold two ideas at once: use AI aggressively to remove repetitive work, and refuse to treat demo speed as lifecycle evidence.</p><p>Durable improvement usually comes from a combination: smaller system boundaries, clearer domain models, shorter feedback loops, better tools, more automated verification, safer releases, and healthier organizational design. AI can strengthen that combination. It cannot stand in for it.</p><div class="table-wrap"><table><caption>Brooks's arguments and their AI-era counterparts</caption><thead><tr><th>Brooks’s subject</th><th>The AI-era question</th><th>Principle to preserve</th></tr></thead><tbody><tr><td>The Tar Pit</td><td>Generation is easy; production and maintenance remain hard</td><td>Define done across the lifecycle, not at the demo</td></tr><tr><td>The Mythical Man-Month</td><td>More agents add context and integration taxes</td><td>Decompose first, then parallelize</td></tr><tr><td>The Surgical Team</td><td>One lead coordinates specialist agents</td><td>Concentrate conceptual authority; distribute evidence and challenge</td></tr><tr><td>Aristocracy, Democracy, and System Design</td><td>How should a design thread coexist with broad participation?</td><td>Open the decision process; keep the resulting semantics coherent</td></tr><tr><td>Second-System Effect</td><td>Cheap feature generation causes scope to explode</td><td>Use complexity budgets and deliberate deletion</td></tr><tr><td>Passing the Word</td><td>How do rules, skills, and memory travel?</td><td>Name the authoritative source, version, and scope</td></tr><tr><td>Why Did the Tower of Babel Fail?</td><td>Context fragments across agents</td><td>Use a shared language and structured handoffs</td></tr><tr><td>Calling the Shot</td><td>Agent task duration and success are difficult to estimate</td><td>Use historical data, percentiles, and confidence</td></tr><tr><td>Ten Pounds in a Five-Pound Sack</td><td>Context, compute, latency, and cost remain finite</td><td>Select information; do not assume infinite context</td></tr><tr><td>The Documentary Hypothesis</td><td>The knowledge repository becomes a generation control plane</td><td>Prefer a few high-signal, verifiable documents</td></tr><tr><td>Plan to Throw One Away</td><td>Several experimental implementations can be generated quickly</td><td>Discard experiments; preserve migratable data and contracts</td></tr><tr><td>Sharp Tools</td><td>Models, MCP, sandboxes, and CI form a toolchain</td><td>Keep it least-privileged, reproducible, and auditable</td></tr><tr><td>The Whole and the Parts</td><td>Local tests pass while system behavior is wrong</td><td>Layer unit, contract, end-to-end tests, and evaluations</td></tr><tr><td>Hatching a Catastrophe</td><td>Small deviations surface together late in integration</td><td>Use small batches, WIP limits, and leading signals</td></tr><tr><td>The Other Face</td><td>AI-generated interfaces and explanations shape trust</td><td>Treat comprehensibility as a product contract</td></tr><tr><td>No Silver Bullet</td><td>Model capability is mistaken for system capability</td><td>Separate task benchmarks, team throughput, and business outcomes</td></tr></tbody></table></div><p class="part-label">Part III · From AI Coding to Agent Engineering</p><h2 id="From-code-assets-to-knowledge-assets"><span class="section-no">13</span><a href="#From-code-assets-to-knowledge-assets" class="headerlink" title="From code assets to knowledge assets"></a>From code assets to knowledge assets</h2><p>Software organizations have long treated source code as their central asset, and with good reason: code is the final authority executed by the machine. As AI generation becomes ordinary, however, the economics begin to change. More implementations can be reproduced from specifications, contracts, and examples. Some code starts to resemble a compiled artifact or a cache—still important and carefully controlled, but no longer a complete account of the organization’s rarest knowledge.</p><p>That idea should not be stretched into another grand claim. Production code is not a temporary file that can be deleted on a whim. It contains verified edge cases, performance work, compliance evidence, and repairs made after incidents. If the knowledge that produced it is incomplete, the code itself may be the only surviving truth. “Code as cache” is a directional observation: stronger specifications and verification make more implementation detail reproducible. It is not a description of where most systems are today.</p><p>The assets that grow in value are those behind generation and judgment: domain models, constraints, policy, decision records, evaluation suites, failure cases, operational experience, tool capabilities, and permission models. They determine what an agent can produce and what must never enter production. TOGAF’s Architecture Repository, DDD’s domain knowledge, and SRE runbooks begin to look like parts of the same control plane. <sup class="ref"><a href="#ref-12">[12]</a></sup> <sup class="ref"><a href="#ref-14">[14]</a></sup> <sup class="ref"><a href="#ref-20">[20]</a></sup></p><p>Knowledge assets differ from code assets in a fundamental way: storage alone does not make them valuable. Knowledge needs provenance, an owner, an applicability boundary, a refresh cycle, and a process for resolving conflict. A vector database can retrieve a passage; it cannot decide whether that passage still represents an organizational decision. Knowledge Engineering is less about retrieval scores than about governing what counts as fact.</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-04-software-asset-center-migration-en.webp?v=be78cd1278c5ca21" width="1360" height="768" loading="lazy" alt="Software assets plotted against reproducibility and governance value, moving from Source Code through Framework and Platform to Knowledge, Skill, Memory, and Architecture Repository"><figcaption><p><strong>Figure 4 · The center of gravity in software assets.</strong> As implementation becomes more reproducible, value moves from code, frameworks, and platforms toward knowledge, skills, memory, and the Architecture Repository. These assets form an organizational control plane through versioned decisions, constraints, and policies.</p></figcaption></figure><h2 id="Agent-Engineering-beyond-the-prompt-toward-an-operating-system"><span class="section-no">14</span><a href="#Agent-Engineering-beyond-the-prompt-toward-an-operating-system" class="headerlink" title="Agent Engineering: beyond the prompt, toward an operating system"></a>Agent Engineering: beyond the prompt, toward an operating system</h2><p>Prompt Engineering asks how a single input can elicit a better output. Context Engineering asks which information a model should receive, and when. Loop Engineering deals with how a model uses tools, observes results, corrects itself, and stops. Agent Engineering places that model inside an operable, observable, governable system. Knowledge Engineering, finally, manages the production and lifecycle of the facts on which the whole system depends.</p><p>These are not competing phases. They contain one another. A good prompt cannot repair bad data. Good context cannot make an unbounded permission safe. A sound loop cannot rescue the wrong goal, and a well-designed agent cannot compensate for the absence of an authoritative source of organizational knowledge. As the engineering matures, attention shifts from “What did the model say?” to “Under what conditions may this system act, and how can its result be proved?”</p><p>OpenAI’s practical guide treats models, tools, and instructions as foundational, distinguishes single-agent from multi-agent orchestration, and emphasizes guardrails. The Agents SDK brings tool use, handoffs, sessions, human intervention, and tracing into the runtime; traces can capture generations, tool calls, handoffs, and guardrail events. <sup class="ref"><a href="#ref-26">[26]</a></sup> <sup class="ref"><a href="#ref-27">[27]</a></sup> Anthropic’s account of effective agents offers a complementary lesson: begin with simple, composable patterns and add autonomy only when the value of the task justifies the added complexity. <sup class="ref"><a href="#ref-30">[30]</a></sup></p><p>The family resemblance to Brooks is strong. A few clear components beat an ornate framework. Organization and interfaces matter more than headcount. The system needs a control thread a person can still follow. Agent Engineering is not the art of connecting more models. It is the design of an execution organization that can delegate safely, detect drift, retain evidence, and stop when it should.</p><div class="table-wrap"><table><caption>Five engineering layers, from prompt to knowledge</caption><thead><tr><th>Layer</th><th>Core question</th><th>Primary artifacts</th><th>Typical failure</th></tr></thead><tbody><tr><td>Prompt</td><td>How is the current task expressed?</td><td>Goal, constraints, output format</td><td>Ambiguous instructions, no acceptance test</td></tr><tr><td>Context</td><td>Which facts are needed?</td><td>Retrieval, project map, state summary</td><td>Stale, conflicting, or noisy information</td></tr><tr><td>Loop</td><td>How does the system observe, act, and stop?</td><td>Tool calls, retries, budgets, stop conditions</td><td>Loops, needless calls, compounding errors</td></tr><tr><td>Agent</td><td>How is work delegated and carried through?</td><td>Roles, permissions, handoffs, guardrails, traces</td><td>Blurred responsibility, excess authority, poor auditability</td></tr><tr><td>Knowledge</td><td>How are facts produced and refreshed?</td><td>Domain models, ADRs, contracts, evaluations, memory</td><td>Decay, unknown provenance, fossilized rules</td></tr></tbody></table></div><h2 id="Multiple-agents-are-an-organizational-design-not-free-parallelism"><span class="section-no">15</span><a href="#Multiple-agents-are-an-organizational-design-not-free-parallelism" class="headerlink" title="Multiple agents are an organizational design, not free parallelism"></a>Multiple agents are an organizational design, not free parallelism</h2><p>Treating agents like cloud instances is one of the most misleading analogies in this field. Computation scales out cleanly when it has no shared state. Software work commonly revolves around shared concepts and shared files. Multiple agents help when the work is genuinely divisible: independent modules, distinct evidence sources, non-overlapping verification roles, or candidate results that can be recombined through explicit contracts.</p><p>As coupling rises, four taxes appear. There is a <em>decomposition tax</em>: someone must cut the problem into units that can actually be completed independently. There is a <em>context tax</em>: each agent needs enough information, without contradictions. There is a <em>coordination tax</em>: dependencies, order, and changes have to be scheduled. And there is a <em>verification tax</em>: the local results must eventually be shown to fit together at the system level.</p><p>Multi-agent designs tend to use one of two basic shapes. In a manager pattern, a central agent retains control and invokes specialist agents as tools. In a handoff pattern, control passes to a new specialist. The first keeps the main thread coherent; the second allows greater specialist autonomy in a long workflow. Neither is universally better. The choice depends on who must retain the final context, whether mistakes are reversible, and whether a transfer of control should involve the user. <sup class="ref"><a href="#ref-26">[26]</a></sup> <sup class="ref"><a href="#ref-27">[27]</a></sup></p><p>The most useful rule still comes from queueing theory and continuous delivery: limit work in progress, keep batches small, and integrate early. Starting twenty tasks at once and settling the conflicts at the end is rarely as effective as maintaining a few high-value parallel streams, each continually passing build, test, and contract gates. The faster the agents work, the more important WIP limits become; otherwise, verification is simply the new late project.</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-05-multi-agent-throughput-model-en.webp?v=2af89814048e70c5" width="1360" height="768" loading="lazy" alt="A multi-agent throughput model in which theoretical parallel gain is reduced by decomposition, context, coordination, and verification taxes until marginal gain becomes negative as task coupling rises"><figcaption><p><strong>Figure 5 · The multi-agent throughput model.</strong> Net throughput is theoretical parallel gain minus the costs of decomposition, context, coordination, and verification. Those taxes grow with coupling; beyond a certain point, adding another agent produces negative marginal value.</p></figcaption></figure><h2 id="Architecture-must-become-executable-governance"><span class="section-no">16</span><a href="#Architecture-must-become-executable-governance" class="headerlink" title="Architecture must become executable governance"></a>Architecture must become executable governance</h2><p>Architecture documents have traditionally been written for people to read. With agents in the development path, architectural principles also have to operate at execution time. “Keep modules loosely coupled” is too vague on its own. A useful rule says which modules may depend on which, which service alone may write a particular class of data, which APIs require idempotency keys, which directories an agent must not edit, and which changes need approval from a security owner.</p><p>Architecture now needs two representations. One expresses intent for people: principles, models, trade-offs, and the reasons for exceptions. The other expresses constraints for machines: types, schemas, static-analysis rules, policy as code, tests, CI gates, permission manifests, and deployment checks. Intent without enforcement becomes a wish. Enforcement without intent becomes a prohibition nobody can explain.</p><p>An Architecture Guardian should not merely be another agent that leaves comments. It should be a layered control system. Low-risk rules run automatically. Medium-risk deviations require an explanation. High-risk actions require human approval. Every exception carries an owner and an expiry date. Tools follow least privilege; reading and writing are separated; an agent stops before an irreversible production action by default; important runs remain auditable; sensitive context has an explicit boundary.</p><p>Testing also expands into evaluation. Deterministic code can be checked with input-output assertions. A system containing models must also be evaluated for task success, tool choice, factuality, safety, cost, latency, and regression. Its evaluation suite should grow from real failures and critical business scenarios. Otherwise a model upgrade can improve the headline score while quietly changing the behavior at the edge of the business.</p><div class="principles"><div class="principle"><strong>01 · Constraints have scope</strong> — Every rule names its source and the directory or system boundary where it applies. A global slogan does not govern every task.</div><div class="principle"><strong>02 · Evidence is reproducible</strong> — An agent delivers more than a patch: it includes verification commands, a summary of results, and the risks it did not verify.</div><div class="principle"><strong>03 · Authority is narrow</strong> — By default, an agent receives only the tools, network, files, and environment access required for its task.</div><div class="principle"><strong>04 · Exceptions expire</strong> — Every bypass has an owner, a reason, a review date, and an automatic reminder.</div><div class="principle"><strong>05 · Changes can be reversed</strong> — Rollback, compensation, and data recovery are completion criteria—not patches invented after an incident.</div><div class="principle"><strong>06 · Runs can be audited</strong> — Record critical context, tool calls, approvals, and results without retaining sensitive material without limit.</div></div><h2 id="Rethinking-productivity-more-code-is-not-faster-value"><span class="section-no">17</span><a href="#Rethinking-productivity-more-code-is-not-faster-value" class="headerlink" title="Rethinking productivity: more code is not faster value"></a>Rethinking productivity: more code is not faster value</h2><p>The worst managerial response to AI is to prove the return on investment with lines of code, commit counts, or tasks completed by agents. The SPACE framework already warns that developer productivity spans satisfaction and well-being, performance, activity, communication and collaboration, and efficiency and flow. No single measure can stand in for all five. <sup class="ref"><a href="#ref-21">[21]</a></sup> As generation gets cheaper, the distance between visible activity and delivered value only widens.</p><p>Empirical results also argue for restraint. In 2025, METR ran a randomized controlled trial with 16 developers working on 246 real tasks in mature open-source projects they knew well. Under the study’s particular population and early-2025 tools, the group allowed to use AI took about 19 percent longer on average. The researchers explicitly framed the result as a snapshot of a population, a toolset, and a moment—not a conclusion that AI will always reduce productivity. <sup class="ref"><a href="#ref-32">[32]</a></sup> Its most useful lesson is simpler: feeling faster is not a measurement.</p><p>The 2025 DORA report approaches the other side of the question. It describes successful AI adoption as a systems problem rather than a tool problem, and emphasizes value-stream management as the means by which local gains become product performance. <sup class="ref"><a href="#ref-31">[31]</a></sup> That is a Brooks-shaped argument. Individual speed is not project throughput; project throughput is not a business outcome. Architecture, platforms, process, and culture mediate the effect of the tool.</p><p>A credible scorecard watches four levels at once. At the task level: completion time, rework, and evaluation pass rate. At the engineering-system level: change lead time, deployment frequency, failure rate, and recovery time. At the team level: cognitive load, review queues, and the spread of knowledge. At the business level: user outcomes, risk, and total cost. The analysis should also separate greenfield work from legacy systems, familiar repositories from unfamiliar ones, and short tasks from long ones. An average is not a universal law.</p><div class="callout"><p><strong>A better headline measure:</strong> how long does it take a proposed business change to become verified, reversible, maintainable reality? “How much did the agent generate?” rewards inventory. The first question follows the flow of value.</p></div><h2 id="The-human-role-moves-toward-intent-boundaries-and-responsibility"><span class="section-no">18</span><a href="#The-human-role-moves-toward-intent-boundaries-and-responsibility" class="headerlink" title="The human role moves toward intent, boundaries, and responsibility"></a>The human role moves toward intent, boundaries, and responsibility</h2><p>“AI amplifies architects, not programmers” is memorable and incomplete. Good programmers have never been mere typists. At the level of code, they discover contradictions in requirements, performance limits, and failure modes. The change is not that programmers disappear while architects prevail. It is that every software role has to move toward judgments with greater leverage.</p><p>The engineer’s growing responsibilities include turning vague problems into testable hypotheses; finding domain boundaries and invariants; designing tasks that can be delegated safely; creating evaluations that expose mistakes; understanding the consequences for security, data, and operations; and maintaining a habit of disproof when a model offers a fluent answer. Reading and reviewing may matter more than personally entering every line.</p><p>Architects cannot retreat into the writing of rules either. Architecture is a set of decisions continually tested by code, measurements, and incidents. It belongs in the value stream. The architect needs to see where agents misread the system, which rules are routinely bypassed, and which boundaries create needless coordination—and then simplify the system in response. Governing AI behavior and governing software boundaries are becoming the same work.</p><p>Responsibility, above all, cannot be outsourced. An agent may propose a migration; the person approving the outage window still needs to understand the risk. An agent may generate an access policy; the person signing the compliance statement still needs to know who can reach the data. “The model recommended it” must not become an organizational passive voice. Every irreversible decision should have an answer to four questions: Who authorized it? On what evidence? How will it be monitored? How can it be undone?</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-06-human-work-center-migration-en.webp?v=4c67bf3f92956301" width="1360" height="768" loading="lazy" alt="Human effort moving from Typing toward Reviewing, Framing, Governing, and Learning as generation becomes more automated, with all five forms of work continuing to exist"><figcaption><p><strong>Figure 6 · The changing center of human work.</strong> As generation becomes more automated, Typing remains but a larger share of human time moves toward Reviewing, Framing, Governing, and Learning. The layers are not eliminated in sequence; judgment, stewardship, and feedback simply carry more weight.</p></figcaption></figure><p class="part-label">Part IV · An engineering path for organizations</p><h2 id="From-individual-acceleration-to-organizational-capability"><span class="section-no">19</span><a href="#From-individual-acceleration-to-organizational-capability" class="headerlink" title="From individual acceleration to organizational capability"></a>From individual acceleration to organizational capability</h2><p>The most common mistake in adopting coding agents is to buy seats first and wait for productivity to appear. Individuals can gain locally without much governance. Scaling the gain across an organization requires absorptive capacity. The sequence below is not a maturity certification. It is a practical order of operations intended to keep learning ahead of risk.</p><h3 id="Phase-one-choose-bounded-verifiable-work"><a href="#Phase-one-choose-bounded-verifiable-work" class="headerlink" title="Phase one: choose bounded, verifiable work"></a>Phase one: choose bounded, verifiable work</h3><p>Begin with tasks such as adding tests, synchronizing documentation, upgrading dependencies, fixing static-analysis findings, and building internal scaffolding. Each task class needs clear acceptance conditions, a dependable build, and a rollback path. Record baseline time and rework, not merely satisfaction. High-risk production actions, critical permissions, and irreversible data migrations should not yet be autonomous.</p><h3 id="Phase-two-repair-the-knowledge-entrance-and-feedback-loop"><a href="#Phase-two-repair-the-knowledge-entrance-and-feedback-loop" class="headerlink" title="Phase two: repair the knowledge entrance and feedback loop"></a>Phase two: repair the knowledge entrance and feedback loop</h3><p>Give each repository a one-page system map: how to build, test, and run it; its major modules and owners; and its critical constraints and prohibitions. Remove stale documentation, add high-value tests, and shorten CI. Agents do not offer a shortcut around engineering health. Brittle tests and slow feedback directly limit how many useful loops an agent can complete.</p><h3 id="Phase-three-make-architectural-rules-machine-checkable"><a href="#Phase-three-make-architectural-rules-machine-checkable" class="headerlink" title="Phase three: make architectural rules machine-checkable"></a>Phase three: make architectural rules machine-checkable</h3><p>Choose three to five of the most expensive kinds of drift—cross-layer dependencies, unauthorized data access, incompatible APIs, missing migrations, or leakage of sensitive information, for example—and turn them into static rules, contract tests, or policy gates. Keep the rule set small enough to trust, and give exceptions a formal route.</p><h3 id="Phase-four-delegate-by-risk-tier"><a href="#Phase-four-delegate-by-risk-tier" class="headerlink" title="Phase four: delegate by risk tier"></a>Phase four: delegate by risk tier</h3><p>Classify work by reversibility, data sensitivity, blast radius, and user impact. Low-risk changes may be generated and verified automatically. Medium-risk work gets a named reviewer. For high-risk work, the agent researches and proposes but does not act. Every tier preserves provenance and traces. Permissions are granted for the task, not left open indefinitely.</p><h3 id="Phase-five-add-multiple-agents-and-long-running-work-later"><a href="#Phase-five-add-multiple-agents-and-long-running-work-later" class="headerlink" title="Phase five: add multiple agents and long-running work later"></a>Phase five: add multiple agents and long-running work later</h3><p>Introduce specialist agents through a manager or handoff only after the failure modes of the single-agent workflow are understood. Give every handoff a structured packet: objective, current state, evidence, change scope, unresolved risks, and next step. Limit work in progress, and give long-running tasks budgets, checkpoints, and stop conditions.</p><h3 id="Phase-six-turn-incidents-and-evaluations-into-knowledge"><a href="#Phase-six-turn-incidents-and-evaluations-into-knowledge" class="headerlink" title="Phase six: turn incidents and evaluations into knowledge"></a>Phase six: turn incidents and evaluations into knowledge</h3><p>Convert misgenerations, missed defects, bad tool calls, and human takeovers into evaluation cases or clearer constraints. Regularly delete ineffective rules and obsolete memory. A mature organization is not one that never makes a mistake. It is one in which every mistake sharpens the control plane instead of merely lengthening the prompt.</p><div class="table-wrap"><table><caption>An operating checklist for Agent Engineering</caption><thead><tr><th>Area</th><th>Question before release</th><th>Minimum evidence</th></tr></thead><tbody><tr><td>Objective</td><td>What counts as complete—and what does not?</td><td>Executable acceptance conditions</td></tr><tr><td>Context</td><td>Where do facts come from, and which source wins a conflict?</td><td>Source, version, timestamp</td></tr><tr><td>Tools</td><td>What may the agent read or write? Can it cause an external effect?</td><td>Permission manifest and sandbox policy</td></tr><tr><td>Verification</td><td>Who proves both local and system behavior?</td><td>Tests, evaluations, scans, and human review</td></tr><tr><td>Runtime</td><td>What happens on timeout, looping, or partial failure?</td><td>Budget, retry, stopping, and compensation policies</td></tr><tr><td>Accountability</td><td>Who approves irreversible actions and takes over on failure?</td><td>Named approver and escalation path</td></tr><tr><td>Learning</td><td>How does failure update knowledge and evaluation?</td><td>Postmortem, test case, and rule-version history</td></tr></tbody></table></div><h2 id="Software-engineering’s-next-job-governing-generative-systems"><span class="section-no">20</span><a href="#Software-engineering’s-next-job-governing-generative-systems" class="headerlink" title="Software engineering’s next job: governing generative systems"></a>Software engineering’s next job: governing generative systems</h2><p>The next era of software engineering will not be one in which nobody writes code. It will be one in which more systems contain deterministic software, probabilistic models, and agents able to take action. Their boundaries will be more dynamic than those of conventional applications: the same objective may produce different paths; tools and data change in real time; persistent memory carries the past into the present. Engineering expands from managing static artifacts to managing generative behavior.</p><p>The first change is that <strong>specifications become first-class assets again</strong>. This is not a return to enormous waterfall documents. It means maintaining evolvable, testable intent: scenarios, contracts, invariants, policies, and evaluations. Specifications and implementations will exchange feedback more rapidly and may even generate parts of one another, but people retain judgment over meaning.</p><p>The second is that <strong>the software supply chain becomes a knowledge supply chain</strong>. Organizations will track not only the origin of dependency packages, but also the models, instructions, tools, knowledge sources, and evaluation versions used by an agent. A defect may enter through an expired retrieval result, contaminated memory, or a changed permission—not through a code commit.</p><p>The third is that <strong>architecture extends from structural design to behavioral governance</strong>. Yesterday’s diagrams mainly explained how components connect. Tomorrow’s must also say who may act for whom, which decisions require approval, how a system presents evidence, and when autonomy must stop. Security, compliance, SRE, product, and architecture will meet earlier in the work.</p><p>The fourth is that <strong>source code is no longer the only human-machine boundary</strong>. Natural language, schemas, policies, skills, evaluation sets, and operational traces all define system behavior. Teams will need to version, test, review, release, and roll back these objects as they do code. Prompt review, skill review, and memory review are not replacements for code review; they are new surfaces of review.</p><p>The fifth is that <strong>advantage comes from the feedback system, not from one model</strong>. Foundation models will change and tools will converge. What remains difficult to copy is the organization’s way of encoding domain knowledge as boundaries, turning real failures into evaluations, turning operational evidence into improvements, and letting agents accelerate within those constraints. The stronger the loop, the more AI behaves like leverage. The weaker the loop, the more it behaves like an amplifier of complexity.</p><figure class="article-figure"><img src="/assets/articles/mythical-man-month-ai-era/figure-07-software-engineering-control-chain-en.webp?v=4808ec36e9c3bce8" width="1360" height="768" loading="lazy" alt="A software engineering control chain from Problem to Intent, Architecture, Knowledge, Agent, Code, Deployment, Evidence, and Learning, with Evidence feeding back into Intent, Knowledge, and Evaluation"><figcaption><p><strong>Figure 7 · The software engineering control chain.</strong> The path from Problem to Learning crosses a control plane, an execution plane, and an evidence-and-learning plane. Production Evidence continually recalibrates Intent, updates Knowledge, and expands Evaluation, making engineering a closed learning system rather than a one-way code-generation pipeline.</p></figcaption></figure><h3 id="Conclusion-Brooks-was-not-wrong-the-object-of-management-has-changed"><a href="#Conclusion-Brooks-was-not-wrong-the-object-of-management-has-changed" class="headerlink" title="Conclusion: Brooks was not wrong; the object of management has changed"></a>Conclusion: Brooks was not wrong; the object of management has changed</h3><p>In 1975, the visible problem was how to organize programmers to deliver software systems of unprecedented size. In 2026, the problem has widened: how to organize people, models, tools, knowledge, and automation as they evolve a system together. We used to review commits; now we must also review an agent’s context and trail of action. We used to manage communication among developers; now we must manage handoffs among agents. Architectural constraints once lived mainly in human memory; now they must be understandable to people and executable by machines.</p><p>Some things have not changed. Software is still a model of a real problem, and every model contains choices. Complex systems still need conceptual integrity. Communication still consumes time. More participants still create coordination. Rapid production still does not replace sound judgment. Responsibility still belongs to people and institutions.</p><p>What has changed is the location of scarcity. Code is no longer the rarest input; knowledge and verification become the bottlenecks. Prototypes and candidate solutions are cheap, while selection and long-term ownership matter more. Agents amplify an architect’s reach—and propagate an architectural mistake at the same speed.</p><p>The deepest lesson of <em>The Mythical Man-Month</em> for the AI era is therefore not to distrust new tools, but to put them back inside the system. AI can help a good team verify, learn, and ship faster. It can also help an organization with unclear boundaries accumulate unexplained code at unprecedented speed. The difference has never been generation alone. It is the presence of clear intent, coherent concepts, dependable feedback, and people willing to own the consequences.</p><p>When code becomes cheap, judgment becomes expensive. When agents become ordinary, the heart of software engineering will be the reality they are required to obey.</p><section class="references" id="references"><h2 data-no-number="true">References and further reading</h2><p class="note">Product and research material is current to the source-update date shown above. Links point to authors, publishers, research teams, or official project pages wherever possible.</p><ol><li id="ref-1">Brooks, Frederick P. Jr. <em>The Mythical Man-Month: Essays on Software Engineering</em>. Addison-Wesley, 1975; Anniversary Edition, 1995.</li><li id="ref-2">Brooks, Frederick P. Jr. “<a href="https://doi.org/10.1109/MC.1987.1663532">No Silver Bullet—Essence and Accidents of Software Engineering</a>.” <em>Computer</em>, 20(4), 1987.</li><li id="ref-3">IBM. “<a href="https://www.ibm.com/history/system-360">The IBM System/360</a>.” IBM History.</li><li id="ref-4">Parnas, David L. “<a href="https://doi.org/10.1145/361598.361623">On the Criteria To Be Used in Decomposing Systems into Modules</a>.” <em>Communications of the ACM</em>, 1972.</li><li id="ref-5">Conway, Melvin E. “<a href="https://www.melconway.com/Home/Committees_Paper.html">How Do Committees Invent?</a>” <em>Datamation</em>, 1968.</li><li id="ref-6">Dijkstra, Edsger W. “<a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html">The Humble Programmer</a>.” ACM Turing Lecture, 1972.</li><li id="ref-7">Royce, Winston W. “Managing the Development of Large Software Systems.” Proceedings of IEEE WESCON, 1970.</li><li id="ref-8">Boehm, Barry W. “<a href="https://doi.org/10.1109/2.59">A Spiral Model of Software Development and Enhancement</a>.” <em>Computer</em>, 1988.</li><li id="ref-9">Gamma, Erich, et al. <em>Design Patterns: Elements of Reusable Object-Oriented Software</em>. Addison-Wesley, 1994.</li><li id="ref-10">Beck, Kent, et al. “<a href="https://agilemanifesto.org/">Manifesto for Agile Software Development</a>.” 2001.</li><li id="ref-11">Fowler, Martin. “<a href="https://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a>.” 2006.</li><li id="ref-12">Evans, Eric. <em>Domain-Driven Design: Tackling Complexity in the Heart of Software</em>. Addison-Wesley, 2003.</li><li id="ref-13">Humble, Jez, and David Farley. <em>Continuous Delivery</em>. Addison-Wesley, 2010.</li><li id="ref-14">Beyer, Betsy, et al., eds. “<a href="https://sre.google/sre-book/table-of-contents/">Site Reliability Engineering</a>.” O’Reilly / Google, 2016.</li><li id="ref-15">Forsgren, Nicole, Jez Humble, and Gene Kim. <em>Accelerate</em>. IT Revolution, 2018.</li><li id="ref-16">Nygard, Michael. “<a href="https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions">Documenting Architecture Decisions</a>.” 2011.</li><li id="ref-17">Brown, Simon. “<a href="https://c4model.com/">The C4 Model for Visualising Software Architecture</a>.”</li><li id="ref-18">Ford, Neal, Rebecca Parsons, and Patrick Kua. <em>Building Evolutionary Architectures</em>. O’Reilly, 2017.</li><li id="ref-19">Skelton, Matthew, and Manuel Pais. <em>Team Topologies</em>. IT Revolution, 2019.</li><li id="ref-20">The Open Group. “<a href="https://pubs.opengroup.org/togaf-standard/adm/chap07.html">TOGAF Standard: Architecture Repository</a>.”</li><li id="ref-21">Forsgren, Nicole, et al. “<a href="https://www.microsoft.com/en-us/research/publication/the-space-of-developer-productivity-theres-more-to-it-than-you-think/">The SPACE of Developer Productivity: There’s More to It Than You Think</a>.” <em>ACM Queue</em>, 2021.</li><li id="ref-22">Jimenez, Carlos E., et al. “<a href="https://arxiv.org/abs/2310.06770">SWE-bench: Can Language Models Resolve Real-World GitHub Issues?</a>” 2023.</li><li id="ref-23">NIST. “<a href="https://www.nist.gov/itl/ai-risk-management-framework">AI Risk Management Framework</a>.” 2023.</li><li id="ref-24">OpenAI. “<a href="https://openai.com/index/introducing-codex/">Introducing Codex</a>.” May 2025.</li><li id="ref-25">OpenAI. “<a href="https://openai.com/index/introducing-the-codex-app/">Introducing the Codex App</a>.” February 2026.</li><li id="ref-26">OpenAI. “<a href="https://openai.com/business/guides-and-resources/a-practical-guide-to-building-ai-agents/">A Practical Guide to Building Agents</a>.”</li><li id="ref-27">OpenAI. “<a href="https://openai.github.io/openai-agents-python/">OpenAI Agents SDK Documentation</a>”; see also <a href="https://openai.github.io/openai-agents-python/tracing/">Tracing</a>.</li><li id="ref-28">Anthropic. “<a href="https://www.anthropic.com/news/model-context-protocol">Introducing the Model Context Protocol</a>.” November 2024.</li><li id="ref-29">Google Developers Blog. “<a href="https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/">Announcing the Agent2Agent Protocol</a>.” April 2025.</li><li id="ref-30">Anthropic. “<a href="https://www.anthropic.com/engineering/building-effective-agents">Building Effective Agents</a>.” December 2024.</li><li id="ref-31">DORA / Google Cloud. “<a href="https://cloud.google.com/resources/content/2025-dora-ai-assisted-software-development-report">2025 State of AI-assisted Software Development Report</a>.” 2025.</li><li id="ref-32">Becker, Joel, et al. “<a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity</a>.” METR, 2025.</li><li id="ref-33">Anthropic. “<a href="https://www.anthropic.com/engineering/claude-code-best-practices">Claude Code: Best Practices for Agentic Coding</a>.” 2025.</li><li id="ref-34">Fowler, Martin. “<a href="https://martinfowler.com/articles/2025-nature-abstraction.html">The New Nature of Abstraction in Software Development</a>.” 2025.</li><li id="ref-35">Thoughtworks. “<a href="https://www.thoughtworks.com/radar">Technology Radar</a>.” Continuous series.</li><li id="ref-36">Allspaw, John, and Paul Hammond. “<a href="https://www.youtube.com/watch?v=LdOe18KhtT4">10+ Deploys Per Day: Dev and Ops Cooperation at Flickr</a>.” Velocity, 2009.</li></ol></section>]]>
    </content>
    <id>https://ryu.xin/posts/mythical-man-month-ai-era/</id>
    <link href="https://ryu.xin/posts/mythical-man-month-ai-era/"/>
    <published>2026-07-23T16:00:00.000Z</published>
    <summary>A rereading of The Mythical Man-Month for the age of coding agents, context engineering, and knowledge-driven software development.</summary>
    <title>Rereading The Mythical Man-Month: Software Engineering in the Age of AI</title>
    <updated>2026-07-23T16:00:00.000Z</updated>
  </entry>
</feed>
