夜雨聆风学习资料网

ARTICLE · 1223275

AI能帮你写代码,但救不了你的烂工程

AI能帮你写代码,但救不了你的烂工程

使用AI做项目,有一个典型的现象:

用AI做个工具,刚开始特别顺利。一下午就能把原型跑通了,一周就能上线了第一个版本。这让人开心,也觉得有成就感。但运行起来,各种问题开始冒出来。今天加一个小功能,改了半天没改对;明天修一个bug,结果把另一个正常的功能弄崩了。代码越堆越多,文件越改越乱,自己都不敢动某些模块了。

这种现象的出现,很多时候,或者说大多时候,问题并不在AI,而是在工程素养。

这话有点抽象,拆开来看。用AI做事情,尤其是做那种要持续运行、要不断修改的系统,需要一种能力。这种能力可以浓缩成一句话:在有限资源、不确定需求下,可靠、可维护、可复现地交付一个可用系统的综合能力。不是写出能跑的代码就行,而是这个项目别人还能看懂、改得动,出问题能定位,能持续迭代。这里这个别人,也包括几天后的你自己。

很多人用AI做项目,一开始都很快。让AI生成一个函数,几秒钟。让AI补一段逻辑,几十秒。让AI把整个页面搭出来,几分钟。这种速度会给人一种错觉,觉得做软件原来这么简单。但软件不是一次性的东西。你今天写下的代码,明天还要改。你今天觉得没问题的结构,下个月可能就撑不住了。AI能帮你生成,但不会替你收拾后面的摊子。

典型的问题是这样的:会用AI写代码、拼功能,但没有软件工程素养。项目越做越乱,大量返工,反复改,分不清优先级,代码改崩,不知道怎么验证,全是无意义的内耗。这种内耗不是技术难度带来的,是缺少基本的工程习惯带来的。

以前没有AI的时候,写代码慢,反而会逼着人先想清楚。需求是什么,边界在哪里,数据结构怎么设计,模块怎么拆。因为改起来成本高,所以动手之前会多想一想。现在AI把生成成本降到了接近于零,人很容易跳过设计这一步,直接让AI开写。写出来的东西能跑,就以为没问题。可跑的只是表面,里面的结构可能是一团乱麻。没有分层,没有命名规范,没有注释,没有测试,没有版本管理。所有东西都堆在一起,像一个从来不收拾的房间。刚开始还能找到东西,住久了连下脚的地方都没有。

更麻烦的是,AI会顺着你的上下文继续生成。你给它一个混乱的代码库,它不会帮你整理,它会在混乱的基础上继续加东西。它没有全局观,不知道哪个模块该复用,哪个函数该抽出来,哪个依赖不该引入。它只是根据你当前的输入,生成看起来合理的输出。你越乱,它生成的越乱。你越没有边界,它越容易跑偏。

这时候很多人会陷入一种循环:出问题,让AI修;修完又出问题,再让AI修;修到最后,自己都不知道代码变成什么样了。每一次修复都像在打补丁,补丁摞补丁,系统越来越脆。改一个地方,崩三个地方。最后只能推倒重来。推倒重来的成本,比一开始慢慢设计要高得多。

工程素养这件事,说起来大,实际落地的时候都是很小的动作。比如动手之前先画个边界。这个项目到底要解决什么问题,不解决什么问题,哪些功能是核心,哪些可以往后放。边界不清楚,AI就会帮你生成一堆你可能永远用不上的东西。那些东西放在那里,就是未来的维护负担。

比如把系统拆成小块。每一块只负责一件事,块和块之间用清晰的接口连接。AI生成的时候,一次只让它处理一块。这样出了问题,你知道去哪个块里找。改的时候,也不会牵一发而动全身。很多人喜欢让AI一次性生成一个大文件,几百行甚至上千行。看起来省事,实际上是给自己埋雷。一个大文件,没有结构,没有边界,谁都不敢碰。

比如保留版本。每一次改动之前,先留一个能回去的版本。AI改崩了,至少可以退回去。这个习惯听起来简单,但很多人不做。他们觉得麻烦,觉得不会出问题。等到出了问题,才发现没有退路。版本管理不是什么高级技术,就是一个基本的保险。你不需要用多复杂的工具,哪怕只是复制一个文件夹,改个名字,也比什么都没有强。

比如写测试。不需要写很复杂的测试,但至少要有几个最基本的检查。改完代码之后,跑一遍,看看核心功能还在不在。AI不会主动帮你写测试,除非你要求。但测试这件事,是区分“能跑就行”和“能维护”的重要标志。没有测试,你每次改动都是在赌博。有测试,你至少知道赌输了没有。

比如把AI当执行者,而不是架构师。AI很擅长在你给定的框架里填充细节,但它不擅长替你决定框架本身。架构、模块划分、数据流向、异常处理策略,这些需要人来定。你定得越清楚,AI生成的质量越高。你定得越模糊,AI就越容易给你一堆看起来能用但互相冲突的东西。很多人反过来,让AI决定一切,自己只负责点“生成”。结果就是项目越长越歪,最后连自己都看不懂。

还有一个很容易被忽略的点:验证。AI生成的东西,看起来对,不一定对。它可能会漏掉边界条件,可能会用错API,可能会在特定输入下崩溃。如果你不验证,这些问题就会留到生产环境里。验证不需要多复杂,就是拿几个真实的例子跑一遍,看看结果对不对。拿几个奇怪的例子跑一遍,看看会不会崩。这个过程花不了多少时间,但能挡掉大部分低级错误。

所说的坑,自己基本都踩过了。

现在的理解是,如果用AI做项目,最怕的不是它生成得慢,是它生成得太快,快到来不及想清楚结构,快到来不及验证,快到误以为能跑就等于做完。真正的交付,不是代码跑起来的那一刻,是它能在接下来的几个月里,被人改、被人用、被人信任。这些事,得自己搞定,AI还替代不了人类。

相关学习资料