拒绝盲从:程序员该如何真正驾驭 AI 编程?
现在大家都在谈 AI 写代码,但很多人其实是用错了。在把 AI 当作主力工具之前,我们得先把它的一层皮剥下来,看看它到底是个什么东西,以及怎么用才不会翻车。
一、 祛魅:AI 到底是个啥?
别把 AI 想得太神,它不是一个有思想的大脑,本质上它就是一个超级加强版的“自动补全”工具。
不管是 GPT 还是 Claude,它们干的事儿只有一件:猜下一个字。
- 它是按“块”收费的:它处理数据的单位叫 Token,大概就是大半个英文单词或者半个汉字。
- 它的记性很短:每个模型都有个“上下文窗口”,就像金鱼的记忆。一旦你给它的代码超过了这个长度,它就会把前面的逻辑忘得一干二净。
- 它会一本正经胡说八道:我们管这叫“幻觉”。当它不知道答案时,为了拼凑出合理的句子,它可能会编造一个根本不存在的函数库。
什么时候用 AI 最爽?
AI 有个铁律:它擅长“模仿”,不擅长“发明”。
- 它的舒适区:那些重复的、标准化的活儿。比如写个增删改查(CRUD)、洗洗数据、把 Python 转成 Java、写个正则表达式。这些代码网上到处都是,它见得多,自然写得好。
- 它的禁区:如果你要发明一套全新的加密算法,或者解决一个极其特殊的业务逻辑,千万别全信它。它没见过的东西,大概率会给你挖坑。
现在的程序员,正在从“搬砖工”变成“包工头”。 以前我们要自己背语法、敲键盘;现在我们负责下指令、检查质量、做决策。
二、 别做梦了,AI 救不了烂逻辑
软件开发里有两种难:
- 手原本就慢:比如写配置文件、查 API 文档、写样板代码。
- 脑子本来就乱:比如业务逻辑本身很复杂,或者需求根本没理清楚。
AI 能完美解决第一种,让你不再为琐事头秃;但对于第二种,它无能为力。如果你自己都不知道想要什么,AI 给你的只能是一堆看起来很美但跑不起来的垃圾。
把 AI 当作“高级实习生”
不要让 AI 去挑战高精尖的核心算法,把它当成一个不知疲倦的实习生,把那些你懒得干的脏活累活丢给它:
- 写文档:丢给它一堆乱七八糟的老代码,让它反向生成说明书。
- 补测试:让它给你的代码写单元测试,覆盖各种奇葩的边界情况。
- 干苦力:根据你的 Java 类,自动生成 SQL 建表语句和前端接口定义。
- 找茬:让它帮忙 Review 代码,看看哪里有空指针风险。
三、 进阶心法:从“凭感觉”到“定规矩”
阶段一:凭感觉写 (Vibe Coding)
很多人现在的用法是:直接跟 AI 聊天,让它写代码,跑一下看看,报错了再骂它,直到跑通为止。 这种模式叫 Vibe Coding(氛围编程)。
- 优点:快,爽,像玩游戏一样,适合做个小 Demo。
- 缺点:这是个大坑。因为 AI 发挥不稳定,同样的指令下次生成的代码可能完全不同;而且项目一大,它记不住之前的逻辑,经常修好一个 Bug 引入两个新 Bug。
保命建议:像打游戏存档一样提交代码
AI 就像个喝醉了的高级工程师,它可能写出神级代码,也可能悄悄删掉你昨晚的核心逻辑。 每当 AI 完成一个小功能并测试通过后,立刻 Git Commit! 绝对不要在没存档的情况下让它连续大改。
阶段二:定规矩写 (Spec-Driven Development, SDD)
要想干大工程,就不能靠聊天,得靠 “文档驱动” (SDD)。 这里的逻辑变了:文档(Spec)才是真正的源代码,具体的代码只是 AI 根据文档“编译”出来的产物。
怎么操作?
- 写规范 (Spec):先写一个详细的 Markdown 文档,告诉 AI 我们的目标、接口定义、数据结构,最重要的是——怎么才算做完了(测试标准)。
- 出计划:让 AI 根据文档生成执行步骤(先建表,再写后端,最后写前端)。
- 拆任务:把计划拆成一个个小任务。
- 执行:AI 领任务去写代码,并自动跑测试。
这样做的最大好处是:AI 读得懂长文档,不会跑偏;而且改文档比重构代码容易多了。
四、 现实很骨感:面对“祖传代码”怎么办?
如果是一个全新的项目,用上面的 SDD 方法很爽。但现实是,我们 90% 的时间都在维护一堆没有文档、逻辑混乱的“屎山”代码。
对付老项目的策略: 千万别试图让 AI 一次性重构整个系统,那是自杀。
- 当翻译:选中一段看不懂的代码,问 AI:“这玩意儿是干啥的?用人话解释一下。”
- 切香肠:让 AI 把一个 500 行的超大函数,拆成几个小函数,别改逻辑,只改结构。
- 加护栏:让 AI 帮忙加日志、加异常捕获,至少出问题时知道死在哪。
五、 写在最后
给你的几个建议
- 别矫枉过正:改个按钮颜色这种小事,直接用 IDE 的 AI 助手对话解决就行,别写什么文档,浪费时间。
- 文档即资产:做复杂新功能时,逼自己留下一份 Markdown 文档。半年后你会感谢现在的自己。
- 保持警惕:AI 越自信,你越要小心。Code Review 的时候,要专门盯着它是不是引用了不存在的方法。
人的核心竞争力到底是什么?
AI 懂语法,但它不懂**“为什么这个客户要打八折”**。 业务逻辑里的那些人情世故、历史包袱、妥协折中,AI 是理解不了的。
未来,你会花更少的时间写代码(Translation),花更多的时间去设计系统(Architecture)和理解业务。AI 是你的外骨骼机甲,但驾驶机甲的人,必须是你。
本文观点整理自:How to use AI for coding