AI是个温柔乡
前言
科技是一把双刃剑,使用不好会带来非常严重的后果。未来是否会出现AI时代的软件危机还是有待商榷的。
我觉得一定会,危机没有消失,而是在新背景下更凸显了,只不过是我们沉浸在Vibe Coding的温柔乡里。
目前AI的本质就是概率推理,根据你的输入以一定的概率推理,给你输出结果。 意味着AI一定会犯错误(幻觉)。 因为AI上下文有限所以一定不要让AI动你的历史屎山代码(重构)。 因为语言具有二义性所以AI懂了,不一定就是对的,你还得根据结果去判断是否正确。 不要太依赖AI,否则你会严重退化,懒的思考、一切问AI、一切由AI写,你不仅没有学到新知识、没有学到架构,反而脑子变笨,悯然众人。在AI时代基础反而更加重要,AI写出来的代码某个细节写错且非常隐蔽,修bug如同大海捞针,修复成本急剧增加!人类的代码直觉是写出来的,不是看代码看出来的!所以AI时代也要沉下心写代码,自己一个字母一个字母敲.不论高级程序员还是编程新手只要沉下心来,你才不会被淘汰。使用AI未来一定会平民化,你啥也不会只会使用AI,相较于完全不会编程的人又有什么优势呢?
危机
前提: 从零起步的项目(AI最擅长的)
- 完全交给AI写,一但发现一个bug反复烧token但还是解决不了,(烂摊子兜你手里了)
- 排查起来如大海捞针,非常头大
- AI写的代码非常难看懂
- 解决AI写的bug,发现修改了起来非常头大
AI无法解决的bug
普通人使用AI就是,给AI提出需求,AI开启plan模式,和你交互,plan如何制定,制定完成开始实现每一个plan,之后就是yes。
普通人恨不得让AI做所有事情,啥都让AI做,自己却没有思考,一直yes或者简单看看代码,是非常错误的使用方式(但某些情况下只能这么做,比如工时紧张)
目前一个从零起步的项目,AI完成了80%,马上达到上线状态,但是出现一个bug,而且AI尝试修复这个bug,(比如某个页面卡顿,需要进行优化),AI烧了很多Token之后,还是没有修复好,你急不可耐,马上就到deadline,于是你尝试进行修复,因为AI使用了些你暂时没有使用过的一些知识点和整体的项目架构、代码你都不熟悉,发现天塌了,这么多陌生代码如何查找bug,这不是大海捞针?于是一气之下摔了电脑。。。
抓耳挠腮,熟悉代码
如何快速熟悉AI写的代码的确是一项非常具有挑战性的事情,他会让你头皮发麻。 驾驭AI的本质除了写各种规范文档和skills约束。还有一点非常重要就是让AI写具有可测试、可阅读、可运行的最小原子代码,并以交互的形式不断完善最小原子代码(可以从可运行的角度拆分原子)。AI和你一起熟悉项目、互相学习。本质就是通过交互训练AI。
排查bug,心力交瘁
哎,生活还得继续,就算是大海捞针也得捞,于是你开始消耗10年寿命拼命熬夜看代码,不得已掏出传说已久的二分大法、删除代码大法、瞪眼大法... 第二天凌晨,你还是没排查到bug,于是你灵机一动,让AI尝试修改代码,你看到了AI修改了a文件,你就赶紧排查a文件以及所有与a文件有关的代码,于是你心力交瘁的找到了问题所在。
修复AI写的bug
首先有些bug非常隐蔽、比如C/C++语言的野指针、悬空指针等等,有些难以排查。一个微小漏洞通过级联就会被放大,甚至难以复现。 由于软件缺陷成本放大效应,在AI写完大部分代码之后修复成本非常高昂。一定要将AI写的代码原子化,尽量提前发现问题并及时修改。
AI 润色文章
这篇文章的立意非常深刻,精准地戳中了当前大模型时代下开发者面临的“Vibe Coding(氛围感编程)陷阱”。它不仅是一篇技术反思,更是一篇给所有开发者的“盛世危言”。
为了让文章更有说服力、结构更清晰、读起来更有技术人的共鸣,我为你进行了深度润色。
润色思路:
- 强化金句:保留并升华了你提出的“温柔乡”、“代码直觉是敲出来的”等精辟观点。
- 优化结构:将原有的叙事逻辑梳理得更有层进感(从现象到危机,再到解法)。
- 技术术语专业化:引入了诸如“确定性逻辑”、“缺陷级联效应”、“原子化演进”等行业硬核词汇,提升文章的专业深度。
- 情感共鸣:保留了你原文中接地气的“摔电脑”、“消耗10年寿命”等幽默与痛点,使文章既有深度又不失趣味。
AI时代的“温柔乡”与软件危机
前言:迷失在 Vibe Coding 的温柔乡
科技向来是一把双刃剑。今天,全行业都在争论未来是否会爆发“AI时代的软件危机”。
我的答案是:一定会。软件危机从未消失,它只是在新的技术背景下被无限放大了。而此时此刻,我们正沉溺在 “Vibe Coding(氛围感编程)” 的温柔乡里,对即将到来的风暴浑然不知。
从本质上看,当前大语言模型(LLM)的底层逻辑是概率推理。AI基于你给出的 prompt,以某种概率分布去预测下一个最可能出现的 Token。这意味着两件事:
- AI必然会犯错(即幻觉)。
- AI缺乏真正的确定性逻辑。
因为大模型的上下文窗口和长文本理解力依然存在硬伤,请绝对不要让AI盲目去动你公司的“历史屎山代码” (那不是重构,那是定向爆破)。又因为自然语言具有天然的二义性,AI哪怕“听懂了”你的需求,给出的方案也未必正确,最终的审判权依然在人类手里。
更可怕的是人的退化。如果你彻底依赖AI,习惯了“一切交由AI生成,自己只管一键 Yes”,你的大脑将加速丧失深度思考的能力。你没有学到新的架构设计,没有理解底层的运行机制,最终只能泯然众人。
在AI时代,计算机基础不仅没有贬值,反而变得前所未有的重要。AI写出的代码,其逻辑漏洞往往极其隐蔽。一个细微的逻辑错误可能隐藏在成百上千行的工程中,排查起来如同大海捞针,调试和修复成本呈指数级暴涨。
人类的“代码直觉”是自己一个字母一个字母敲出来的,而不是看AI跳出来的代码“看”出来的。
不论你是资深架构师还是编程新手,只有沉下心来去对抗这种“自动驾驶”的诱惑,才不会被时代淘汰。当AI的使用完全平民化,一个只会对AI说“帮我写个系统”却毫无底层思维的程序员,相较于完全不会编程的普通人,又有什么核心优势呢?
危机:当“零起步项目”走向失控
AI最擅长的场景,看似是从零构建的全新项目。但危险,往往在最顺利的时候悄然埋下:
- 全面托管的代价:项目完全交给AI,直到撞上某个高难度Bug,AI开始疯狂吞噬 Token 却只能原地打转——烂摊子最终还是甩回到了你手里。
- 大海捞针的盲区:面对成百上千行由AI堆砌、自己却从未真正理解的代码,排查Bug如同面对天书。
- 可读性的灾难:AI生成的代码逻辑往往呈现“碎片化”和“拼凑感”,极难形成系统的阅读心智模型。
- 修复的连带崩溃:改动AI写错的某一行,往往会引发意想不到的级联反应,导致整个模块彻底瘫痪。
1. 无法被LLM攻克的硬骨头
普通人使用AI的典型范式是:抛出需求 AI开启 Plan 模式 双方对齐计划 AI开始全自动推演并疯狂输出 人类盲目狂点 Yes。
这种“甩手掌柜”式的开发在工期紧迫时固然能救急,但它是一颗定时炸弹。
假设一个新项目,AI凭借高超的生产力帮你完成了 80% 的工作量,眼看胜利在望、马上就要交付上线。突然,一个致命的Bug出现了(例如:特定高并发场景下的页面严重卡顿,或是内存泄漏)。
你让AI去修,它在疯狂烧掉你几十万 Token 之后,依然在原地兜圈子。此时 Deadline 已经挂在头顶,你急不可耐地亲自下场。然而当你打开工程,面对那些AI为你量身定制的、充斥着陌生知识点和复杂套路的整体架构时,你天塌了。你不知道数据是怎么流转的,不知道生命周期是怎么管理的。在满屏陌生的代码里找Bug,这不是海底捞针,这是在未知的海域捞一颗不存在的针。一气之下,你只想砸了电脑。
2. 抓耳挠腮:如何重夺代码控制权?
面对AI疯狂输出的产物,如何快速建立心智模型、熟悉代码结构,是当前最具挑战的课题。
驾驭AI,绝对不只是写写 System Prompt 或配置 Claude Code 的 Skills 规则那么简单。最硬核的解法,是逼迫AI输出“可测试、可阅读、可运行”的最小原子化单元代码(Atomic Code)。
不能让AI一次性拉出整个庞大的工程,而是要以高频交互、局部演进的形式,去完善每一个小模块。通过这种持续的对齐,AI不仅在帮你写代码,更是在陪你一起“熟悉”这个项目。驾驭AI的本质,是通过高质量的交互去“驯化”AI,而不是被AI的输出洪流所淹没。
3. 心力交瘁的排查之路
然而现实是残酷的,生活还要继续,再深的海也得去捞针。于是,你开始消耗十年的寿命,拼命熬夜去硬啃那些不是你写的代码。
在那个绝望的深夜,你不得不祭出那些传承已久的传统手艺:
- 二分大法:砍掉一半代码,看看Bug还在不在;
- 局部注释大法:把嫌疑模块全部干掉,盲猜问题源头;
- 瞪眼法(肉眼Code Review) :盯着屏幕,指望灵光一现……
直到第二天凌晨,你依然一无所获。绝望中你灵机一动,换了个精确的 Prompt 让AI再去尝试修复一次。这一次,你敏锐地注意到AI修改了 a.cpp 文件。你立刻顺藤摸瓜,封锁 a.cpp 及其所有上游调用链,在心力交瘁的边缘,你终于抓到了那个罪魁祸首。
4. 缺陷放大效应与原子化防御
AI写出的Bug往往极具隐蔽性。特别是在 C/C++ 等底层的系统级语言中,诸如野指针(Wild Pointer)、悬空指针(Dangling Pointer)或边界溢出等问题,在表象上可能毫无动静,却在某个特定的时机通过级联效应(Cascading Effect)被无限放大,且极难复现。
根据软件工程的经典理论,缺陷的修复成本随着生命周期的推移呈指数级放大。在AI时代,由于AI的生成速度极快,这种“缺陷放大效应”被提升到了前所未有的恐怖高度。
要打破这种宿命,唯一的出路就是建立原子化防御机制:
请参考文章 AI时代下,如何做原子代码拆分
- 拒绝长篇大论的单次代码生成;
- 强制要求AI为每个核心函数编写单元测试;
- 将复杂的宏观逻辑拆解为微观的确定性步骤。
在AI把雪球滚大之前,提前在局部发现问题、解决问题。
结语
AI确实是这个时代最温柔的乡,它能让一个新手瞬间产生掌控全局的幻觉。但越是这样的时代,越考验程序员的内核。
别让你的大脑在AI的 Generate 按钮下停止思考。真正优秀的开发者,应当把AI当做加速的引擎,而不是替代思考的假肢。沉下心来,保持对底层的敬畏,去敲那一行行虽然笨拙但真正属于你自己的代码。只有这样,在AI时代的软件危机爆发时,你才是那个手握救生衣的人。
还得是AI,比我有文采!