浪潮之中:从 Verb Coding 到 AI 协作——一名技术人的反思与重构
从 2023 年 ChatGPT-4 发布震撼世界以来,AI 的发展可以说是日新月异。作为一个互联网的技术人员,自然首当其冲地感受到了 AI 发展带来的一些变化。这种变化并非涓涓细流,而是如海啸般重塑着我们赖以生存的技能树。
回望这两年,我们经历了一场惊心动魄的范式转移:从最开始的网页端对话聊天、笨拙地粘贴代码;到后来 Cursor 等 AI Native IDE 的横空出世,让我们得以通过自然语言构建代码,正式进入 Verb Coding 时期;再到最近出现的 Open Space 等项目,Space Driving Coding 的概念开始萌芽,试图解决 AI Coding 在多人协作以及代码严肃度(Seriousness)层面的深水区问题。
在这个过程中,一个人不论是主动拥抱或者被动防御,都一定被这种潮流所裹挟和影响。焦虑与兴奋交织,困惑与顿悟并存。本文主要着笔于笔者过去的一些 AI 编程经验和思考,试图在喧嚣中梳理出一条清晰的脉络。望能对大家有所启发。
一、 编码方式的变迁:从手工作坊到智能工厂
我们这里先将目光回溯,概括一下编码方式的发展历程。当然,受限于笔者的年龄和从业经历,我们就不从上古时期在打孔卡上写代码,或者在记事本里裸写 C++ 的时期开始了。我们主要关注现代软件工程语境下的变迁。
0. 传统方式:IDE 提示,人脑解决问题(The Craftsman Era)
在 AI 大规模介入之前,我们处于“手工艺人”的黄金时代。
那时,IDE(如 IntelliJ IDEA、VS Code)的最高智能体现在静态代码分析和基于语法的自动补全上。输入 List.,IDE 弹出一个下拉框,列出 add、remove、size 等方法,这在当时已是极大的便利。
但在那个阶段,思维的闭环完全在人脑中完成。我们需要在脑海中构建完整的类图,记住复杂的 API 签名,理解每一行代码的副作用。遇到 Bug,我们需要像侦探一样,通过 Stack Overflow 寻找线索,然后人工去伪存真,将零散的知识点在脑中拼凑成解决方案。
那时的编程,是一场孤独的智力苦旅。代码的质量,完全取决于开发者当天的咖啡因摄入量、记忆力以及逻辑构建能力。我们是代码的绝对主宰,也是唯一的责任人。
1. 第一代 AI:粘贴代码,对话框 AI 问答(The Chatbot Era)
ChatGPT 的出现,撕开了第一道口子。
这一阶段最显著的特征是“上下文的割裂”。我们开始习惯于在 IDE 和浏览器之间频繁切换(Context Switch)。我们把错误日志复制出来,粘贴到对话框里,加上一句“帮我修复这个 Bug”;或者描述一个需求,“帮我写一个 Python 的快速排序”。
虽然这极大地降低了查阅文档和搜索引擎的时间,但它本质上仍然是一个外挂式的辅助。AI 并不理解你的项目结构,不知道你定义了哪些 Utils 类,更不知道你的业务逻辑。它给出的代码往往是通用的、教科书式的,需要我们进行大量的“本地化适配”和“胶水代码”编写。
这个时期,我们是搬运工。我们在两个世界之间搬运信息:把人类的需求搬运给 AI,再把 AI 的产出搬运回代码库。虽然效率提升了,但这种割裂感始终让人觉得 AI 只是一个更聪明的 Google,而非真正的编程伙伴。
2. 第二代 AI:AI 助手嵌入 IDE,辅助人工(The Copilot Era & Verb Coding)
GitHub Copilot 和随后的 Cursor 彻底改变了游戏规则。
当 AI 能够读取当前文件的上下文,甚至通过 RAG(检索增强生成)读取整个项目的索引时,量变引起了质变。这一阶段的核心体验是心流的延续。
你不再需要切出 IDE。你只需在注释里写下 // 解析用户上传的 CSV 文件并存入 Redis,按下 Tab 键,灰色的建议代码就会如幽灵般浮现,精准地使用了你项目里封装好的 RedisClient 和 CsvParser。
这就是 Verb Coding 的雏形。我们开始从关注“语法(Syntax)”转向关注“意图(Intent)”。我们用动词(Verb)描述行为,AI 负责填充主语和宾语。
在 Cursor 中,这种体验被推向了极致。你可以用 Cmd+K 直接用自然语言修改代码块,或者通过 @Codebase 让 AI 理解全局依赖。编程的门槛开始降低,但对提问能力(Prompt Engineering)的要求开始上升。我们需要学会如何精准地描述意图,如何像产品经理一样验收 AI 的产出。
3. 第三代 AI:AI 自驱动,人工辅助(The Agentic Era & Space Driving)
这正是我们目前正在跨入的门槛,也是 Open Space 等项目试图探索的领域。
如果说第二代 AI 是副驾驶(Copilot),那么第三代 AI 正在尝试接过方向盘,成为主驾驶(Autopilot),而人类则退居为驾校教练或安全员。
在这个阶段,AI 不再仅仅是补全一行代码或一个函数,而是开始具备 Agent(智能体) 的特性。它可以:
- 自主规划任务:面对“重构支付模块”这样模糊的需求,它能拆解为“定义新接口”、“修改数据库 Schema”、“迁移旧数据”、“更新调用方”等一系列子任务。
- 多文件协同:它不再局限于单文件视角,而是能同时修改前端组件、后端 API 和数据库迁移脚本,并保证它们之间的一致性。
- 自我修正:运行测试,发现报错,分析堆栈信息,自动修复代码,再次运行测试,直到通过。
这就是 Space Driving Coding 的愿景。它试图解决多人协作的问题——AI 作为一个独立的 Developer 加入团队,它提交 PR,接受 Code Review,甚至参与讨论。代码的严肃度被重新审视,因为 AI 产出的不再是随意的片段,而是经过工程化验证的交付物。
4. 未来?——从工具到物种的进化
当我们眺望更远的未来,迷雾中似乎显现出几个巨大的轮廓。
- AI 外包公司的崛起(The AI Software Factory):或许未来不再有成百上千人的外包开发团队,取而代之的是拥有数万个 AI Agent 的算力中心。你只需要提交一份详细的需求文档(PRD),支付 Token 费用,这些不知疲倦的数字劳工就会在几分钟内交付一套包含前端、后端、运维脚本的完整系统。它们对项目负责,24 小时递步,成本仅为人类团队的百分之一。
- 无限上下文与个人定制伙伴(The Digital Soulmate):随着 Context Window 突破百万甚至亿级 Token,未来的 AI 将拥有“全知”的记忆。它不仅记得你项目里的每一行代码,还记得你三年前写过的某个精妙的正则,记得你偏好的命名风格,甚至记得你讨厌哪种缩进方式。它将不再是一个通用的工具,而是一个为你量身定制的、比你自己更了解你代码习惯的“灵魂伴侣”。
- AI 级别的编程语言(The AI-Native Language):我们现在用的 Java、Python 是为了让人类读懂机器逻辑而设计的妥协产物。未来,或许会出现一种专属于 AI 交互的高效中间语言。它比自然语言更精确,比汇编语言更抽象。人类只需要定义高维度的逻辑约束,而具体的实现细节将由 AI 使用这种高效语言在黑盒中极速构建。那时的我们,将彻底告别语法糖的争论,进入纯粹逻辑构建的时代。
二、 AI 会替代我们吗?——直面焦虑与现实
“AI 会替代程序员吗?”这是悬在每个技术人头顶的达摩克利斯之剑。
我的回答是:它会替代“写代码”这个动作,但很难替代“创造软件”这个过程。 至少在当前和可见的短期未来,AI 存在几个致命的阿喀琉斯之踵。
1. AI 当前的问题:没有长期记忆与隐性知识
目前的大模型,无论 Context Window 做得多大,它依然缺乏项目的“长期记忆”和“隐性知识”。
一个运行了三年的系统,代码里充满了妥协和历史包袱。
- 为什么这个函数里要加一个看似多余的
sleep(100)?因为三年前对接的那个第三方银行接口有并发限制。 - 为什么那个数据库字段叫
status_v2?因为status字段被旧的财务系统锁死了。
这些知识往往不存在于代码注释中,也不在 Git Log 里,它们存在于老员工的脑子里,存在于钉钉/企微的聊天记录里,存在于一次次线上事故的复盘文档里。AI 看到那行 sleep(100),可能会自作聪明地把它优化掉,导致线上故障。AI 缺乏对业务演进历史的深刻理解。
2. 无法对项目负责:权责不对等
这是最核心的伦理和实践问题。AI 无法背锅。
当 AI 写出的代码导致了千万级的资金损失,或者导致用户隐私泄露,我们能审判 AI 吗?能把 AI 开除吗?不能。最终签字发布上线的那个人,必须是人类。
软件工程不仅仅是写出能跑的代码,更是对交付结果负责。在处理 P0 级故障时,AI 可以提供排查思路,但它无法在凌晨 3 点顶着巨大的心理压力,做出“回滚”还是“打补丁”的生死决策。而这可能是 AI 相较于人类最大的问题(对人类而言既是幸运也是不幸,QAQ)。
3. 任何人都能通过 AI 编程吗?——识字与写作的悖论
现在有一种论调:“有了 AI,人人都是程序员。”这不仅是误解,更是对工程严肃性的轻视。
写好文章的前提是能识字,但识字的人不一定能写出好文章。 同样的逻辑,AI 让每个人都具备了“生成代码”的能力(识字),但这并不意味着每个人都具备了“构建系统”的能力(写作)。
编程,特别是在企业级生产环境中,是一件长期且严肃的事情。它关乎系统的稳定性、可维护性、安全性以及扩展性。一个没有受过工程训练的人,用 AI 生成的代码或许能跑通一个 Demo,但当面对高并发、数据一致性、微服务治理这些复杂场景时,那些由 AI 堆砌的代码可能会瞬间崩塌成灾难。
程序员的价值,将从“编写代码”上移至“鉴赏与裁决代码”。 只有深刻理解编程原理的人,才能判断 AI 生成的代码是垃圾还是瑰宝,才能在 AI 产生幻觉时力挽狂澜。
三、 与 AI 的关系:君子生非异也,善假于物也
荀子在《劝学》中说:“君子生非异也,善假于物也。”
这句话在 AI 时代振聋发聩。我们与 AI 的关系,不应该是敌对的竞争,而应该是驾驭与合作。
1. 要让 AI 提效,帮忙干活儿,而不是代替思考
很多人容易陷入一个误区:把 AI 当作“许愿池”。丢进去一个需求,闭着眼睛等结果。这是最危险的。
AI 应该是你的“外骨骼”,而不是你的“大脑”。
- 把重复的交给 AI:写单元测试、写 CRUD 接口、写正则表达式、写文档注释。
- 把思考留给自己:系统架构设计、核心业务逻辑的推演、边界条件的定义。
当你不再被繁琐的语法细节纠缠时,你应该感到庆幸,因为你终于有时间去思考代码背后更深层次的逻辑了。你应该从一个“砌砖工”升级为“建筑师”。
2. 当做伙伴,而不是竞争对手
我更愿意把 AI 想象成一个**“博学但缺乏常识、勤奋但没有主见”的结对编程伙伴(Pair Programmer)**。
你是船长,AI 是大副。你需要懂得航海图(架构),懂得看天气(业务环境),懂得下达清晰的指令(Prompt Engineering)。而大副会帮你操纵帆索,调整航向,计算补给。
结语
技术发展的车轮滚滚向前,它冷酷地碾碎旧的习惯,却也慷慨地铺就通往星辰的道路。
也许有一天,我们真的会被 AI 彻底替代,成为旧时代的遗民。But anyway, 作为技术人,我们何其有幸,能亲眼见证人类历史上最伟大的智力革命。我们站在时代的风口浪尖,看着硅基智能从蹒跚学步到奔跑如飞。
未来究竟是人人富足、从重复劳动中解放的科技乌托邦,还是霓虹闪烁、高科技低生活的赛博朋克世界?没人知道答案。但重要的是,我们在场。我们不仅仅是旁观者,更是这股浪潮的参与者与推动者。
奇点终将来临!Witness is happiness!
即使终将落幕,能在舞台上与神共舞一曲,已是此生最大的浪漫。愿我们都能在 AI 的浪潮中,保持清醒,保持热忱,去拥抱那个不可知却又无限迷人的未来。