Avatar

哈珀·雷德的博客

15分钟瀑布开发,否则退款

· 137 字 · 1 分钟 ·

Originally in: English

我最近和一位朋友闲聊近况,本来只是随意寒暄,结果话题一路延伸到 AI 辅助编程,以及它如何重塑我们的工作流程、团队协作,乃至对「手艺」的认知——从把旧代码库彻底重写,到自动化测试覆盖如何改变编程本质,几乎所有相关话题都聊到了。

我把聊天记录从 granola 导出,丢给 o1-pro,让它生成这篇博客。不算太糟,基本符合我的看法。

我把草稿发给几位朋友,他们又想转发给更多朋友。这意味着——我得正式发布了。那就上吧!

友情提醒:如果你收到一封行文完美、毫无个人口癖的邮件——大概率是 AI 写的,lol。


15 分钟搞定瀑布模型,包您满意,不满意全额退款!

新常态:「代码质量真的还重要吗?」

多年来,我们一直把写代码当作一门手艺——先进入宝贵的心流状态(flow state),雕琢逻辑,再带着精心打磨的补丁凯旋。然而,一个新范式正悄然到来:代码生成工具(大型语言模型 Large Language Model,LLM) 能在几分钟内产出功能。

有些人被这种速度震撼,也担心它会颠覆过去对「整洁代码」的标准。编写健壮的测试套件,甚至测试驱动开发(TDD),忽然变成了让 AI 自证,而不再是我们逐行推敲。

代码质量会直线下滑吗?也许。但与此同时,一股“超防御式编码”(hyper-defensive coding)的风潮正在兴起:静态分析、形式化验证,以及无处不在的测试覆盖…… 这样一来,一旦某个智能代理(agent)把东西弄坏,我们就能立刻捕捉。我们对顶级 CI/CD 流程和严格检查的需求,从未像现在这样迫切。


15 分钟瀑布循环

Waterfall
冰岛瀑布真多。Leica Q,2016-09-30

曾经,「瀑布模型」与「敏捷」被视为天壤之别,仿佛敏捷才是唯一正解。讽刺的是,代码生成正把我们推向「微型瀑布循环」:为了让 AI 看得懂,我们得先写一份极其清晰的需求规格;然后按下「生成」键;接着等待代码冒出来并集中评审。表面看似迭代,实则是一轮规划、一轮执行、一轮复查——「15 分钟瀑布」。

真正的魔力是,你可以同时启动多个代理:一个写功能,一个补文档,第三个跑测试覆盖。这已经不是传统线性的瀑布,而是打了激素的并发,简直像开外挂一样。


团队文化即将转向

如果你带领工程团队,往往会听到高层问:「能不能用 AI 提升生产力?」与此同时,你也能察觉团队对这些工具的热情参差不齐:有人全情投入,凭提示就能产出完整功能;也有人坚守那份匠人身份。

我认为行之有效的做法是:

  1. 小规模试点
    选个内部项目,或是风险较低的辅助工具,让几位好奇的工程师纵情尝试 AI 编码。让他们犯错,看看过度信任模型会带来什么后果,再观察他们如何用最佳实践挽回局面。

  2. 轮流上阵
    有了专门的 “AI 编码” 支线项目,就能让团队成员轮流参与——在这种新环境里待上一两周,相互学习,然后把经验带回主代码库。

  3. 把文档做到极致
    代理往往需要极其清晰的规格。生成代码很便宜,引导 LLM 往正确方向却需要精心策划。想让全队受益,就把你写过的最棒的规格和架构文档放进共享仓库。等成员轮换时,你会感谢当初的自己。


心流可能被高估了

一个意外发现:许多人爱写代码,是因为迷恋心流状态。但 AI 编码并不总能营造同样的沉浸。你也许先花一小时写提示,让 AI 在后台构建,然后偶尔回来审批或微调。

有人觉得这种节奏割裂;对另一些人——尤其是要带娃或同时处理多重任务的人——反而让人感到轻松。当你可以随时切换上下文(审查 AI 输出,去忙别的,再回来收下代码片段),你会发现,高效工作未必依赖长时间的安静时段。


这是不是意味着「程序员已到顶峰」?

有声音说,一旦 AI 能生成代码,我们就到了「程序员峰值」——很快就不需要那么多工程师了。若只是写直白的功能或对接 API,这话或许有几分道理。但新的复杂性也随之而来:安全、合规、测试覆盖、架构设计……

真正的区别在于:「战略型工程师」将会脱颖而出——他们能编排多种 AI 工具,监控代码质量,设计可扩展系统。这类人身兼产品经理、架构师、QA 与开发者:撰写提示、定义测试、维护质量,并处理 LLM 预料不到的边缘情况。


前线心得 Pro Tips

以下是我亲身踩坑得来的教训:

  1. 先手动,再交给 AI
    开发 iOS 应用时,先用 Xcode 初始化项目,免得自动生成的文件把 AI 搞糊涂;然后再让它补齐剩余部分。

  2. 简短、清晰的提示有时胜过长篇大论
    神奇的是,对 LLM 说一句 “make code better” 的效果,有时不输一大段详尽指令。多试试——不同模型对约束程度的偏好各不相同。

  3. 采用 “检查点” 式工作流
    频繁提交,即便只是 git commit -m "It passed the tests, I guess!" 也行。AI 修得快,毁得也快;多留回滚点才能安心。

  4. 别让 AI 对基础逻辑过度测试
    AI 特别喜欢把一切都拿来测,连 for 循环会不会循环都不放过。保持警惕,删掉无意义的测试,让流程保持精简。

  5. 文档,文档,还是文档
    让 AI 生成厚厚的「实现指南」。这些文档不仅帮你,也能在后续迭代中帮 AI 更快上手。


总结

Road to the future
通往未来的公路。科罗拉多真的很平。Leica Q,2016-05-14

我们的行业正以前所未有的速度演变。那些看似铁律的假设——比如心流至上,或为手工打磨的功能大肆庆祝——很快都会显得老派。但这并不意味着创造力消失;重点转向策略性编排:知道该造什么、该怎么描述,以及如何避免最后烂成一地垃圾。

最终,决定产品胜负的不是谁写了更多代码,而是谁设计出了更打动人的体验。毕竟,一个周末就能生成 10 个 Instagram 克隆,胜负手不在代码多优雅,而在谁更能引起共鸣——这是设计与产品的问题,而不只是工程问题。

欢迎来到新版瀑布——15 分钟一轮,AI 充当无限的实习生,代码流程提速到极致。这既古怪又精彩,偶尔还挺吓人。但大概率我们都得学会这支舞。

多么荒诞的世界。我想事情只会越来越怪。继续深挖吧。

请注意: 本文主要由 AI 生成,文章很可能已注明此事实。即便是 LLM 生成,它依旧代表我的立场,否则我不会发布。