abstract
软件开发一直以其极端性而著称。早期我们规划一切,后来敏捷开发让我们拥抱速度和迭代。现在,随着AI工具能够从一句话生成代码,我们正进入一个新时代——设计代码编写环境的时代。钟摆再次摆动,不是回到瀑布模型,而是走向更有意图的实践,其中设计和文档再次重要起来。
1 钟摆的摆动
软件开发一直以其极端性而著称。在早期,我们规划一切。规格说明书是神圣的。架构图先于任何一行代码。每一个变更都像驾驶货船一样——缓慢、官僚化且文档繁重。
然后敏捷开发出现了,钟摆猛烈地摆向另一个方向。我们拥抱速度、迭代和不完美。“可工作的软件胜过详尽的文档”成为新一代的战斗口号。快速交付比第一次就做对更重要。公平地说,这种转变释放了巨大的生产力。它永远改变了软件文化。
现在,我们正进入一个新时代——一个由能够从一句话生成代码的AI工具驱动的时代。像GitHub Copilot和Claude Code这样的工具正在重塑开发者的含义。这不再仅仅是编写代码——而是设计代码编写的环境。
那个钟摆?它又在摆动了。
不是完全回到瀑布模型,而是走向更有意图的实践。一个设计和文档再次重要的实践——不是为了实习生或下一个工程师——而是为了将生成下一万行代码的机器。我们正在超越”氛围编码者”的时代——那些不理解影响就提示和发布的人——进入一个深思熟虑的、人类主导的架构成为高质量软件基石的世界。
我曾在一位CTO手下工作,他对我们软件交付中前期思考的缺乏感到真正震惊。在一个超过一百名开发者的团队中,他要求我解决一个看似简单的问题:让人们在开始编码之前花更多时间思考。当时,这可能感觉像是在逆敏捷潮流而动。但看看行业现在的发展方向——AI生成大部分代码,开发者转向系统设计和监督角色
1——我想他会感到欣慰。钟摆终于摆回到有意图性。
因为如果我们让机器在没有边界的情况下随意发挥,我们会被技术债务埋没。如果我们设计它们工作的系统,我们可以比以往任何时候都更快、更好地扩展。
2 氛围编码和提示工程
“vibe 一下就行了。”
这个短语——由Andrej Karpathy推广——是新一代软件开发的简写,其中AI工具承担重任。需要一个React组件?提示它。API集成?提示它。带有分页、错误处理和加载状态的CRUD?一个好的提示可以让你完成80%的工作。
这就是氛围编码:自然语言提示、AI辅助脚手架和快速迭代的混合。感觉很神奇。对一些开发者,特别是新手来说,这是他们唯一的编码方式。
吸引力是显而易见的。氛围编码消除了摩擦。它跳过样板代码。它放大了你的速度。你可以在一个下午构建一个原型,而这在几年前需要一个团队几天时间。
但问题是:以思维速度编写的代码往往像牛奶一样变质,而不是像酒一样醇化。
氛围编码鼓励浅层理解。它优先考虑现在看起来正确的东西,而不是六个月后仍能坚持的东西。架构决策被模型隐式地做出。模式在没有审查的情况下被嵌入。不久之后,你就会陷入生成的复杂性中,没有人真正理解——甚至包括发布它的人。
负责任地使用,氛围编码是一种超能力。鲁莽地使用,它是通往技术债务地狱的单程票。
解决方案不是放慢速度——而是改变谁在掌舵。我们不需要更多的氛围编码者。我们需要思考AI工作系统的人。我们需要能够驾驭氛围编码的力量而不被它拥有的架构师。
3 设计框架而非函数
编写单个函数的工作正在被自动化。这不是推测——这正在实时发生。AI可以在几秒钟内生成一个格式良好的TypeScript解析器、GraphQL模式或Flutter小部件。结果?开发的战术层正在被商品化。
但战略
2层——这仍然很大程度上是人类的游戏。
现代软件开发者不再只是建造者;他们正在成为架构师。不是企业头衔通胀意义上的,而是字面意思上的:他们的工作是设计创建软件的结构。这意味着策划库、强制边界,以及定义允许AI生成的代码干净集成和可持续扩展的模式。
这就是未来防护开发者的生存之地——不在渲染组件的循环中,而在关于该组件应该是什么、它如何与系统其余部分交互,以及它为什么存在的决策中。
这种转变是微妙但强大的:
- 不再问”实现这个端点的最佳方式是什么?“,我们问”系统这部分最干净的契约是什么?”
- 不再问”我如何修复这个bug?“,而是”我如何通过结构完全防止这类bug?”
- 不再花费数小时重构文件,我们构建约束来防止坏模式首先出现。
在这个新范式中,最有价值的开发者不是编写最多代码的人——他们是为代码生存编写最佳系统的人。框架、脚手架、模式和护栏,让AI能够有效运作而不创造混乱。
工作不是超越机器编码。而是超越它思考。
4 新的受众
在旧世界中,我们为下一个开发者编写干净的代码和详尽的文档。你希望你未来的队友——或未来的自己——能够在不抓狂的情况下接手。好的注释、清晰的结构、有意义的命名。
现在,下一个”开发者”是AI。
这种转变改变了一切。我们不再为正在上手的初级开发者编写,而是为能够在几秒钟内生成500行代码的模型编写——但只有在我们给它坚实基础的情况下。AI是一个模式匹配机器。它不像人类那样推理。它不要求澄清。它完全按照你的结构、命名和示例教它做的去做——无论这是否是你的意思。
这意味着我们的系统需要对机器可读。我们需要:
- 可预测的模式 — 这样AI可以看到”正确”是什么样子
- 严格的约束 — 这样它不会游荡到危险的领域
- 精选的示例 — 因为你展示给AI的就是它重复的
- 干净的抽象 — 不仅为人类,也为试图跨文件推理的令牌饥饿模型
这样想:我们不再只是编写代码,我们正在为我们未来的副驾驶设计训练数据。每个好函数、每个标记良好的类型、每个仔细强制的边界都是模型在填补空白时将遵循的面包屑。
这不仅仅是良好的工程卫生——现在这是速度的核心。
所以是的,我们仍然关心命名、一致性和接口。但不仅仅因为它帮助人类上手。现在它帮助我们的机器队友构建下一百个功能而不创造混乱。
这就是明天开发者的真正工作:不仅仅让它工作——让它对机器来说明显、可重现和可扩展。
5 新的宣言
二十年来,敏捷宣言塑造了团队构建软件的方式。它的原则将我们从臃肿的规格说明书和18个月的瀑布时间线中拯救出来。我们停止编写Word文档,开始发布MVP。这是一个巨大的改进。
但我们过度纠正了。
敏捷教我们重视”可工作的软件胜过详尽的文档”。很公平——直到可工作的软件变成”只要完成就行”的同义词。在氛围编码和AI辅助提示的时代,这个原则开始崩溃。
因为软件可能在工作……但并不总是被理解。
现在,随着AI生成越来越多的代码库,钟摆再次摆动。我们重新发现旧事物的价值:文档、规格说明、护栏。但不是因为人类需要它们——而是因为我们的AI同事需要。
敏捷的核心价值观并非无效,但其中一些需要重新解释。在新世界中:
- 我们可能重视全面的结构胜过可工作的软件 — 因为今天工作但明天崩溃的软件是负债
- 我们可能重视精选的系统胜过个人和交互 — 因为个人越来越多是机器
- 我们可能重视响应上下文胜过响应变化 — 因为稳定性和可重复性是实现快速迭代的基础,而不是混乱
这不是回到官僚主义。这是新敏捷性的出现:建立在深思熟虑的约束、强大的架构骨架和机器可优化的脚手架之上。
这样想:在2005年,瓶颈是速度。在2025年,瓶颈是方向。
敏捷让我们动起来。现在我们需要一张地图。
6 下一步
如果你今天是高级开发者或技术负责人,你的角色已经在转变——即使你的头衔还没有跟上。
你不再只是编写功能。你在定义创建这些功能的环境。这意味着拥有架构、强制模式,以及设计不仅指导人类队友,而且越来越多地指导AI协作者的系统。
要在这个新环境中有效领导,这里是重点关注的地方:
6.1 以系统思考,而非片段
仅仅擅长编写代码已经不够了。你需要塑造系统:
- 这个边界在哪里?
- 哪些决策需要做一次并编码?
- 什么抽象会随时间减少流失?
代码库现在比以往增长得更快。弱结构导致快速崩溃。
6.2 构建护栏,而非仅仅功能
设置人类和机器都能安全遵循的模式。使用类型、linter、测试套件和模式不仅强制正确性——还传达意图。
在无法通过自动化强制行为的地方,通过清晰和可重复的结构强制它。框架,而不仅仅是库。
6.3 像图书管理员一样策划示例
AI工具依赖模式识别。好的示例导致好的输出。坏的示例增加混乱。
你的代码库现在是一个学习环境。清理它!移除矛盾的风格。在重要时记录意图。把它当作你在准备训练数据——因为在某种程度上,你确实是。
6.4 拥有审查层
AI可以生成功能代码。它还不能做的——是做出深思熟虑的架构权衡。
这是你的工作。审查连贯性,而不仅仅是正确性。寻找创造长期复杂性的模式。成为质量的策展人,而不仅仅是bug的守门人。
6.5 不要成为天才开发者
房间里最聪明的人不是解决最多问题的人——而是首先防止问题发生的人。
在这种情况下的领导力意味着构建超越你个人努力的系统。这意味着将判断编码到系统中,而不是把它锁在你的头脑中。
下一代开发者不会通过他们能多快发布代码来衡量——而是通过他们塑造系统的能力来衡量,这些系统允许其他人安全、可持续和智能地发布。
7 TLDR
软件开发的未来不会由谁打字最快来定义。那场比赛已经结束了——机器赢了。
但我们没有失业。我们现在只是在玩不同的游戏。
下一个十年最有价值的开发者不会是追求短期速度的氛围编码者。他们将是长期系统的设计师——能够驾驭AI原始力量同时保持清晰、连贯和方向的架构师。
钟摆再次摆动。从过度文档化的规格说明书到”只管发布”的混乱,现在走向一个新的中心:有意图的系统设计,不仅为人类优化,也为AI协作者优化。我们不是回到旧方式。我们正在前进到更复杂的东西——更强大——因为它让我们在不放弃控制的情况下扩展。
在这个新世界中,速度仍然重要。但方向更重要。结构更重要。原则更重要。
所以是的——快速发布。但要聪明地发布。构建持久的系统。为下一代编码者编写:不是实习生,不是同事,而是尽力遵循你领导的智能机器。
软件的未来不仅仅是被编写的。它是被设计的。