BY baoyu.io — Bilingual Study Editionbaoyu.io 最新 50 篇精读
All ↩目录 ↩
#50baoyu.io宝玉 · 2026-02-27 · baoyu.io

From Writing Code to Managing Agents: Stanford's First AI Dev Course Instructor Says Most Engineers Aren't Ready从写代码到管 Agent:斯坦福首门 AI 软件开发课的讲师说,大多数工程师还没准备好

Why the next generation of engineers must master orchestrating agents, not just writing code — and why their inexperience might be the edge.为什么下一代工程师必须掌握的是编排 Agent 而不只是写代码——而他们的'没经验'恰恰可能是优势。

01

Concise Summary简洁概述

Mihail Eric argues that in the agent era, top-tier engineering ability is no longer just coding skill but the capacity to orchestrate multiple AI agents — a management discipline that maps closely onto managing human teams.

This capability, however, is bottlenecked by old-fashioned software discipline: agents can only follow explicit contracts (tests, consistent docs, uniform patterns), so codebases must be made agent-ready before agents are set loose on them.

Mihail Eric 认为,在 Agent 时代,顶尖工程能力不再只是写代码的能力,而是编排多个 AI Agent 的能力——这项管理纪律与管理人类团队高度同构。

但这项能力受制于传统软件纪律:Agent 只能遵循显式合约(测试、一致的文档、统一的模式),所以代码库必须先做好'Agent 友好'的准备,才能放手让 Agent 干活。

02

Infographic信息图

3
forces compounding the junior job crisis
叠加造就初级求职危机的力量数
top 0.1%
engineers who can truly orchestrate multiple agents well
真正能管好多 Agent 的工程师占比
1个→逐步加
agent scaling strategy: start with one, add only isolated tasks
Agent 扩展策略:从一个开始,只叠加互相隔离的任务
🌪️

The junior triple squeeze

初级开发者的三重风暴

Post-COVID layoffs cut 20-30% of staff and businesses ran fine; CS graduate numbers doubled or tripled; AI now lets employers ask 'fewer people + AI' instead of hiring more juniors. The three trends compound into a uniquely hostile entry-level market.

疫情后企业裁员 20-30% 业务照转;CS 毕业生数量翻了两三倍;AI 又让雇主开始盘算'少招人+AI'。三股力量叠加,造就了史上最难的初级求职市场。

🎮

Agents build up, not out

Agent 数量要逐步搭建,而非一步到位

Boris Cherny runs 10+ parallel Claude Code sessions, but Mihail warns juniors against copying the number. The real path is one isolated task at a time — master one agent, add a second decoupled task, then a third — because managing many agents well is 'the last boss' skill, reserved for the top 0.1%.

Boris Cherny 同时跑 10 多个 Claude Code 会话,但 Mihail 提醒初级工程师不要照搬数字。正确路径是逐个任务隔离推进:先跑通一个 Agent,再加一个互不依赖的任务,然后再加——因为真正管好多 Agent 是'最终 Boss'级技能,只有顶尖 0.1% 能做到。

📜

Tests are the contract

测试就是合约

Agents can only operate on explicit contracts — and tests are the main one. Without adequate test coverage, consistent README-to-code alignment, and uniform design patterns, an agent has no way to tell correct from broken, and errors compound into spaghetti code because the agent never self-corrects.

Agent 只能依据显式合约运作,而测试是最核心的合约。没有足够的测试覆盖、没有 README 与代码的一致性、没有统一的设计模式,Agent 就无法判断对错——而且它不会自我纠正,错误只会像滚雪球一样复合放大成意面代码。

🌱

Naivety as a superpower

无知无畏是一种超能力

Senior engineers, anchored to 20 years of habits, resist AI tools the hardest. Juniors, having never been burned by industry complexity, approach problems with an unfiltered 'why not try it' mindset — precisely the trait that makes them fast learners and natural startup founders in the AI-native transition.

资深工程师被 20 年的习惯锁死,反而最抗拒 AI 工具。初级工程师从未被行业的复杂性'吓怕过',带着'为什么不试试'的未过滤心态——这恰恰是他们学得最快、也最适合当创业者的原因。

The argument, step by step
论证推进链条
1
Diagnose the junior crisis: post-COVID layoffs, doubled CS graduate supply, and AI-enabled 'fewer hires' calculus compound into a uniquely brutal entry-level market.
诊断初级工程师危机:疫情后裁员、CS 毕业生数量翻倍、AI 带来的'少招人'算盘三者叠加,造就了史上最残酷的初级求职市场。
2
Define AI-native engineering as traditional fundamentals PLUS agentic workflow skill — not a replacement, an addition.
定义 AI 原生工程师:传统基本功加上 Agent 工作流技能——不是替代,而是叠加。
3
Correct the 'run 10 agents' misconception with a piecemeal, dependency-isolated buildup strategy, framing multi-agent mastery as an elite, rare skill.
纠正'跑 10 个 Agent'的误解,给出逐步搭建、任务隔离的策略,并将多 Agent 精通定义为稀缺的顶尖技能。
4
Reveal the underlying skill as context-switching — identical to what good human engineering managers already do daily.
揭示背后的底层技能其实是上下文切换——与优秀工程经理管理人类团队时所做的事一模一样。
5
Specify what makes a codebase agent-ready: test coverage as contract, README-code consistency, and uniform design patterns, since agents compound early errors instead of self-correcting.
具体说明什么让代码库对 Agent 友好:测试作为合约、README 与代码一致、设计模式统一——因为 Agent 不会自我纠正,只会放大早期错误。
6
Close with two cultural counterpoints: taste is built in the unglaudated last mile (even Anthropic iterates weekly), and junior naivety plus developer arrogance are double-edged assets that need validation discipline to avoid overengineering.
以两个文化性反思收尾:品味诞生于无人打分的最后一公里(连 Anthropic 都在每周迭代),初级工程师的无知无畏和'开发者的傲慢'是双刃剑,需要验证纪律来避免过度工程化。
03

Detailed Summary详细解读

The piece opens with a diagnostic: junior engineers today face three simultaneous forces, not one. Post-COVID over-hiring correction cut 20-30% of headcount at many firms with no visible business damage — proof that padding was real. Simultaneously, CS graduate output has roughly doubled or tripled since Mihail's own graduation. Layered on top, AI now gives employers a genuine alternative calculus: hire fewer people and lean on AI-native staff, rather than backfill junior roles at pre-AI ratios. None of these three forces alone would be catastrophic; their overlap is what produces near-zero response rates even from strong graduates.

Mihail then reframes the popular narrative around parallel agent orchestration. Boris Cherny's public workflow — 5 terminal sessions plus 5-10 browser sessions running concurrently — has become an aspirational benchmark, but Mihail treats it as a trap for juniors who imitate the endpoint rather than the process. His prescription is incremental and dependency-aware: complete one task with one agent until fully understood, then add a second task only if it's isolated from the first, and so on. The load-bearing constraint is decoupling — tasks that share dependencies can't be parallelized safely, so the skill isn't 'running more agents' but 'correctly identifying which tasks are independent enough to parallelize.'

The deeper mechanism Mihail identifies is context-switching, not tooling. Managing multiple agents means tracking each one's state, remembering where it stalled, and holding enough working context to resume it productively — a cognitive load nearly identical to what a good engineering manager does daily with human reports. His empirical observation reinforces this: the people best at agent orchestration tend to have prior experience managing human teams, because they already practiced attention-splitting and decision-making under incomplete information. This reframes 'agent management' as a transferable management skill rather than a novel technical one.

On codebase readiness, Mihail's core claim is that agents can only operate on explicit contracts — tests being the primary one. Insufficient test coverage means the agent has no ground truth for correctness. He adds two compounding risks: README drift from actual code creates contradictory signals the agent can't resolve, and inconsistent design patterns (two APIs doing the same thing) leave the agent guessing which convention to follow, exactly as a confused human teammate would. Crucially, because agents don't self-correct once they've internalized a wrong first impression, errors compound geometrically rather than linearly — making the *first* version of code an agent sees disproportionately important.

Mihail closes on two cultural observations that cut against the tooling narrative. First, 'taste' — the gap between merely functional software and excellent software — is built in the 'last mile,' after requirements are met, by people who keep polishing because they care about the problem, not the grade. Even Anthropic's Claude Code team reportedly rewrites their own tool with Claude every one to two weeks, evidence that no one, including the frontier lab, has settled answers — only continuous experimentation. Second, he flags 'developer arrogance' — the reflex to solve every problem with software — as a double-edged trait: powerful as a founder mindset, but dangerous now that AI makes overengineering effortless, producing polished products nobody validated demand for before building.

文章开篇给出一个诊断:今天的初级工程师同时承受三股力量,而不是一股。疫情后过度招聘的纠偏让许多公司裁掉 20-30% 的人手,业务却照常运转——证明当初的扩招确实存在冗余。与此同时,CS 毕业生数量相比 Mihail 自己毕业时大约翻了两到三倍。叠加在这之上,AI 给了雇主一种全新的算盘:招更少的人、依赖 AI 原生员工,而不是按 AI 前的比例继续填补初级岗位。这三股力量单独出现都不足以致命,但叠加在一起,就造成了即便是优秀毕业生也几乎收不到任何回复的局面。

接着 Mihail 重新框定了'并行管理多 Agent'这个流行叙事。Boris Cherny 公开分享的工作流——终端 5 个会话加浏览器 5-10 个会话同时运行——已经成为许多人向往的标杆,但 Mihail 认为这对照搬终点而非过程的初级工程师而言是个陷阱。他给出的处方是循序渐进、且对依赖关系敏感的:先用一个 Agent 把一项任务做透彻,再加第二个任务——前提是它与第一个任务互相隔离,以此类推。真正的约束是解耦:有共享依赖的任务不能安全并行,所以核心技能不是'跑更多 Agent',而是'准确判断哪些任务足够独立,可以安全并行'。

Mihail 指出的更深层机制是上下文切换,而不是工具本身。管理多个 Agent 意味着要追踪每一个的状态、记住它卡在哪里、并保有足够的工作上下文以便有效地推进——这种认知负荷几乎等同于一个优秀工程经理每天对人类下属所做的事。他的经验观察也印证了这一点:擅长 Agent 编排的人,往往有过管理人类团队的经历,因为他们已经练习过如何分配注意力、如何在信息不完整时做判断。这把'Agent 管理'重新定义为一种可迁移的管理技能,而非全新的技术技能。

关于代码库的准备就绪度,Mihail 的核心主张是:Agent 只能依据显式合约运作,而测试是最主要的合约。测试覆盖不足意味着 Agent 没有判断正确性的基准。他还补充了两个叠加风险:README 与实际代码的脱节会制造 Agent 无法自行消解的矛盾信号;不一致的设计模式(两个 API 做同一件事)则让 Agent 像困惑的人类新同事一样,不知道该遵循哪种约定。关键在于,一旦 Agent 内化了错误的第一印象,它不会自我纠正,错误因此呈几何级数而非线性复合放大——这使得 Agent 看到的'第一版代码'具有不成比例的重要性。

Mihail 最后给出两个与'工具决定论'相悖的文化观察。第一,'品味'——仅仅能用的软件与卓越软件之间的差距——是在满足需求之后的'最后一公里'里,由那些因为在乎问题本身而不是分数、持续打磨的人建立起来的。据称就连 Anthropic 的 Claude Code 团队每一两周都会用 Claude 重写自己的工具,这说明即便是前沿实验室也没有确定答案,只有持续的实验。第二,他点出'开发者的傲慢'——遇到任何问题都想用软件解决的本能——是一把双刃剑:作为创业者心态很强大,但在 AI 让过度工程变得毫不费力的当下颇具风险,容易在没验证需求前就打磨出精美却无人想要的产品。

04

FAQ常见问答

Is Mihail saying juniors should avoid running multiple agents entirely?Mihail 是说初级工程师完全不该跑多个 Agent 吗?

No — he's warning against skipping the buildup. Start with one agent, master it, then add a second only if it's fully decoupled from the first. Jumping straight to 10 without that foundation is the mistake, not multi-agent work itself.

不是。他反对的是跳过循序渐进的过程。先跑通一个 Agent,再加第二个——前提是与第一个完全解耦。直接照搬跑 10 个才是错误,多 Agent 工作本身没问题。

Why does he call tests a 'contract' rather than just quality assurance?为什么他把测试称为'合约'而不只是质量保障手段?

Because agents have no other reliable ground truth for correctness. A human can infer intent from context; an agent can only verify against explicit, checkable rules — so tests function as the enforceable definition of 'correct,' not an optional safety net.

因为 Agent 没有其他可靠的正确性基准。人类可以从上下文推断意图,但 Agent 只能对照显式、可检验的规则来验证——所以测试是'正确'这一概念的可执行定义,而不是可有可无的安全网。

Does the claim that Claude Code's own team rewrites it weekly undercut trust in the tool?Claude Code 团队自己每周重写工具,会不会削弱对该工具的信任?

It's presented as reassurance, not a red flag: it shows even the team building the frontier tool treats it as a work-in-progress requiring constant iteration, which normalizes the same experimental posture for everyday users rather than expecting a 'finished' answer.

文章把这一点当作安慰而非警示:它说明即便是打造前沿工具的团队,也把它当作需要不断迭代的半成品——这为普通用户采取同样的实验姿态提供了正当性,而不是期待一个'完成态'的答案。

Is the 'triple perfect storm' argument backed by hard data in the piece?'三重完美风暴'的说法在文中有硬数据支撑吗?

Only loosely — the 20-30% layoff figure and 'doubled/tripled' graduate numbers are Mihail's approximations from personal experience and anecdote (one graduate's 1000-application, 2-reply story), not cited labor statistics, so treat the framing as directionally credible rather than precisely quantified.

支撑较弱——20-30% 裁员比例和毕业生'翻两三倍'都是 Mihail 基于个人经验和轶事(一位毕业生投 1000 份简历只收到 2 个回复)给出的估算,而非引用的劳动力统计数据,所以这一框架应被视为方向性可信,而非精确量化。

What's the connection between 'agent-friendly' codebases and ordinary good engineering practice?'Agent 友好'的代码库和普通的良好工程实践之间是什么关系?

Mihail argues they're the same thing — an agent-friendly codebase is simply one that's friendly to a confused human newcomer too. AI adoption doesn't invent new engineering standards; it turns previously optional best practices into hard requirements.

Mihail 认为两者本质相同——Agent 友好的代码库其实就是对困惑的人类新人也友好的代码库。AI 的采用并没有发明新的工程标准,只是把此前'最好这样做'的建议变成了硬性要求。

05

In-depth Analysis · Pros & Cons深入解读 · 优缺点

Mihail Eric, who teaches Stanford's first AI-native software development course, breaks down what actually separates top engineers from struggling juniors in the agent era. He argues the shift from writing code to orchestrating agents is a distinct skill built on old-fashioned engineering discipline, not a replacement for it.

斯坦福首门 AI 原生软件开发课讲师 Mihail Eric,拆解了 Agent 时代顶尖工程师与挣扎中的初级工程师之间真正的分野。他认为从写代码到编排 Agent 是一项建立在扎实工程纪律之上的独立技能,而不是对传统能力的替代。

Strengths亮点 / 优点
  • Grounded in direct classroom + industry experience
    来自一线课堂与行业实践
    Mihail teaches the first AI-native dev course at Stanford and works as an AI lead at a startup, so his claims about codebase readiness and student behavior come from direct observation, not secondhand reporting.
    Mihail 在斯坦福教授首门 AI 原生开发课,同时在创业公司担任 AI 负责人,他关于代码库准备度和学生行为的论断来自一手观察,而非二手转述。
  • Reframes a trendy claim with a falsifiable mechanism
    用可证伪的机制重新框定流行说法
    Rather than just saying 'don't copy Boris Cherny,' he specifies the actual bottleneck — task decoupling and context-switching capacity — giving readers a concrete test for when to add another agent.
    他没有停留在'别照搬 Boris Cherny'的口号上,而是指出真正的瓶颈——任务解耦与上下文切换能力,给读者一个判断何时该增加 Agent 的具体标准。
  • Connects agent management to an existing, teachable skill
    把 Agent 管理与既有的、可传授的技能相连接
    By mapping agent orchestration onto human team management, the piece makes an abstract new skill legible through a familiar professional competency, useful for anyone transitioning from IC to lead roles.
    通过把 Agent 编排映射到人类团队管理,文章把一项抽象的新技能转化为一种熟悉的、可传授的职业能力,对从个人贡献者转向带队角色的人尤其有用。
  • Balances optimism about juniors with honest labor-market pessimism
    对初级工程师的乐观与对就业市场的悲观保持了平衡
    The piece doesn't sugarcoat the entry-level job crisis, yet still identifies a specific, non-trivial edge (no legacy habits) rather than offering generic encouragement.
    文章没有粉饰初级岗位的就业危机,但仍然指出了一个具体且非空洞的优势(没有历史包袱),而不是给出泛泛的鼓励。
Limits & Critiques局限 / 批评
  • Layoff and graduate-growth figures are anecdotal
    裁员与毕业生增长数据为轶事性估算
    The '20-30% layoffs' and 'doubled/tripled graduates' figures come from Mihail's personal recollection, not cited statistics, and the opening '1000 applications, 2 replies' story is a single anecdote generalized into a market-wide claim.
    '裁员 20-30%'和'毕业生翻两三倍'都来自 Mihail 的个人回忆而非引用数据,开篇'投 1000 份简历只收到 2 个回复'的故事也只是单一轶事,却被推广为整体市场结论。
  • The '0.1%' claim is unfalsifiable and self-serving
    '0.1%'的说法无法证伪且带有自我拔高色彩
    There's no measurement behind the claim that only the top 0.1% can orchestrate multiple agents well — it functions as a rhetorical flourish to justify slow buildup rather than an empirically grounded benchmark.
    '只有顶尖 0.1% 能管好多 Agent'这一说法背后没有任何测量依据——它更像是为'循序渐进'策略做修辞背书,而非有实证支撑的基准。
  • No counter-case for juniors who fail despite naivety
    缺少反例:并非所有天真的初级工程师都能成功
    The piece celebrates junior 'naivety' as an asset but doesn't address survivorship bias — for every junior-turned-founder it cites, many with the same naivety fail to break into a job market this piece itself describes as brutally competitive.
    文章将初级工程师的'天真'誉为资产,却没有处理幸存者偏差问题——文中提到的从课程走向创业的学生只是少数,同样天真的多数初级工程师,仍在文章自己描述的极度残酷的就业市场中难以突围。
  • Anthropic-specific anecdote may not generalize
    Anthropic 特定轶事未必具有普适性
    The claim that Claude Code's team rewrites the tool weekly with Claude itself is offered as evidence that 'even frontier teams experiment,' but it's a single secondhand anecdote from a guest lecture, not a documented practice readers can verify or apply to their own context.
    'Claude Code 团队每周用 Claude 重写工具'这一说法被用来证明'连前沿团队也在摸索',但它只是一次客座演讲中的二手轶事,既未经文档证实,读者也难以将其套用到自己的具体情境中。
Bottom line
总评

Read this if you're a junior engineer anxious about the AI-reshaped job market, or a lead trying to articulate what 'agent-ready' actually means for a codebase — the piece gives concrete, actionable framing for both. Treat the labor-market statistics and the '0.1%' claim as illustrative rhetoric rather than verified data, and weigh the optimistic junior-naivety framing against the very real hiring numbers the same piece describes.

如果你是为 AI 重塑的就业市场感到焦虑的初级工程师,或是想说清楚'Agent 友好代码库'到底意味着什么的技术负责人,这篇文章都能提供具体、可操作的框架。但请把其中的就业市场数据和'0.1%'之类的说法当作修辞性的例证,而非经过核实的数据,并把对初级工程师'无知无畏'的乐观论述,与文章自己描述的严峻招聘数字放在一起权衡。

06

Original Text原文

The English text on this side is an AI translation provided for convenience; the authoritative version is the source in the other language.

Mihail Eric taught a course at Stanford, CS146S "The Modern Software Developer," first offered in fall 2025, the first university course in the country to weave AI throughout the entire software development process. Within hours of enrollment opening, over 100 students scrambled to sign up.

Mihail is also the Head of AI at an early-stage startup in San Francisco. Previously, he led a technical team at Amazon Alexa and founded a YC-backed AI coding company. He came out of the Stanford NLP group, advised by Christopher Manning.

In an interview for EO channel's "The Thinking Mode" series, he spent 14 minutes discussing several questions: what junior developers are up against right now, how top engineers manage agents, what kind of codebase is agent-friendly, and why a junior engineer's "fearless ignorance" is actually an advantage in the age of AI.

Original video link: https://www.youtube.com/watch?v=wEsjK3Smovw

Key takeaways

Junior developers are facing a "perfect storm": post-COVID corporate layoffs of 20-30%, the number of CS graduates more than doubling within a decade, and AI making employers consider a "hire fewer people + AI" strategy — the combination makes it extremely hard for newcomers to find jobs

Managing multiple agents is "the final boss of the game" — don't think you should run 10 agents just because someone else does; start with one and scale up gradually

Agents can only operate based on explicit "contracts" (tests) — a codebase needs to be prepared with solid test coverage, documentation consistency, and consistent design patterns

Taste is cultivated in the "last mile" — even the Claude Code team itself rewrites its code every week

Senior developers tend to resist AI tools the most, while junior engineers, unburdened by historical baggage, learn the fastest

The junior developer's "triple perfect storm"

Mihail starts with a story. He knows someone who just graduated from Berkeley and sent out around 1,000 resumes, receiving only 2 replies — not interview invitations, just replies.

This isn't an isolated case. He believes the plight of junior engineers is the result of three things happening at once.

First, mass layoffs following over-hiring. Around 2021, after COVID, many companies felt they needed to expand and hired like crazy. Then they realized they'd overhired, and large-scale layoffs began. Many companies found that cutting 20%, 30% of their staff, the business kept running just fine.

Second, a surge in the number of CS graduates. Mihail says that when he graduated it was one number, and now it's roughly two to three times that.

Third, AI changed employers' calculus. Employers started running the numbers: do I keep hiring more people to fill the gap, or hire fewer but AI-native people to accomplish the same work with fewer heads?

The result of these three factors combined: a large wave of laid-off senior engineers and a large wave of newly graduated young people flooding the market at the same time, while employers' willingness to hire is actually contracting because of AI.

Mihail believes that this current generation of junior developers entering the workforce will be the first generation of the "AI-native transition." They must possess both solid traditional fundamentals and complete AI-native capabilities simultaneously — neither can be missing.

Don't think you should run 10 agents just because someone else does

In Mihail's view, the core definition of an AI-native engineer is: a solid foundation in traditional programming, systems design, and algorithmic thinking, combined with real proficiency in agentic workflows.

But he specifically flagged a common misconception. Boris Cherny, the creator of Claude Code, gave a guest lecture in his class, and Boris's practice of running 10 or even more agents simultaneously has become widely known in the developer community. Mihail says his students' first reaction after hearing this was "I should also start with 10." He believes that's exactly the wrong conclusion to draw.

Note: Boris Cherny is a Staff Engineer at Anthropic and the founding engineer of the Claude Code project. He has publicly shared his workflow: 5 Claude Code sessions open in the terminal, another 5-10 open in the browser, managing over a dozen parallel tasks at once.

His advice is to "build it up piecemeal."

First use a single agent to do one complex thing well, and confirm you've fully mastered that workflow. Then look for a second, isolated small task — say, fixing a logo. Add another agent to revise the website copy.

The key is that each task must be mutually isolated, with no dependencies between them.

Once the first one runs smoothly, add a second. Once the second is stable too, add a third. Not all 10 at once.

Truly learning to manage multiple agents is like the final boss of a game. Anyone who can do this is, even today, among the top 0.1% of users. ("Knowing how to properly handle multiple agents is like the last boss in a game. If you can do that really, really well then you are literally the top top 0.1% of users.")

Context switching: the real difficulty of managing agents

Speaking about the core skill of multi-agent workflows, Mihail points to a very everyday ability: context switching.

He offers an analogy: these agents are like a group of eager, smart interns — you hand out a task and they get to work in the terminal, code pouring out. But sometimes they get stuck.

At that point you need to switch from Agent 1 to Agent 2, then to Agent 3. Each time you switch, you have to remember where the previous agent left off, while also holding enough context to move the current task forward. Even for humans, this is hard.

Then Mihail says: what he just described is exactly what a good human manager does every day. It has nothing to do with agents — get good at this, and you'd also be an excellent team manager.

He's observed that the people who are best at orchestrating agents often have experience managing human development teams. In the process of managing people, they learned how to switch between multiple tasks, how to allocate attention, and how to make judgment calls with incomplete information — and then applied the same principles to agents.

What is an "agent-friendly codebase"

Mihail proposes a concept: the agent-friendly codebase.

The core question is: if you drop an agent into your codebase, can it understand what's going on?

He breaks this down point by point.

Tests are "contracts"

When you have an agent develop a new feature in your codebase, how does it confirm it hasn't broken anything? Through tests.

Tests are the contract that defines software correctness. If your test coverage is insufficient, it's as if you've given the agent no rules to follow.

Agents can only operate based on explicitly defined contracts. If you don't have sufficient test coverage, you haven't defined a contract for your software. ("Agents only can operate on contracts, like explicitly defined contracts of software.")

README and code need to be consistent

Anyone who's done development knows that a README goes stale almost as soon as it's written, drifting out of sync with the code. The code says one thing, the README says another. When an agent reads two contradictory descriptions at once, it gets confused: which one should it follow?

Agents rapidly compound errors

If an agent produces a misunderstanding in its first step, seeing the flawed code it created in that first step, it won't correct itself — instead it doubles down on the mistake, snowballing it, gradually turning the code into a bowl of "spaghetti code."

So the most important thing is: the first version of code an agent sees must be self-consistent, well-designed, and thoroughly tested.

Before you start letting an agent write code, get the codebase itself right first.

Design patterns need to be consistent

If one part of your codebase uses API 1 to create a certain kind of object, and another part uses API 2 to create the same kind of object, the agent doesn't know which one to pick.

But Mihail added:

If I walked into your codebase and saw two different ways of doing the same thing, I'd also ask myself: which one should I use? I don't know, both are in use, and I'd probably go ask a colleague. ("If I were walking to your codebase and saw the two different ways of doing it, I would also ask myself: should I do one or two?")

An agent-friendly codebase is, in fact, a codebase that's also friendly to humans.

Good engineering practices haven't changed — they've just become hard requirements in the age of agents, rather than "nice to have" suggestions.

Taste: the dividing line between functional software and outstanding software

What separates "software that works" from "software that's remarkable"? Mihail's answer is direct: taste.

In his class, every project has baseline requirements — say, implementing five different functional flows. Most people stop once they've met the requirements. But some students are different: they've already gotten full marks, yet they keep polishing, extending features, making the app more robust.

"The taste building happens in that last mile."

The difference lies in who genuinely wants to solve the problem itself, rather than just get the grade.

Mihail says that some of the best-performing students in his class are now starting companies built around their course projects. The course ended, but they're still working on the same thing, because they feel there's still more worth doing.

Top engineers don't stop when a task is complete — they accelerate when they spot possibility.

Even Anthropic is learning as it goes

On the subject of experimentation, Mihail gave an example. When Boris Cherny lectured in class, he mentioned that Anthropic's Claude Code team basically rewrites Claude Code itself using Claude every week or two. They use the tool they built to rewrite the tool itself.

Even a team like Anthropic, building the most cutting-edge AI coding tools, doesn't have "all the answers." They too are constantly experimenting, iterating based on user feedback, figuring out what works and what doesn't.

Mihail repeatedly emphasizes in class: I can come here and recommend tools to you, share what I think works well. But at the end of the day, you have to go hit the wall yourself.

You have to experiment yourself and see what works for you and what doesn't. Making experimentation and trial-and-error part of your workflow — that's the new way of doing software development.

A junior engineer's "fearless ignorance" is a superpower

Mihail points out that senior developers are often the ones most resistant to AI tools. People who've been writing code for 20 years are too used to their own ways, feeling like "there's only my way of doing this, the way I've always done it."

People entering the industry for the first time are completely different. They're like sponges — everything is new to them, everything feels possible. They haven't yet been "scared off" by the industry's various difficulties. They don't know how hard healthcare is, don't know how strict financial regulation is. They just see a problem and say: why not give it a try?

Young people have a kind of "good naivety," which is the perfect quality for a startup founder. ("There's like a good naivety to how young people think, which is perfect for a startup founder.")

Mihail believes that even though the job market really is getting tougher, the people who are the earliest to master AI-native skills — these very junior engineers — will ultimately turn out to be the most adaptable, fastest-learning group.

"Developer arrogance" and the trap of overengineering

Mihail also discussed the essence of CS education. He believes software development teaches how to build complex systems through digital means, how to solve systemic problems using algorithms — closer to mathematical thinking than narrow programming skill.

Developers have a distinctive mindset he calls "developer arrogance": faced with any problem, the first instinct is that software can solve it. This arrogance sounds like a pejorative, but it's actually an extremely powerful driving force.

But this arrogance carries new risks in the age of AI. You have Claude build one thing, then have Codex build another, and keep piling on features. A month goes by, and you've produced an exquisitely crafted, wildly overengineered product — and when you launch it, you find nobody wants it.

You've built the most beautiful piece of software, it's crazy overengineered, and then you launch and nobody wants it.

AI has made building too easy. So easy that you might forget to first verify whether anyone actually needs what you're building.

Rem Koning: the key to an AI-native organization

At the end of the video, Rem Koning, associate professor at Harvard Business School, makes a brief appearance previewing the next episode.

Note: Rem Koning's full name is Rembrand Koning, an Associate Professor at Harvard Business School whose research focuses on entrepreneurship and AI. He is co-founder of the Tech for All Lab at Harvard's D^3 Institute.

He raises several ideas worth thinking about.

First, the ability to "allocate intelligence" will become increasingly important. It's not about how smart you are yourself, but whether you can properly deploy intelligence to the right places.

Second, the key to an AI-native organization isn't using AI to do your work, but embedding AI directly into the product itself, letting AI collaborate directly with customers. The ultimate goal is to remove humans from the loop.

Third, when AI starts talking to AI, when AIs start collaborating with each other, what do they need? Koning believes that companies who figure this out could become trillion-dollar enterprises.

The core message Mihail Eric conveys in these 14 minutes can be distilled into three points:

AI-native engineers need to layer agent orchestration skills on top of traditional engineering fundamentals;

Codebases themselves need to be prepared for the arrival of agents — testing, consistency, and documentation are all indispensable;

And during this transition period, junior engineers' "fearless ignorance" and flexibility may actually be the most underrated assets.

The question is: in the transition from "writing code" to "managing agents," who gets left behind, and who gets phased out?

As agent capabilities continue to improve, could the skill of "managing agents" itself eventually be automated too?

Mihail doesn't offer an answer, but his course and his practice are themselves a kind of exploration of this question. By his own logic, the answer is likely to keep changing.

Full interview video: https://www.youtube.com/watch?v=wEsjK3Smovw

Mihail Eric 在斯坦福开了一门课,CS146S“The Modern Software Developer”,2025 年秋季首次开设,全美第一门把 AI 贯穿整个软件开发流程的大学课程。开放选课几小时,超过 100 名学生抢着报名。

Mihail 同时在旧金山一家早期创业公司担任 AI 负责人,之前在 Amazon Alexa 带过技术团队,也创办过 YC 支持的 AI 编码公司,斯坦福 NLP 组出身,导师是 Christopher Manning。

在 EO 频道“The Thinking Mode”系列的访谈中,他用 14 分钟谈了几个问题:初级开发者正在遭遇什么、顶尖工程师如何管理 Agent、什么样的代码库对 Agent 友好、以及为什么初级工程师的“无知无畏”在 AI 时代反而是优势。

原始视频链接:https://www.youtube.com/watch?v=wEsjK3Smovw

要点速览

  • 初级开发者正面临“三重风暴”:COVID 后企业裁员 20-30%、CS 毕业生十年内翻了一倍多、AI 让雇主考虑“少招人+AI”的策略,三者叠加让新人求职极难
  • 管理多个 Agent 是“游戏里的最终 Boss”,不要因为别人跑 10 个 Agent 就觉得自己也该跑 10 个,从 1 个开始逐步增加
  • Agent 只能基于显式“合约”(测试)运作,代码库需要在测试覆盖、文档一致性、设计模式一致性上做好准备
  • 品味在“最后一公里”培养,连 Claude Code 团队自己也在每周重写代码
  • 资深开发者往往最抗拒 AI 工具,初级工程师因为没有历史包袱反而学得最快

初级开发者的“三重完美风暴”

Mihail 从一个故事讲起。他认识一个刚从 Berkeley 毕业的人,投了大约 1000 份简历,只收到了 2 个回复——不是面试邀请,只是回复。

这不是个例。他认为初级工程师的困境是三件事同时发生的结果。

第一,过度招聘后的大裁员。 2021 年前后,COVID 之后很多公司觉得自己需要扩招,疯狂招人。然后发现招多了,大规模裁员开始了。很多公司发现砍掉 20%、30% 的员工,业务照样转。

第二,CS 毕业生数量暴涨。 Mihail 说自己毕业时是一个数字,现在大概翻了两到三倍。

第三,AI 改变了雇主的算盘。 雇主开始算一笔账:我是继续招更多的人来填坑,还是招更少但 AI 原生的人,用更少的人完成同样的工作?

三者叠加的结果:一大批被裁的资深工程师和一大批新毕业的年轻人同时涌入市场,而雇主的招聘意愿因为 AI 反而在收缩。

Mihail 认为,当前这一代进入职场的初级开发者会是”AI 原生转型”的第一代。他们必须同时具备扎实的传统基本功和完整的 AI 原生能力,缺一不可。

不要因为别人跑 10 个 Agent 就觉得自己也该跑 10 个

在 Mihail 看来,AI 原生工程师的核心定义是:传统编程、系统设计、算法思维的底子要扎实,同时要非常擅长使用 Agent 工作流(agentic workflows)。

但他特别强调了一个常见误区。Claude Code 的创造者 Boris Cherny 曾来课堂做客座演讲,Boris 同时跑 10 个甚至更多 Agent 的工作方式在开发者社区广为流传。Mihail 说他的学生听完后,第一反应是“我也应该从 10 个开始”。他认为这恰恰是错误的结论。

注: Boris Cherny 是 Anthropic 的 Staff Engineer,Claude Code 项目的创始工程师。他曾公开分享自己的工作流:终端里开 5 个 Claude Code 会话,浏览器里再开 5-10 个,同时管理十几个并行任务。

他的建议是 “逐步搭建”(build it up piecemeal)。

先用一个 Agent 把一件复杂的事做好,确认自己完全掌握了这个工作流。然后看看有没有第二个隔离的小任务,比如修一个 logo。再加一个 Agent 改网站的文案。

关键是每个任务之间必须是互相隔离的、没有依赖的

第一个跑顺了,加第二个。第二个也稳了,再加第三个。不是 10 个一起上。

真正学会管理多个 Agent,就像通关游戏的最终 Boss。能做到这一点的人,即使在今天也是最顶尖的那 0.1%。 (”Knowing how to properly handle multiple agents is like the last boss in a game. If you can do that really, really well then you are literally the top top 0.1% of users.”)

上下文切换:管 Agent 的真正难点

谈到多 Agent 工作流的核心技能,Mihail 指向了一个很日常的能力:上下文切换

他打了一个比方:这些 Agent 就像一群热情聪明的实习生,你把任务派出去,它们就在终端里埋头干活,代码哗哗地写出来。但有时候它们会卡住。

这时候你需要从 Agent 1 切到 Agent 2,再切到 Agent 3。每切换一次,你得记住上一个 Agent 做到哪了,还要有足够的上下文来推进当前任务。即使对人来说,这也很难。

然后 Mihail 说:他刚才描述的这些,就是一个好的人类管理者每天在做的事。跟 Agent 没关系,这件事做好了,你也是一个优秀的团队经理。

他观察到,Agent 编排做得最好的那些人,往往有过管理人类开发团队的经验。他们在管理人的过程中学会了怎么在多个任务间切换、怎么分配注意力、怎么在信息不完整的情况下做出判断,然后把同样的原则用在了 Agent 身上。

什么是“Agent 友好的代码库”

Mihail 提出了一个概念:Agent 友好的代码库(agent-friendly codebase)。

核心问题是:如果把一个 Agent 放进你的代码库,它能理解正在发生什么吗?

他逐一拆解了几个要点。

测试是“合约”

当你让 Agent 在代码库里开发新功能时,它靠什么确认自己没有搞坏东西?靠测试。

测试是定义软件正确性的合约。如果你的测试覆盖不够,就等于没有给 Agent 立规矩。

Agent 只能基于显式定义的合约来运作。如果你没有足够的测试覆盖,你就没有给你的软件定义合约。 (“Agents only can operate on contracts, like explicitly defined contracts of software.”)

README 和代码要一致

做过开发的人都知道,README 几乎一写完就和代码脱节了。代码说一回事,README 说另一回事。Agent 同时读到两个互相矛盾的描述,就会犯迷糊:到底该听谁的?

Agent 会快速复合错误

如果 Agent 在第一步产生了一个误解,它看到自己第一步创建的错误代码后,不会纠正,而是在错误的基础上加倍错下去,像滚雪球一样放大,慢慢把代码变成一锅 “意面代码”(spaghetti code)。

所以最重要的是:Agent 看到的第一版代码必须是自洽的、设计完善的、测试充分的。

在你开始让 Agent 写代码之前,先把代码库本身搞对。

设计模式要一致

如果你的代码库中有一个地方用 API 1 来创建某种对象,另一个地方用 API 2 来创建同一种对象,Agent 不知道该选哪个。

但 Mihail 补了一句:

如果我走进你的代码库,看到两种不同的做法,我也会问自己:该用哪个?我不知道,两种都在用,我大概率会去问一个同事。 (“If I were walking to your codebase and saw the two different ways of doing it, I would also ask myself: should I do one or two?”)

Agent 友好的代码库,其实就是对人也友好的代码库。

好的工程实践没有变,只是在 Agent 时代变成了硬性要求,而不是”最好这么做”的建议。

品味:功能性软件和卓越软件的分界线

什么把“能用的软件”和“了不起的软件”区分开?Mihail 的回答很直接:品味(taste)。

在他的课堂上,每个项目有基础要求,比如必须实现五个不同的功能流程。大多数人完成要求就停了。但有些学生不一样,他们已经拿到了满分,还在继续打磨、扩展功能、让应用更健壮。

品味的培养发生在最后一公里。 (“The taste building happens in that last mile.”)

区别在于谁更想解决问题本身,而不只是拿到分数。

Mihail 说,课上表现最好的学生,现在有的已经在围绕课程项目创业了。课程结束了,但他们还在继续做同一个东西,因为他们觉得还有更多值得做的。

顶尖工程师不会在完成任务时停下来,他们在发现可能性时加速。

连 Anthropic 都在边做边学

谈到实验精神,Mihail 举了一个例子。Boris Cherny 来课堂演讲时提到,Anthropic 的 Claude Code 团队基本上每一两周就会用 Claude 重写 Claude Code 本身。他们用自己造的工具重写自己的工具。

即使是像 Anthropic 这样在构建最前沿 AI 编程工具的团队,也没有“全部答案”。他们自己也在不断实验、根据用户反馈迭代,摸索什么有效什么无效。

Mihail 在课堂上反复强调:我可以来这里给你推荐工具、分享我觉得什么好用。但归根结底你得自己去撞墙。

你得自己实验,看什么对你管用、什么不管用。把实验和试错变成工作流的一部分,这就是软件开发的新方式。

初级工程师的“无知无畏”是一种超能力

Mihail 指出,资深开发者往往是对 AI 工具最抗拒的人。写了 20 年代码的人太习惯自己的方式了,觉得“做这件事只有我一直以来的方法”。

而第一次进入行业的人完全不一样。他们像海绵一样,一切对他们来说都是新的,一切皆有可能。他们还没有被行业的种种困难“吓到过”。他们不知道医疗行业有多难,不知道金融监管有多严。他们只是看到一个问题,然后说:为什么我不去试试呢?

年轻人有一种“好的无知无畏”,这对创业者来说是完美的品质。 (“There's like a good naivety to how young people think, which is perfect for a startup founder.”)

Mihail 认为,即便就业市场确实在变难,但那些最早掌握 AI 原生技能的人,恰恰就是这些初级工程师,最终会成为最灵活、学习最快的一批人

“开发者的傲慢”与过度工程化的陷阱

Mihail 还谈到了 CS 教育的本质。他认为软件开发教的是如何用数字化手段构建复杂系统、如何用算法去解决系统问题,更接近数学思维而非狭义的编程技能。

开发者有一种独特的心态,他称之为 “开发者的傲慢”:看到任何问题,第一反应就是软件能搞定。这种傲慢听起来像贬义词,但它其实是一种极其强大的驱动力。

但这种傲慢在 AI 时代有了新的风险。你让 Claude 做一个东西,再让 Codex 做一个东西,然后不断加功能。一个月过去了,你造出了一个精美绝伦、过度工程化的产品,上线之后发现没人要。

你造出了最精美的软件,工程过度得离谱,然后你发布了,没人想要它。 (“You've built the most beautiful piece of software, it's crazy overengineered, and then you launch and nobody wants it.”)

AI 让构建变得太容易了。 容易到你可能忘了先验证有没有人需要你做的东西。

Rem Koning:AI 原生组织的关键

视频最后,哈佛商学院副教授 Rem Koning 简短出镜,预告了下期内容。

注: Rem Koning 全名 Rembrand Koning,哈佛商学院副教授,研究方向是创业与 AI,Harvard D^3 研究所 Tech for All Lab 联合创始人。

他提出了几个值得思考的观点。

第一,“分配智能”的能力将越来越重要。 不是你自己有多聪明,而是你能不能把智能合理地配置到正确的位置。

第二,AI 原生组织的关键不是用 AI 来做你的工作,而是把 AI 嵌入产品本身,让 AI 直接和客户协作。最终目标是把人类从环节中移出去。

第三,当 AI 开始和 AI 对话、AI 开始彼此协作,它们需要什么? Koning 认为,想清楚这个问题的公司,可能会成为万亿美元级别的企业。


Mihail Eric 在这 14 分钟里传达的核心信息可以浓缩为三条:

  1. AI 原生工程师需要在传统功底之上叠加 Agent 编排能力
  2. 代码库本身需要为 Agent 的到来做好准备,测试、一致性、文档缺一不可
  3. 而在这个转型期,初级工程师的 “无知无畏”和灵活性反而可能是最被低估的资产。

问题是:从“写代码”到“管理 Agent”的转型过程中,谁会被留下,谁会被淘汰?

当 Agent 的能力继续提升,“管理 Agent”这个技能本身会不会也被自动化?

Mihail 没有给出答案,但他的课程和实践本身,就是对这个问题的一种探索。按照他自己的逻辑,答案大概率也在不断变化。

完整访谈视频:https://www.youtube.com/watch?v=wEsjK3Smovw


See all posts