共计 3949 个字符,预计需要花费 10 分钟才能阅读完成。
AI 编程的自我检查能力
我对这个话题有很深的体会,因为我每天的工作中都在使用 AI 工具。无论是 Cursor、Copilot 还是 Claude,这些我几乎都尝试过,甚至在某个阶段我也感到了一丝焦虑——天哪,这家伙写代码的速度也太惊人了,我会不会失业?不过,经过一年多的使用,我的心态反而平稳了下来。并不是因为 AI 的能力有所下降,而是我终于明白了一个关键点:AI 编写代码与程序员编写代码之间存在本质的区别。让我们深入探讨一下这个问题。
首先,我们来看看 AI 的实际能力。有人说它能够生成完美的程序,这话有一定道理,但也不完全正确。如果要求它写一个待办事项列表、一个简单的 CRUD 接口,或者一个数据处理脚本,确实能够做到快速且高效,甚至比许多初级程序员的代码还要规范。我之前需要开发一个小工具,要将 Excel 中的数据进行清洗并导入数据库,这个任务以前我得花费好几个小时,但现在交给 AI,五分钟就搞定了,而且代码中还包含了注释和异常处理。在这种情况下,AI 的表现确实很出色。但是,这种工作本身的价值并不高。即使没有 AI,花几块钱找个外包也能完成。真正有价值的工作,AI 能否胜任呢?我给你分享几个我亲身经历的例子。
去年,我接手了一个项目,目的是帮助一家传统企业进行数字化转型,实际上就是将他们的线下业务流程转移到线上。虽然需求文档存在,但写得十分混乱,业务方自己都无法解释某些流程的原因,只是知道“一直是这样操作的”。我当时想着偷个懒,把需求文档交给 AI,希望它能够理顺逻辑,结果生成的内容看上去相当专业,流程图也画得美观,但拿去与业务方核对时,十个要点中竟有六个是错误的。为什么会这样呢?因为那些“潜规则”、特殊情况和历史遗留问题在需求文档中根本没有提及,但业务方心里却有完整的认识。AI 并不了解公司的财务与销售之间的复杂关系,因此审批流程被特殊设计,也不清楚某个字段为何取这个奇怪的名称,实际上是十年前系统迁移时的疏忽。这些细节,只有通过现场交流、翻阅历史代码和文档,理解公司的“人情世故”,AI 才能掌握。
还有一次更为离谱的经历。我帮助一个客户开发一个实时数据处理系统,数据量并不算巨大,大约每秒几千条。我让 AI 写了一段代码,运行后发现功能正常,数据处理逻辑也没问题,但内存占用却不断增加,半小时后直接崩溃。检查代码后发现,AI 的处理方式是将所有数据缓存到内存中再进行批处理,逻辑上没有错误,但它没有意识到在这个场景下数据是源源不断流入的,因此它的“批处理”永远无法凑齐。我将其改为流式处理后,问题迎刃而解。但你能说这是 AI 的错误吗?也不能完全如此,因为我在给它的提示中并没有清晰地说明数据流的特性。然而,这种细节在我自己编码时能自然考虑到,因为我经历过太多类似的挑战,而这种经验很难通过简单的提示传达给 AI。你可以说我的提示写得不好,但在实际项目中,根本不可能将所有上下文和潜在问题都写入提示中,这样写提示甚至比写代码还要繁琐。
这引出了一个核心问题:AI 目前最大的局限性并不是它无法写出代码,而在于它无法理解上下文 。它所见的只是你输入的文字,并不清楚这段代码将如何进行维护,也不知道这个接口将由谁来调用,更无法预知系统用户数量是否会突然激增十倍,或者知道隔壁部门的系统将在三个月后与之对接,因此最好现在就留出扩展点。程序员真正的价值,恰恰体现在这些代码以外的内容。我常与人分享, 编写代码对于程序员而言是工作中最简单的部分,真正的挑战在于明白该写什么代码、不该写什么代码,这段代码将带来哪些连锁反应、修改某部分是否会影响其他部分。这些问题,AI 无法解答,至少在目前是无法做到的。
不过,我并不是在盲目贬低 AI。恰恰相反,我认为 AI 对程序员行业的影响是显而易见的,只是这种影响的方式与许多人预想的有所不同。最近我看到一则数据显示,在过去三年中,受到 AI 影响的行业,初级岗位的招聘数量下降了十几个百分点。这一数据与我的直觉非常吻合。因为 AI 最擅长处理的是那些重复性强、模式化程度高的工作,而这些正是初级程序员的主要工作内容。过去,一个团队可能需要三到四个初级程序员来编写模板代码和实现简单功能模块,但现在有了 AI 的协助,可能只需要一两个就足够了,剩下的工作由 AI 来完成。这并不是说 AI 取代了程序员,而是AI 取代了“初级程序员的部分工作量”。
但这里有个矛盾的地方。初级岗位减少了,那么新人如何进入行业呢?过去两年我明显感受到招聘市场的变化,以前招聘初级程序员只需要掌握基本的 CRUD 技能就可以,现在招聘者几乎希望你一进公司就能独立负责一个模块。因为简单的任务都由 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 无关,高级程序员的成长需要时间和项目经验,而 AI 无法加速这一过程。
最后,我想分享一下我自己的感受。使用 AI 一年多以来,我最大的体会是它确实提高了我的工作效率,但这种效率的提升并不是线性的。对于我已经熟悉的领域,AI 能帮我节省大量重复劳动,原本一天的工作,现在可能半天就能完成。然而,对于我不熟悉的领域,AI 的帮助有限,因为它生成的内容我无法判断其正确性,我需要花额外的时间去验证,这个验证过程有时甚至比我自己从头学习还要耗时。因此,对我而言,AI 更像是一个放大器——它扩展了我的优势,却无法弥补我的短板。我擅长的领域,在 AI 的辅助下变得更强;而我不擅长的地方,AI 也无能为力。这可能就是 AI 对程序员行业的真正影响:它并不是取代你,而是拉大了差距。强者愈强,弱者愈弱。
因此,问程序员是否会消失,不如先问自己:我是那个会被 AI 取代的程序员,还是那个能够驾驭 AI 的程序员?这个问题的答案,比 AI 发展的速度更为重要。如果你能够做的事情 AI 也能做到,而且做得更快、更好、更便宜,那么你确实面临风险。但如果你能够完成 AI 做不到的事情,或者你能够将 AI 运用得比其他人更为出色,那么 AI 的发展对你而言是利好,而非利空。未来这个行业是否仍然会称为“程序员”,我无法确定,但“用技术解决问题的人”这一角色必然会持续存在。至于这个角色具体是在编写代码、训练 AI 还是从事其他工作,那就要看技术的发展方向了。不过我不打算换行,尽管这个行业竞争激烈,但我依然觉得它十分有趣。
如果有具体问题,欢迎在评论区交流,我会尽量回复。


AI在简单编程任务的效率确实让人惊叹,但在复杂业务逻辑中却显得无能为力。希望未来能够加强AI对行业特定知识的学习,以提升准确性和适应能力。