从发声教练到程序员的跨界转型

Matt Pocock 的职业生涯起点与典型的软件工程师截然不同。在成为程序员之前的六年里,他是一名全职发声教练。他在伦敦和埃克塞特工作,教授口音、唱歌及公开演讲技巧,并拥有该领域的硕士学位。这段经历不仅塑造了他的性格,更赋予了他一种独特的能力:即便技术知识有限,也能将复杂概念清晰地向他人解释。这种沟通优势后来成为他职业发展的核心驱动力。

促使 Matt 转行的直接原因是生活成本与地点偏好。他意识到要在发声教学领域达到高水平必须居住在伦敦,但他极度厌恶那里的生活氛围,渴望回到乡下。为了寻找一份可以远程工作的职业,他开始了自学编程的旅程。起初他只是用 JavaScript 编写一些简单的工具(如抽认卡应用)来优化学生的上课体验,甚至开发过一个复杂的网页音频分析器。尽管代码质量粗糙且运行缓慢,但这让他意识到自己具备将技术落地的能力。

2017 年左右,Matt 抓住英国工程师需求旺盛的窗口期成功入职一家小型公司。在那家小公司中,一位风格硬核(常穿凉鞋、住运河船)的资深开发者引导他接触了 Linux 和更深层的技术栈。随后,他在几家外包公司之间辗转,期间主要使用 TypeScript 和 React技术栈。在一次为汽车制造商开发学习管理系统的过程中,前端团队因缺乏类型约束而进度缓慢且 Bug 频发。引入 TypeScript 后,开发效率显著提升,甚至超过了后端团队的速度。这段经历让他深刻体会到类型安全对工程协作的重要性,也奠定了他后来在 TypeScript 领域建立声誉的基础。

“我有一种很奇特的能力,就是完全不懂技术……但却有能力把技术知识给别人讲明白。”

“我一开始就在用很烂的代码做相当硬核的东西,后来我意识到……于是我就直接转行了。”

开源贡献与 TypeScript 教育帝国的崛起

Matt 进入开源圈子的契机源于对状态机(State Machine)技术的探索。在第四份工作中,他使用 X State 库处理复杂的实时视频通话与空间导航联动逻辑。为了提升类型安全性,他围绕该库开发了一个 CLI 工具,这一举动引起了 X State 核心维护者 David Horsley(Twitter: @david_horsley)的注意。Matt 随后加入 X State 核心团队,并接触到包括 Matias Berrini(Twitter: @andres_rake)在内的顶尖开发者群体。随着 X State 团队决定商业化并融资,Matt 获得了第一份美国薪酬的工作,这极大地改变了他的收入水平和职业自由度。

尽管在 X State 公司期间他主要承担开发工作,但他内心始终渴望回归教育领域。他曾有六年的教学背景,且发现自己在处理高级 TypeScript 类型技巧(如强制实现 X Date 的类型安全)时积累了大量高阶知识。于是,他开始制作一系列两分钟的 TypeScript 技巧短视频并发布在 Twitter 上。

这些视频迅速引爆了网络,Matt 的粉丝量从四千激增至一万左右。这种前所未有的共鸣让他确信自己具备打造优质课程的能力。此时,Vercel 的开发者教育负责人 Lee Robinson 注意到了他。Matt 与 Vercel 达成了一个特殊的合同:每周仅工作三天,为期三个月。这一安排允许他在保持稳定收入的同时,全力投入 TypeScript 教学内容的创作。

Matt 认为这种“半职稳定工作 + 全职副业探索”的模式对于许多希望创业或转型的工程师极具参考价值。它降低了“裸辞”的风险,允许从业者在验证想法可行性的同时保留安全网。尽管 Vercel 是许多开发者的梦想雇主,但 Matt 当时的心态是将此视为一种过渡性的稳定来源,以便他能够全身心投入到自己真正热爱的 TypeScript 教育事业中。

“我意识到这里面有市场……我的粉丝量就从四千涨到了一万左右。”

“很多工程师都有抱负和想法……你可以拿着自己的想法去开家公司,他们就会想:好吧,我是不是该直接放手一搏?……某种程度上,我觉得这算是一种挺独特的模式。”

从 Vercel 到 Total TypeScript:高杠杆业务的诞生

Matt Pocock 回顾了他离开 Vercel 的契机。尽管他在 Vercel 工作期间参与了 TurboPack(一个旨在抗衡 Webpack 的快速构建系统)的早期文档编写和团队建设,并亲历了 Next.js Conf 发布日的盛况,但他敏锐地捕捉到了 TypeScript 教育领域的巨大机会。当时他偷偷制作的 TypeScript 内容订阅量激增,一次预售直接带来了 Vercel 薪资 30到40倍 的收入。这种立竿见影的商业反馈让他意识到,尽管 Vercel 的薪酬已经非常优厚且他喜欢那里的团队,但为了追求一种能陪伴家人的生活方式(坚决反对 996 工作制),他必须全身心投入这门课程。

他与长期合作伙伴 Joe Hooks(Academy 创始人,曾协助 Kent C. Dodds)合作推出了 Total TypeScript。课程在 2023年初 上线后迅速突破七位数营收(约100万美元),彻底改变了他的生活。这种模式的核心在于高杠杆率工作:一次性制作内容,随后持续产生被动收入。过去四年中,Total TypeScript 的总营收突破 250万美元,这证明了在软件工程中,通过销售教育内容建立生意的可行性。Matt 坚持透明的商业模式:不依赖赞助(甚至试图关闭 GetUp 赞助页),而是依靠用户购买课程来支持,并承诺提供长退款期以确保价值交付。

AI 冲击下的转型:从知识传授到智慧引导

随着 AI 的爆发,Matt 意识到传统教育模式面临严峻挑战。AI Agent 和深度研究功能使得获取具体知识(Syntax/What)的成本极低,导致单纯教授语法或 API 的课程营收下滑。然而,智慧(Wisdom/Why)——即理解代码背后的设计逻辑、权衡取舍和架构思维——并未因 AI 的出现而变得更容易习得。如果学习者缺乏底层智慧,即便使用 AI,依然会陷入相同的陷阱。

Matt 曾尝试制作“将 AI 集成到应用”的课程,但发现这属于战术性编程(Tactical Programming)范畴,而 AI 正在迅速吞噬这一领域。受 John Ousterhout 关于战术与战略编程区别的影响,以及 OpenAI o1/4.5 模型发布后 Agent 能力的飞跃,他意识到自己的定位应转向战略性编程(Strategic Programming)。战略层涉及长远思考、架构把控以及如何让 Agent 高效执行任务,这是 AI 目前尚无法完全替代的人类核心价值。

Ralph Loop 与 Skill:重新定义软件基本功

在探索 AI Agent 的最佳实践时,Matt 借鉴了 Jeffrey Huntley 的 Ralph Loop 概念。传统的 Agent 执行往往是自顶向下的线性规划,但实际工程中任务动态变化,需要不断调整计划。Ralph Loop 通过一个 Markdown 文件作为状态载体,让 Agent 在循环中不断消耗并补充任务列表,形成闭环。Matt 将这种思路与他在前端状态管理(如 State)中的经验结合,将其抽象为有限状态机(Finite State Machine)或工作流。

他将这些经过验证的工作流封装为 Skill(一种供 AI Agent 调用的 Markdown 文件集合),并开源了相关仓库。这一举措引发了巨大的反响,该 Skill 仓库迅速成为全球 Star 数第二多的 Skills 仓库(约23万星),在历史所有 GitHub 仓库中排名前列。Matt 将其视为职业生涯的第二次“爆发时刻”,类似于早期 TypeScript 短视频的成功。他通过演讲《软件基本功依然重要》(播放量约120万次)向业界传达核心观点:在 AI 时代,软件基本功(如状态管理、数据流设计)不仅没有过时,反而因为需要指导 Agent 而变得更加重要。

Grill Me:通过高强度盘问重塑工程决策

Matt Pocock 观察到当前对 AI Agent Skills 的需求巨大,这促使他深入思考如何沉淀自己的工作流。他的核心设计理念是极简与可审查性:既然用户会频繁修改和调试 Skill,那么代码必须足够简单易懂。其中最受欢迎的 Grill Me(盘问我)Skill 便是一个典型案例。

该 Skill 的核心机制是让 Agent 像资深工程师一样对用户进行高强度追问。例如,当 Matt 想创建一个简单的 API 端点以验证邮件订阅状态时,Agent 并没有直接生成代码,而是开始层层深入:从认证方式(Bearer Token vs JSON)到频次限制的具体阈值。Matt 坦言,这种体验让他既感到烦躁(因为事情本可以很简单),又深感惊叹——他意识到自己很久没有与团队进行过如此深入的设计讨论了。

“我一方面觉得烦,心想这本来挺简单的,别操心那个了;但另一方面又很惊叹,这个AI这个大模型竟然能通过一连串prompt把这些全做下来。”

这种“盘问”并非为了增加复杂度,而是为了填补沟通鸿沟。Matt 指出,人们常低估了人与 Agent 之间的认知屏障。Agent 无法读心,如果用户只给出模糊目标而不传达价值观和优先级,产出的代码往往与预期脱节。Grill Me 的价值在于它强制用户拍板关键决策。通过回答 Agent 提出的关于范围、认证和边界条件的问题,用户不仅明确了需求,还被迫去查证那些自己未曾深思的技术细节(如不同认证方式的安全差异)。这种过程让用户在协作中保持学习状态,从而成为更专业的工程师。Matt 强调,只要提高与 Agent 对话的质量(即决策的清晰度),就能显著提升最终产出的质量。

聪明区约束与 Ralph Loops 的上下文管理

在解决了“如何定义需求”的问题后,Matt 面临下一个挑战:如何将高质量的对话转化为代码?这里引入了 Dex Horvath 提出的 “聪明区”(Smart Zone)概念。研究表明,随着上下文窗口中 Token 数量的增加,模型的表现会缓慢退化;在百万级上下文中,前 15万 Token 通常是表现最佳的区域。因此,核心策略是将大型任务拆分到多个独立的会话中,以充分利用每个窗口的“聪明区”。

为此,Matt 开发了 Ralph Loops Skill。其设计逻辑是:给 Agent 一个目标,让它执行能推动该目标的最小改动,然后清空上下文重新开始。虽然严格来说模型内部状态被重置了,但代码库和文件系统保留了外部状态。

为了实现这一流程的自动化与标准化,Matt 引入了两种关键文档: 1. 规格说明书(Spec):取代传统的 PRD,明确“何时算完成”的终点标准。 2. 工单(Tickets):将规格说明书拆解为一个个独立的、单次会话可完成的任务单元。

“于是我就开始想怎么把超过十五万 token 的工作,其实也不算很大,拆分到多个上下文窗口、多个会话里去。”

Matt 优化这一流程的初衷是为了实现 “白班规划,夜班执行”的工作模式。他厌恶在终端间频繁切换上下文的状态,希望用户能完成大块规划后离开键盘,让 Agent 连续运行数小时。这一理念基于一个关键洞察:随着模型能力的提升(特别是2024年12月后),Agent 已经足够可靠,可以完全脱离人工干预独立运行。

Wayfinder 地图:应对无限复杂度的探索框架

当任务复杂度超出单次“盘问”所能承载的范围时(例如克隆一个 Stripe 系统),Matt 开发了更复杂的 Wayfinder Skill。其核心隐喻是 “地图”与“战争迷雾”。

在 Wayfinder 中,地图(Map)是所有决策所需信息的核心集合。它包含两类节点: * 里程碑:必须确定的关键决策点。 * 战争迷雾:尚未探索或未知的区域,代表潜在的风险或未决问题。

随着每一次“拷问”(Grilling)或探索环节的进行,地图上的迷雾会被揭开,新的地点被解锁。这本质上是一个有向无环图(DAG)结构,引导用户从起点逐步走向最终目的地。Wayfinder 不仅处理设计决策,还整合了原型制作、调研和基础设施配置等不同类型的工单。

Matt 指出,这种基于文本的交互模式具有极强的跨领域迁移性。虽然最初用于软件工程,但他发现它同样适用于课程规划甚至家庭园艺设计。这引出了一个更深层的工程哲学思考:传统工程(如土木、机械)处理的是有物理耐受极限的材料,而软件工程的“材料”是代码本身。传统工程中存在固有的非确定性(方差),但纯软件执行通常是确定性的。

然而,引入大语言模型后,这种确定性被打破。LLM 作为新的“材料”,重新引入了类似传统工程的方差与非确定性。因此,Matt 认为,未来软件工程可能需要借鉴其他工程学科处理不确定性的方法。而 Agent 之所以擅长此道,是因为软件工程的输入(代码、文档)和输出(测试、类型检查)全都是文本,这正是 LLM 最擅长的介质。

文本边界与反馈回路:Agent 的局限与软件熵增

软件工程之所以适合 Agent,核心在于其输入输出均为文本。代码、文档指令以及测试反馈都是纯文本数据,Agent 在处理这些时表现优异;然而一旦涉及非文本内容(如 UI 交互、动画状态),其能力便急剧下降,因为目前的视觉模型尚无法精准捕捉细微的交互异常。因此,工程实践的关键在于将非文本问题转化为可被 Agent 理解的文本形式。例如在建筑或仿真领域,通过代码检查工具将图纸转化为可分析的逻辑结构。这种“对 Agent 友好”的转化能力,直接决定了自动化结果的优劣。

在深入实验规格驱动开发(Spec-Driven Development)时,我发现盲目依赖 AI 会导致代码质量恶化。尽管理念是“无先验知识、从零开始”,但实际运行中,如果测试套件质量低下,Agent 接收到的反馈信号也是混乱的。这引出了软件熵增(Software Entropy)的概念:事物天然趋向混乱而非有序。Agent 制造软件熵增的速度远超人类,若缺乏有效的约束机制,代码库会迅速变得难以维护。这一发现促使我重新审视经典著作《程序员修炼之道》,其中关于“永远在反馈回路内工作”的论断,正是解决 Agent 失控问题的关键。

“我意识到软件熵增是不可避免的,而我在这里看到的是 agent 制造软件熵增的速度比以往任何时候都要快。”

“如果你的测试套件很烂,agent 从中得到的信号就会很烂,跟人是一模一样的。”

引导演算词与领域驱动设计:唤醒先验知识

为了解决 Agent 构建软件时的低效问题(如先建完所有层再拼接,导致反馈滞后),我引入了示踪弹开发(Tracer Bullet Development)和垂直切片(Vertical Slice)的概念。这些术语并非新发明,而是存在于 Agent 训练数据中的经典工程智慧。通过在 Prompt 中重复使用这些精炼的短语,我可以引导 Agent 的行为模式:不再水平地构建完整层级,而是垂直打通一条最小可用路径。这种现象被称为引导演算词(Steering Words),类似于文学中的主导动机,通过重复特定术语来激活模型深层的逻辑关联。

进一步地,我借鉴了 Eric Evans 的领域驱动设计(DDD)中的“通用语言”概念。Agent 虽然啰嗦且缺乏上下文记忆,但它深刻理解 DDD 术语。通过创建一个名为“Grill with Dogs”的技能(Skill),我在构思应用的同时,与 Agent 共同定义一套领域语言。当代码库和对话都使用同一套精确术语(如“级联实例化”)时,沟通效率大幅提升。Agent 能够更轻松地通过代码图谱定位相关函数,因为领域术语成为了连接自然语言指令与底层代码的锚点。这种共同语言的建立,消除了人机协作中的语义障碍。

“一旦你让 agent 用上这套领域语言,效果简直判若云泥。因为突然之间,你们在说同一种语言了。”

“这些 agent 显然是在那些书上训练过的……如果这些内容在他们的训练数据里,agent在训练过程中把这些不同概念串联了起来,那么这些所谓的引导演算词就能唤醒那些概念。”

记忆碎片与经验加速:AI 时代的工程基本功回归

Agent 的本质是一个“记忆碎片”式存在:每次会话都从零开始,没有长期记忆。人类开发者可以通过反复碰壁形成肌肉记忆来绕过烂代码库的缺陷,但 Agent 做不到。因此,我们必须为这个“失忆者”优化代码库的健康度,使其具备极高的自解释性。这迫使工程师回归软件基本功:清晰的模块边界、明确的反馈回路以及健康的架构设计。我们实际上是在为 AI 这个新成员重构整个工程体系,使其无需依赖隐性知识即可高效工作。

AI 极大地缩短了战略性编程(Strategic Programming)的反馈周期。传统上,架构错误可能需要数月甚至数年才会显现为生产事故;而在 AI 辅助下,代码产出速度极快,错误也会更快暴露。这意味着工程师可以更快地从“调音台”式的架构决策中获得反馈,从而加速经验积累。虽然 AI 让纠错更容易,但那些惨痛的“战痕”(如因缺乏幂等性导致的巨额损失)依然是理解复杂概念的最佳老师。最终,AI 并未改变工程的核心真理,而是通过加速迭代和强制规范化(如 DDD),让那些被忽视的基本功重新成为决定胜负的关键。

“想象一下,你面对的其实是一个每天早上醒来都不记得自己是谁的人……我们是在努力为新人优化代码库。”

“AI现在能让你跑得更快,对吧?你的战略性错误也会更快反噬到你身上……所以你需要去思考的是,你的代码就是agent运行的环境。”

AI加速经验积累与初级开发者培养困境

AI 正在深刻改变软件工程的经验累积模式。一方面,加速经验的积累变得可能:在一年内,个人和团队交付的项目量甚至超过了过去三到四年的总和。这种高强度的产出意味着开发者能积累多得多的实战经验。然而,这也引发了一个悖论:由于错误能被快速修复,犯错的严重性降低了。过去那些惨痛的经历——例如因未加密等价而导致的巨额损失或严重的宕机事故——曾是塑造深刻认知的“战痕”。如今,如果错误不再造成不可逆的灾难,这种基于痛苦的学习效果是否会变得不够深刻?

这就引出了对初级开发者培养的挑战。既然战略性编程知识(如代码理解、长远全局把握)在 AI 时代具有极高的杠杆率,企业是否还会雇佣完全不懂这些基础的人?Uncle Bob 的建议颇具启发性:先招进来,将其视为 Agent 使用一段时间。只给他派任务,让他保持战术性思维,直到他的错误开始找上门来。但这在成本上显得极不划算,因为在许多国家,战术性软件工程的成本已跌破最低工资。因此,答案尚不明确,但核心共识是:对代码的理解和对长远全局的把握比以往任何时候都更有价值。

我怀疑这种学习效果会不会没那么深刻,因为话说回来,有些战痕、有些惨痛经历就是一次非常严重的宕机事故。

我只知道战略层面的东西,对代码的理解,对长远全局的把握,比以往任何时候都更有价值。

建立Agent可观测性与组织级实验思维

如何向非工程团队证明投资软件基本功的重要性,即使它表面上可能降低速度?这其实是一个老生常谈的问题,类似于十年前关于“是否偿还技术债”的争论。核心在于需要某种指标来衡量价值,而 AI Agent 让这种度量变得更容易。第一步是在组织内对每一个 Agent 建立可观测性,监控其成功率、失败率以及具体行为。以前对开发者做这种微观监控被视为冒犯,但对 Agent 则完全合理,因为我们需要了解优化效果。

组织需要建立一套通用的 Skill 和工作流体系。这需要有人专门负责分析数据,识别哪些代码仓库或工作流的 Agent 成功率更高,并将这些经验提炼分享。此外,必须引入实验思维(A/B Testing):让不同团队尝试不同的工作流或 Agent 配置,事后对比效果。目标是最大化 Token 投入的价值。

除了数据驱动的实验,人在回路(Human-in-the-loop)的反馈机制同样关键。定期的团队会议和全员会应成为分享“什么有用、什么没用”的平台,由人类决定哪些场景允许 AI 介入,哪些必须完全排除。Matt Pocock 个人实践了一种自动化循环:每天早晨运行改进代码库架构的 Skill,生成建议并转化为工单。他认为,将部分时间(如 20%)投入到优化“生产软件的工厂”本身,是对未来杠杆率的巨大投资。这种工作可以先隐蔽进行,待成果显现后再展示给团队。

第一步就是在你的组织里,对每一个 agent 建立可观测性,看他在做什么,成功率和失败率是多少。

在任何组织里用 agent 的人都需要这种实验思维。你得去想花掉的这些 token 怎么才能压榨出更多价值。

云端开发环境迁移与规划策略的灵活应用

在工具使用上,Matt Pocock 正在放弃本地开发环境。他认为本地终端的局限已无法适应当前需求,尤其是当开发者手头拥有大量并行任务时。将开发环境迁移到云端(如通过 Ramstripe 或 Uber 的平台团队提供的云主机)更具合理性:资源可按需调配,避免了本地硬盘堆积上千个 Git 工作树和运行多个 Docker 容器的混乱。云端环境支持端口转发,使得前端开发所需的低延迟反馈闭环得以保留。数据显示,70%-80% 的开发者已自愿转向云端。对于 Matt 而言,本地仅剩调试远程机器人问题这一用途;他甚至在通勤途中通过 Discord 与 Agent 交互,处理课程编写或 Bug 修复。

关于规划(Planning)与需求分析,Matt 反对“一刀切”的前期深度规划。他提出了一种基于任务复杂度的分层策略: 1. 微小改动(如修 Bug、移动按钮):无需前期对齐,直接执行。Agent 实现速度快,事后再做代码审查和对齐即可。 2. 中等规模/单次会话任务:使用“Grill Me”模式。在动手前,通过高强度问答澄清所有棘手细节(如认证 Token、JSON 结构),确保方向正确。 3. 大型/跨多次对话任务:使用“Wayfinder”模式。这类似于传统的 PRD(产品需求文档),但更强调激进的前期原型开发。由于 Agent 能廉价地批量生成代码,开发者可以并行构建三到四个不同架构的原型,选择最优者进行迭代。

这引发了关于瀑布模型(Waterfall)的讨论。Matt 引用 Grady Booch 的观点指出,真正的“瀑布模型”(规划一年、实现三年)早已过时。现代科技公司运行的其实是微型瀑布模型:在两周到三个月内完成计划、实施和发布。批评“规划”本身是打稻草人,因为敏捷开发的核心优势在于利用 AI 降低人工成本后快速迭代。此外,测试驱动开发(TDD)在 Agent 时代的作用也发生了变化:传统 TDD 是为了弥补人类工作记忆的小,而 Agent 拥有更大的上下文窗口和记忆力,因此 TDD 的必要性在某些场景下降低,但作为质量保障手段依然有效。

以前做原型的成本向来很高,现在是史无前例的便宜。对我来说,写规格说明书非常核心的一部分,就是去把这些原型做出来。

瀑布模型的问题从来不在于这个。问题向来在于动不动就按年来算,而不是用两周或一个月。

TDD的局限与Agent反馈回路的重构

测试驱动开发(TDD)的核心价值在于优化人类工作记忆较小的短板。通过先编写一个理应失败的测试,开发者即便中途分心(如喝咖啡或散步),返回时也能通过挂起的测试状态快速定位进度,并引导下一步操作。然而,Agent 拥有比人类大得多的工作记忆,能够同时处理更多上下文信息,因此 TDD 对 Agent 而言可能解决错了问题。Agent真正需要的是反馈回路(Feedback Loop),即实时观察自身行为与代码环境的交互。

虽然直接让 Agent 执行“先写失败测试再修复”的流程并非最佳实践,但引入 TDD 的精神依然极具价值。要求 Agent 证明其改动确实有效(即如果没有该改动,测试会失败),不仅能迫使 Agent 建立自我验证机制,还能防止其“作弊”。此外,Agent 容易产出同义反复测试(Tautological Tests),即仅断言实现细节本身(如常量赋值),这种测试毫无意义。因此,尽管 TDD 对 Agent 的直接适用性存疑,但将其作为验证证据标准能显著改善反馈质量。

“如果你让 agent 先把失败的测试写出来,agent 也很难在上面作弊。这样一来,你不仅是在迫使 agent 建立自己的反馈回路,agent 也在一边做一边向你证明这东西确实管用。”

“他们经常会写出同一反复测试,也就是测试只是在断言实现细节本身……比如他定义了一个常量,然后测试就写期望这个常量等于这个值,这测试有什么意义呢?”

技术债的自动化治理与园丁角色

技术债(Technical Debt)被定义为任何随时间推移使代码库更难修改的因素。优秀的代码库应具备高可维护性,即局部改动不会引发连锁崩溃,而扎实的测试覆盖率是实现这一目标的关键。然而,Agent 由于缺乏战略性思考能力,往往只关注眼前任务,极易在极小的代码库中引入技术债。正如 Y Combinator 的 Jared Friedman 所言,过去技术债是大代码库的问题,现在即便在小项目中也需忍受。

应对这一挑战的核心策略是自动化审查(Automated Review)。通过部署专门的“审查 Agent”来推行编码规范、识别同义反复测试并提升套件质量,可以抵消实现 Agent 带来的负面影响。这种模式类似于软件团队中的“园丁”角色:默默监测代码库,察觉像常春藤一样蔓延的代码异味和坏习惯,并在其吞噬花园前进行清理。随着 Agent 循环(如 Ralph Wiggum agent loop)的普及,开发者正转变为Agent 的平台工程团队,其核心技能在于理解并排查熵增源。这种“园艺”工作不仅是战略层面的任务,更是确保 Agent 能在受控环境中成功的关键。

“技术债就是任何随着时间推移让代码库变得更难修改的东西。好的代码库是那种容易修改的,在里面做改动不容易引发连环崩溃。”

“我们本质上就是 Ralph 的平台工程团队……我们现在就是这个角色,我们是在努力为他们搭建能取得成功的环境。”

从战术执行到战略编排:AI时代的工程师转型

在 AI 时代,软件工程的关注点正从战术性编码转向战略性编排。虽然 Agent 能高效执行具体任务,但将知识点图谱转化为线性学习路径、或设计复杂的自动化流程,仍需人类进行内容编排(Content Curation)。这种战略层面的工作——如理解信息依赖关系、设计反馈机制——是 AI 目前不擅长且人类价值所在。行业变化极快,那些能保持内省(Introspection)、将自身流程语言化并编码进 Agent 的工程师,正在获得显著优势。

对于新人而言,建议尽可能多地使用 Agent 工具。这不仅能加速技能获取(如通过 Prompt 优化性能瓶颈),更能培养对开发流程的反思能力。优秀的工程师应具备好奇心与适应力,能够审视自己的工作方式,并将其提炼为 AI 可执行的指令。这种“内省型程序员”的特质——即不仅关心代码本身,更关心写代码的过程与流程优化——是当下最具竞争力的技能组合。推荐书目包括《程序员修炼之道》、John Ousterhout 的《软件设计哲学》以及 Eric Evans 关于通用语言(Ubiquitous Language)和领域建模的著作,这些经典理论为战略层面的架构设计提供了坚实基础。

“我要做的本质上就是把自己正在做的事,提炼出来变成 AI 能拿来干活的东西……这种心态对我来说非常有帮助。”

“现在也比以往任何时候都更适合做一个内省型的程序员,时刻反思自己的做事流程,保持自省。”

经典著作在AI时代的回归

当被问及推荐哪些书籍时,Matt Pocock给出了明确的清单:《程序员修炼之道》、John Ousterhout的《软件设计哲学》,以及Eric Evans著作中关于通用语言的部分(注:此处口语转写为“滴滴”,实指《领域驱动设计》)。他特别强调,虽然对将概念直接编码的部分持保留态度,但通用语言和领域建模的概念极具价值。这期对话中最具讽刺意味也最深刻的发现是:在探索如何更好地与AI协作时,真正管用的并非那些所谓的“现代方法”,而是二十多年前记录的经典软件工程最佳实践。无论是战术性编程还是战略性编程,这些经典原则不仅依然有效,在使用AI Agent写代码时反而变得更加重要。

术语精确性与代码库整洁度

与AI交流时,引导词(Prompting)的精确性至关重要。当Matt开始使用如“垂直切片”或特定开发术语时,模型在规划阶段能更准确地跟上他的思路。这背后的逻辑在于,软件工程文献本身就是大语言模型训练数据的一部分,因此这些专业术语构成了模型的先验知识。这种对用词准确性的追求并非新概念,正如Kent Beck曾提到的,他和Ward Cunningham桌上常备同义词词典以寻找最恰当的描述词。此外,Matt提倡追求一个干净的代码库。这不仅利于人类查阅,更有一个关键的附带好处:由于AI缺乏长期记忆,每次运行都需要重新扫描代码库。在一个结构良好的环境中导航,远比在混乱的代码堆中摸索要高效得多。

真正管用的并不是那些现代方法,相反,他回过头去看了经典的软件工程书籍……在用 AI agent 写代码时反而变得更重要了。

A I(AI)没有长期记忆,每次新运行它都会重新去看你的代码库。在一个结构良好的代码库里转悠,要比在一个乱成一团的代码库里轻松得多。