1. 当编码助手成了标配,程序员的护城河到底在哪
最近半年,我身边几乎每个开发群都在聊同一个话题:AI 编码工具越来越强,自己写的代码还有没有价值。有人焦虑,有人兴奋,也有人干脆躺平。我自己从去年开始深度使用各类编码助手,从最早的代码补全,到后来的 Agent 自动改代码、跑测试、提 PR,一路踩坑一路观察,慢慢有了一些比较实在的体会。
这篇文章不打算贩卖焦虑,也不打算灌鸡汤。我想从一个一线开发者的视角,把“AI 编码时代程序员如何发挥价值”这件事拆开来讲清楚:AI 编码工具到底改变了什么、哪些能力正在贬值、哪些能力反而更值钱、我们该怎么调整自己的工作方式。不管你是刚入行的新手,还是写了十年代码的老兵,都能从中找到可以立刻上手的东西。
核心关键词先摆出来:AI 编码、程序员、Agent、编码助手、harness。这几个词基本构成了当下这个阶段的主线——AI 负责生成,Agent 负责编排,harness 负责约束和验证,而程序员负责判断和决策。理解这条链路,你就理解了价值转移的方向。
2. AI 编码工具到底改变了什么
2.1 从“补全”到“代理”的三级跳
要搞清楚价值往哪走,先得看清楚工具本身进化到了哪一步。我把 AI 编码工具的演进分成三个阶段,这个划分是我自己用下来的体感,不一定严谨,但很好理解。
第一阶段是代码补全。你敲几个字符,它猜你接下来要写什么。这个阶段本质上是“更聪明的输入法”,它提升的是打字速度,但代码结构、逻辑走向还是你说了算。这个阶段程序员的感受是“爽,但没被威胁”。
第二阶段是对话式生成。你把需求描述清楚,它给你一整段函数甚至一整个文件。这个阶段开始有人慌了,因为很多模板代码、CRUD、工具函数确实可以一句话生成。但问题也很明显:它生成的东西对不对、能不能跑、边界情况处理了没有,还是得你自己判断。
第三阶段就是现在正在发生的Agent 化。编码助手不再只是被动等你提问,而是能自己读代码库、自己规划任务、自己改多个文件、自己跑测试、自己根据报错再改。这时候“harness”这个词就冒出来了——它指的是给 Agent 套上的一层约束框架,包括权限控制、工具调用边界、验证流程、回滚机制等等。
提示:很多人把 Agent 理解成“更聪明的补全”,这是误解。Agent 的核心不是生成能力,而是自主执行和闭环验证的能力。生成只是其中一环。
2.2 被替代的从来不是“写代码”,而是“翻译需求”
我观察下来,AI 真正吃掉的是从明确需求到标准代码的翻译工作。比如“写一个分页查询接口”“把这个 JSON 转成实体类”“给这个函数加个 try-catch”,这类工作以前占用了大量时间,现在确实可以交给 AI。
但注意,这里有个前提:需求本身是明确的。而现实工作中,大部分时间根本不是在写代码,而是在搞清楚“到底要写什么”。需求模糊、边界不清、各方理解不一致,这才是真正的难点。AI 在这件事上帮不上太多忙,因为它没法替你开会、没法替你判断业务优先级、没法替你承担“这个方案选错了”的责任。
所以第一层价值转移就很清楚了:把“翻译”交给 AI,把“定义问题”留给自己。谁能把模糊需求拆成清晰、可验证的任务,谁就能让 AI 发挥最大价值,同时自己不可替代。
2.3 一个真实对比:同样用 AI,产出差三倍
我做过一个小实验。同一个需求——给一个已有的订单模块加一个“超时未支付自动取消”的功能,我让两个同事分别用 AI 助手完成。
同事 A 的做法:直接跟 AI 说“帮我加一个订单超时自动取消功能”,AI 生成了一大段代码,他复制进去,跑了一下报错,又让 AI 改,来回折腾了快两个小时,最后勉强能跑,但边界情况一堆问题。
同事 B 的做法:先自己把需求拆成几个子问题——超时时间从哪来、用什么机制触发(定时任务还是延迟队列)、取消时要不要回滚库存、并发情况下怎么防止重复取消。然后针对每个子问题分别让 AI 生成方案,自己对比选型,最后组装。整个过程四十分钟,代码质量明显更高。
同样的工具,产出差了三倍。差别不在工具,在于会不会拆问题。这就是我想说的核心:AI 时代,程序员的第一个核心价值是问题拆解能力。
3. 哪些能力在贬值,哪些在升值
3.1 正在快速贬值的四类能力
我不想说“某某能力没用了”这种绝对的话,但确实有些能力的市场溢价在快速下降,这是事实。
第一类是纯记忆型知识。比如某个 API 的参数顺序、某个框架的配置写法、某段正则怎么写。这些以前靠背、靠查文档积累的东西,现在 AI 秒答,而且比人记得准。你花大量时间背这些,投入产出比越来越低。
第二类是模板化编码。CRUD、DTO 转换、简单的工具函数、重复的样板代码。这些是 AI 最擅长的领域,生成质量稳定,速度快。
第三类是单点语法熟练度。以前面试爱考“这个语法糖展开是什么”“这个闭包输出什么”,现在这类问题越来越像八股。不是说基础不重要,而是它不再是区分度所在。
第四类是纯执行型任务。别人把方案定好,你负责照着写。这种角色在 AI 加持下,一个人能顶过去三四个人的产出,岗位需求自然收缩。
3.2 正在快速升值的五类能力
反过来,有几类能力的价值在肉眼可见地上升。
第一,问题定义与拆解。前面已经说过,这是让 AI 干活的前提。能把一个模糊的大需求拆成一组清晰、独立、可验证的小任务,这个能力现在极其稀缺。
第二,方案判断与取舍。AI 能给你三个方案,但它不会告诉你哪个更适合你当前的团队、业务阶段、技术债情况。选型这件事,需要的是对上下文的理解,AI 缺的正是这个。
第三,验证与调试。AI 生成的代码,你得能快速判断对不对、哪里可能有问题、怎么设计测试去验证。这需要扎实的调试功底和对系统的理解。
第四,系统设计与架构。模块怎么划分、边界怎么定、数据怎么流、扩展性怎么留。这些是 AI 目前最弱的地方,因为它缺乏对全局和长期演化的把握。
第五,沟通与协作。跟产品对齐需求、跟同事协调接口、跟上级汇报进度、带新人。这些软技能在 AI 时代反而更重要,因为技术执行的门槛降低了,人的协调成本占比上升了。
3.3 一张对照表看清趋势
| 能力类型 | 过去价值 | 现在价值 | 变化趋势 |
|---|---|---|---|
| 记忆型知识 | 高 | 低 | 快速下降 |
| 模板化编码 | 高 | 低 | 快速下降 |
| 语法熟练度 | 中 | 低 | 下降 |
| 问题拆解 | 中 | 极高 | 快速上升 |
| 方案判断 | 高 | 极高 | 上升 |
| 验证调试 | 高 | 高 | 稳中有升 |
| 系统设计 | 高 | 极高 | 上升 |
| 沟通协作 | 中 | 高 | 上升 |
这张表不是让你焦虑,而是让你知道力气该往哪使。如果你现在大量时间花在表格上半部分的能力上,是时候调整了。
4. 把 Agent 和 harness 用起来:一套可落地的工作流
4.1 先理解 harness 到底解决什么问题
很多人用 AI 编码,最大的痛点不是“它不会写”,而是“它乱写、它改坏、它跑偏”。harness 就是来解决这个问题的。
你可以把 harness 理解成给 AI 套的一个“工作规范 + 安全护栏”。它通常包含几层:
- 上下文层:告诉 AI 这个项目的结构、约定、技术栈、代码风格。
- 工具层:规定 AI 能用哪些工具,比如读文件、写文件、跑命令、查文档。
- 验证层:AI 改完代码后,自动跑测试、跑 lint、跑类型检查。
- 回滚层:如果验证不通过,自动回退到改动前的状态。
- 权限层:哪些目录能改、哪些命令能跑,提前设好边界。
没有 harness 的 Agent,就像一个没有安全绳的攀岩者,能力越强,摔得越惨。有了 harness,你才敢让它自主执行。
4.2 我自己的编码工作流长什么样
说说我现在的实际工作方式,供你参考。我把它分成五步。
第一步:需求澄清。拿到任务先不写代码,用自然语言把需求、边界、验收标准写清楚。这一步我会用 AI 帮我提问——让它列出“这个需求可能有哪些歧义点”,然后我逐个确认。
第二步:任务拆解。把需求拆成一组小任务,每个任务独立可验证。拆完之后我会让 AI 评估一下“这个拆解有没有遗漏”,作为交叉检查。
第三步:方案生成与选型。针对关键任务,让 AI 生成两到三个方案,我自己对比取舍。这一步 AI 是参谋,不是决策者。
第四步:编码与验证。让 Agent 在 harness 约束下执行编码,每完成一个小任务就跑一次验证。验证不通过就回退重来。
第五步:人工审查。所有 AI 生成的代码,我都会过一遍。重点看边界处理、异常路径、性能隐患、安全隐患。这一步不能省。
4.3 一个具体的 harness 配置思路
不同工具的具体配置不一样,但思路是通用的。我以常见的 Agent 编码场景为例,说说我会怎么设。
# 概念示意,非真实配置文件 context: project_structure: "src/ 下按模块划分,tests/ 放测试" conventions: "遵循现有代码风格,不引入新依赖除非必要" tech_stack: "语言、框架、数据库版本" tools: allowed: - read_file - write_file - run_tests - run_linter forbidden: - delete_directory - modify_ci_config validation: on_change: - run_unit_tests - run_linter - run_type_check on_failure: rollback permissions: writable_paths: - "src/" - "tests/" readonly_paths: - "config/" - ".github/"这套配置的核心思想是:给 AI 自由,但自由有边界;让 AI 干活,但干完必须验证。我实测下来,有了这层约束,Agent 的产出可用率能从大概五成提升到八成以上。
注意:harness 不是越严越好。约束太死,AI 什么都不敢做,效率反而低。边界要设在“关键风险点”上,比如生产配置、数据库迁移、CI 流程这些,普通业务代码可以放宽。
4.4 多 AI 协作:别把鸡蛋放一个篮子
现在有个趋势是“多 AI 协作”,就是让不同的模型或 Agent 分工。比如一个负责写代码,一个负责审查,一个负责写测试。我试过一段时间,确实有效果,但要注意几点。
好处是明显的:不同模型有不同盲区,交叉验证能发现单模型发现不了的问题。比如 A 模型写的代码,B 模型审查时经常能挑出边界问题。
但坑也有:协调成本高、上下文传递容易丢失、有时候两个 AI 互相“客气”,审查流于形式。我的做法是给审查方明确的检查清单,逼它逐条核对,而不是泛泛地说“帮我看看有没有问题”。
5. 实操中踩过的坑和总结的经验
5.1 五个高频问题与排查思路
用 AI 编码这段时间,我整理了几个反复出现的问题,做成速查表。
| 问题现象 | 可能原因 | 排查思路 | 解决方向 |
|---|---|---|---|
| AI 生成的代码跑不通 | 上下文不足或理解偏差 | 检查是否提供了足够的项目背景 | 补充上下文,明确约束 |
| 改了一个地方坏了另一个地方 | 缺乏全局视野 | 检查是否让 AI 读了相关模块 | 提供依赖关系,分步验证 |
| 反复改还是不对 | 需求本身没想清楚 | 回到需求,重新拆解 | 先定义清楚再让 AI 动手 |
| 生成的代码风格不一致 | 没给风格约束 | 检查 harness 的约定层 | 补充代码规范说明 |
| 测试通过但线上出问题 | 验证覆盖不足 | 检查测试是否覆盖边界 | 补充边界测试和异常路径 |
5.2 三条我踩坑换来的经验
经验一:永远不要让 AI 直接改生产相关配置。我吃过一次亏,让 Agent 自动改了一个部署脚本,结果它“顺手优化”了一个它不理解的参数,导致环境出问题。从那以后,生产配置、数据库迁移、CI 流程这些,我一律设为只读,必须人工改。
经验二:验证要自动化,但判断要人工。自动化测试能挡住大部分低级错误,但“这个方案是不是最优”“这个抽象是不是过度设计”这类问题,机器判断不了。我现在的习惯是:机器管对错,人管好坏。
经验三:把 AI 当同事,不是当工具。这个说法听起来有点玄,但很实用。当你把 AI 当工具,你会期待它“一次做对”;当你把它当同事,你会自然地给它交代背景、说明约束、检查产出。后者的产出质量明显更高。
5.3 关于“程序员会不会被取代”的真实看法
这个问题我被问过无数次。我的看法是:被取代的不是程序员,是不会用 AI 的程序员。但这个说法太笼统,我拆细一点。
短期内,纯执行型、模板化的岗位需求会收缩,这是确定的。同时,能驾驭 AI、能定义问题、能做判断的岗位需求会上升。中间那批“只会照着写”的人,压力最大。
长期看,编程这件事的门槛在降低,但天花板在升高。以前你要花大量时间学语法、记 API,现在这些可以快速跨过,你可以更早地接触系统设计、架构、业务理解这些更高层的东西。这对愿意往上走的人是好事。
所以与其焦虑,不如把 AI 当成一个杠杆。你原来的能力是 1,AI 是 10 倍杠杆,你能撬动的东西就大了。但前提是,你得有那个“1”——判断力、拆解力、责任心。没有这个 1,杠杆再大也是零。
6. 给不同阶段程序员的实操建议
6.1 新手:别跳过基础,但别死磕基础
如果你是刚入行的,我的建议是:基础还是要打,但方式要变。以前是“背下来”,现在是“理解原理 + 会用 AI 查细节”。
具体怎么做:学一个知识点时,先自己理解核心概念和原理,细节交给 AI 查。比如学 HTTP,你搞清楚请求响应模型、状态码分类、常见头部的作用,具体某个头部的取值让 AI 告诉你。这样你既有框架,又不浪费时间在记忆上。
另外,尽早开始用 AI 编码工具,但要有意识地训练自己的判断力。每次 AI 给你代码,你都问自己:这段代码有没有问题?边界处理了吗?有没有更好的写法?这个习惯越早养成越好。
6.2 中级:把重心从“写”转到“设计”和“验证”
如果你已经写了几年,日常 CRUD 不在话下,那你的重心应该往两头移:往上是设计和架构,往下是验证和调试。
设计这块,多参与方案讨论,多思考“为什么这么设计”“换个场景还适用吗”。验证这块,把测试写好,把调试能力练扎实。这两块是 AI 目前最弱、也最难替代的。
同时,开始建立自己的 harness 和工作流。把你常用的项目结构、代码规范、验证流程整理成一套可复用的配置,让 AI 在你的框架里干活。这套东西一旦建起来,你的效率会有质的变化。
6.3 资深:做 AI 的“指挥官”,而不是“操作员”
如果你已经是资深开发或者技术负责人,你的价值不在于自己写多少代码,而在于定义标准、搭建框架、做关键决策。
具体来说:定义团队的 AI 使用规范,搭建适合团队的 harness,决定哪些环节用 AI、哪些必须人工,培养团队成员的判断力。这些事看起来不“硬核”,但决定了一个团队在 AI 时代的整体战斗力。
还有一点,资深的人要主动承担“兜底”责任。AI 出的问题,最终要有人负责。你愿意为 AI 的产出负责,你就有资格指挥 AI。这是信任的基础,也是价值的体现。
6.4 一个可以立刻上手的练习
最后给一个具体练习,帮你把上面的东西落地。
找一个小需求,比如“给现有项目加一个日志脱敏功能”。然后按这个流程走一遍:
- 用自然语言写清楚需求、边界、验收标准。
- 让 AI 帮你列出可能的歧义点,逐个确认。
- 把需求拆成三到五个小任务。
- 针对每个任务让 AI 生成方案,自己选型。
- 让 Agent 在约束下编码,每步验证。
- 人工审查所有产出,记录发现的问题。
走完这一遍,你会对“AI 时代怎么干活”有非常具体的体感。这比看十篇文章都管用。
我个人在实际操作中的体会是,AI 编码这件事,工具会一直变,模型会一直强,但底层逻辑不会变:谁定义问题,谁做判断,谁承担责任,谁就有价值。把这三件事抓在手里,工具越强,你越轻松。反过来,如果这三件事都交给 AI,那被替代也只是时间问题。