写了几年业务代码,突然换成让模型先出稿,很多人第一反应是「这还算编程吗」。卡点通常不在工具会不会用,而在工作顺序变了:以前是先想清楚再写,现在是先写出来再判断;以前怕写错,现在怕看不出错。这篇按流程、心智和工程约束三条线拆开讲,给出可直接照做的手顺序,也说清哪些场景下传统编程那套反而更划算。
写了几年业务代码,突然换成让模型先出稿,很多人第一反应是「这还算编程吗」。其实卡点通常不在工具会不会用,而在工作顺序变了:以前是先想清楚再写,现在是先写出来再判断;以前怕自己写错,现在怕看不出哪里错。
这篇不聊哪个编辑器好用,只拆两种干法在流程、心智和工程约束上的差异,给想转型的开发者一条能照做的上手顺序,也说清哪些场景下传统那套反而更划算。要说的是判断标准,不是绝对结论,具体项目得自己试。
先看交接点:AI 编程到底换了哪一步
传统编程的链路是「想清楚—写—跑—调」,每一步都建立在上一步已经确定的基础上。AI 编程把「写」这一步大幅前置:需求还只有个模糊念头,就先让模型出一版草稿,然后你拿着草稿反过来把需求逼清楚。变化本身不神秘,但它改变了你每天花时间的地方。
| 维度 | 传统编程 | AI 编程 |
|---|---|---|
| 起点 | 精确描述需求 | 模糊意图加一点上下文 |
| 中间产物 | 可提交的代码 | 可淘汰的草稿 |
| 主要时间花在 | 调试与推导 | 读代码与判断 |
| 失败的代价 | 写错要重写 | 看不出错要出事 |
但这条经验有明确的不适用区:接口契约、并发临界区、资金与权限校验这类「一处错就全盘错」的地方,草稿前置反而增加返工。让模型先写一版支付扣款逻辑,你后面读代码的时间和风险,往往比直接手写还高。这类位置建议把顺序倒回去,先定契约再谈生成。
流程对照:两种干法的步骤顺序差在哪
传统流程大致是:拆需求 → 定接口 → 写实现 → 写测试 → 联调。AI 编程的循环更像:给上下文 → 出草稿 → 读一遍判断 → 小步改 → 补测试兜住。两条链路没有谁更高级,区别在于后者把「判断」提到了最前排,而且每一轮都要有个能立刻跑的验证动作。
- 给上下文只贴相关文件、目录结构和约束说明,别把整个仓库倒进去。贴完先问自己:如果换个人只看这些,能不能写出你要的东西。
- 出草稿一次只让它解决一个明确问题,产出的东西默认是草稿,不是可以合并的代码。
- 读一遍判断逐行读,读不懂就追问或者直接自己改。看不懂的代码等于别人的代码,别合。
- 小步改每次改动控制在一个函数或一个文件内,改完立刻跑构建或跑相关测试。
- 补测试兜住测试不是证明它写对了,是证明它没写坏原来的行为,边界和异常分支优先。
心智差异:从「一次写对」到「快速证伪」
传统编程的默认假设是:正确性靠推导,想清楚了基本就对了。AI 编程的默认假设是:正确性靠验证,写出来的东西先当它可能是错的。这两种心态对失败的反应完全不同——前者怕出错,后者怕漏检。心态不换,你会发现自己在反复纠结「它为什么写错」,而不是「我怎么更快发现它错」。
一个实用的心理定位:把模型当打字很快、但完全不了解你项目的实习生,比把它当资深同事更接近实际。交给实习生的活,你会验收;交给资深同事的活,你可能会直接采纳。用错定位,失望和事故都会来。
- 把「它写得对不对」换成「我多久能验出来」
- 看不懂的逻辑不合并,不抱侥幸心理
- 它的解释只能当线索,最终以跑出来的结果为准
- 发现它连续两轮改不对,就自己动手,别纠缠
- 对失败脱敏:草稿被删掉是正常损耗,不是浪费时间
这套习惯的例外也挺清楚:探索性算法题、一次性脚本、临时数据清洗,怎么写都能跑,不必套一整套验证流程,直接生成然后跑一次看结果就够。
上下文成了新的「输入参数」
传统编程的输入是需求文档,写代码的人靠经验补全隐含信息。AI 编程里,你贴进去的文件、目录结构、约束说明本身就是显式输入,贴少了它就自己猜,而猜错的代价往往比你多贴两个文件高得多。
- 约定文件
- 一份写清命名、目录、禁用写法的说明文件,每次对话前让它先读
- 相关文件
- 只贴和当前改动直接相关的源码,控制在能读完的范围
- 约束说明
- 明确写出不许动的模块、必须保留的接口、必须抛出的错误类型
- 示例输出
- 给一段你认可的代码样例,比用文字描述风格更有效
上下文也要有边界。把整个仓库堆进去,通常换来更差的输出,因为真正相关的那部分被淹没了。一个可用的判断是:如果你自己都要翻半天才能从贴进去的内容里找到重点,模型同样找不到。
工程约束没变,只是位置换了
超时、重试、并发上限、幂等、日志、降级,这些照样要写。变化在于:模型生成的调用代码默认会省略它们,你得在审查时主动补回来。以前这些是你在设计阶段就会想到的,现在它们被推到了「读草稿」这一步,漏了就是线上事故。
| 约束 | 模型常见默认 | 你要补的动作 |
|---|---|---|
| 超时 | 不设或设得很长 | 按下游响应时间设合理上限 |
| 重试 | 简单循环重试 | 加退避,区分可重试与不可重试 |
| 幂等 | 直接调用 | 给写操作加幂等键或去重判断 |
| 日志 | 几乎不写 | 关键分支补上可排查的日志 |
给生成的调用代码加一层防护的时候,心里先过一遍三个问题:连不上的时候怎么退、跑飞的循环怎么停、失败重投会不会重复下单。对接远程服务前先量一遍延迟基线,别用体感估,到 /tools/speed-test 看当时的实测数字,再决定超时和重试参数。
读懂 + 测试:两道必须自己守的门
代码审查的重点变了。以前主要看写得对不对,现在第一眼看的是「有没有悄悄改别的行为」——尤其是它顺手重构了不相关的函数、改了默认参数、动了异常处理。这类改动单看一处都合理,合起来就是行为漂移。
- 先看改动范围,超出你要求的部分一律打回
- 再看不相关函数的签名和默认值有没有被动过
- 然后看异常分支:抛出的类型和时机是否和原来一致
- 最后才看新增逻辑本身写得漂不漂亮
- 每次审查完记一笔:它这次帮你省了事还是添了乱
测试用例的定位也换了:从「证明我写对了」变成「证明它没写坏」。所以先覆盖边界和异常分支的收益最大,正常路径反而是最不容易出问题的地方。同样有不适用的情况——纯样式、文案、一次性数据清洗,为它补一整套测试不划算,跑一遍看结果就行。
什么时候该切回传统写法
转型不是单向的。有几类活,传统写法明显更划算,硬用模型反而慢。判断标准很简单:描述这件事的成本,如果已经接近甚至超过直接写,就该自己动手。
| 场景 | 为什么切回手写 | 怎么判断 |
|---|---|---|
| 需求已明确到一句话 | 描述给模型的时间比写还长 | 你能直接默写出接口签名 |
| 并发与事务边界 | 一处顺序错就难查 | 涉及锁、事务、状态机 |
| 密钥与权限校验 | 生成代码容易夹带宽松判断 | 涉及鉴权和敏感数据 |
| 线上疑难排查 | 模型的合理猜测会带偏方向 | 现象和日志对不上时 |
更稳的做法是先手写骨架:把结构、边界、关键分支自己定下来,再让模型填细节。排查线上问题时也建议先自己定位到大致范围,再让模型辅助验证假设,反过来容易被它说得头头是道但方向错误的解释带偏。
转型期照这个顺序上手
如果现在还没系统用过,别一上来就让它改核心模块。按下面的节奏走,判断权始终留在自己手里,出问题也控制得住。这个顺序对 5 人以内的小团队尤其合适,人多的话可以先在一个人身上跑通再推广。
- 第一周只让模型写样板、测试、文档注释这类低风险产物,所有业务逻辑自己写。目标是熟悉它出错的规律。
- 第二周开始让它改小函数,每次改动前后各跑一次构建与测试,记录哪些改动可以直接采纳、哪些必须重写。
- 第三周再放开多文件改动,同时固定一份约定文件和一份常用提示词模板,减少重复沟通。
- 持续记一份清单:哪些活儿模型干得又快又对,哪些必须自己来。这份清单比任何教程都贴合你的项目。
如果团队要选工具或评估接入方式,别只看功能列表,到 /sites 看当时的可信度检测结果,再到 /price-watch 核对价格跟踪的最新数字,两边对上了再决定。
下一步想横向对比几家工具和中转服务的实际表现,去 /rankings 看当时的评测汇总,再挑一两家按上面的三周节奏试一遍。→常见问题
不会写代码的人能靠 AI 编程做项目吗?
能做小工具和内部页面,但做不长。差异不在能不能生成代码,而在出了错能不能看出来。没有基础的人往往连「它写错了」都判断不了,问题会积到跑不起来才暴露。建议先补一门语言的基本语法与调试方法,把 AI 当加速器而不是替代品。
AI 写的代码算我的吗,能直接上生产吗?
能不能上生产看验证,不看来源。它可能引入你没要求的依赖、改掉无关逻辑、漏掉异常处理。放进仓库前至少要跑通构建、跑一遍测试、自己读一遍改动。涉及授权与合规的部分,另到 /safety 查相关口径,别只凭感觉判断。
两种方式效率差多少?
差别不在打字速度,在返工次数。写陌生框架的样板代码、补测试、写注释这类活提升明显;改一个逻辑绕但有历史包袱的老函数,往往还不如自己理一遍快。具体能省多少取决于任务类型,用一两周记录自己的实际情况比看别人结论靠谱。
用 AI 编程后还需要读源码和文档吗?
更需要。模型给出的写法往往没写清版本前提和边界条件,你得能回到官方文档核实。区别只是读的目的变了:以前是照着抄,现在是核对它有没有编。遇到陌生名词先到 /ai-dict 或 /stacks/atlas 查一遍再决定信不信。
团队协作上要注意什么?
先统一约定文件,再统一评审标准。否则每个人喂的上下文不一样,产出的代码风格会分成好几派,评审时吵的都是格式而不是逻辑。建议把「模型生成的改动必须由另一人读一遍」写进流程,尤其是权限、计费、数据删除这几块。