【导读】
一篇题为「New Junior Developers Can’t Actually Code」的
博文炸开了锅。
资深码农Namanyay对AI工具在软件开发中的广泛应用表达了忧虑——AI正在让新一代开发者跳过基础知识的学习,沦为「复制粘贴(CV)工程师」。
这篇文章迅速蹿红,引发了包括马斯克在内的众多业内大佬的热议。
AI辅助编程的时代已经到来,代码生成工具触手可及。
这本应是开发效率的巨大飞跃,但一个令人不安的问题却浮出水面:我们是否正在培养出一批只会「复制粘贴」,却对代码底层逻辑一知半解的程序员?
当便捷的AI工具取代了艰苦的学习和思考过程,我们是否在无意中扼杀了真正的技术创新和深度理解?
几天前,著名软件开发者Namanyay发表了一篇名为「New Junior Developers Can’t Actually Code」(新入门的开发者根本不会写代码)的博客,表达了对现在AI加持下的软件开发模式的担忧。
文章发表后爆火!很快就有了10万+观看,100+条评论。
网友Deedy评论道:「作者指出,AI正在让程序员失去对事物的理解能力。」他评价Namanyay的文章是精彩的博客,「这和互联网不一样,互联网只是替代了查找事实的过程,还会提供解释;而AI却替代了所有的思考过程。」
马斯克似乎对Namanyay的观点不太买账,在帖子下面评论道:「现在的人,离了电子地图和GPS,在城市里连路都找不到」。
不过,很快就遭到了网友的反驳:「如果谷歌地图每用五次就产生一次幻觉,记住如何到达目的地可能就变得非常重要了!」
那么Namanyay文章中究竟表达了什么样的观点呢?以下是Namanyay文章的核心内容。
有件事一直困扰着我,我觉得有必要和新开发者们谈谈。
我们正处于软件开发的一个奇特的转折点。我遇到的每个初级开发人员都在24/7不间断地运行着Copilot、Claude或GPT。他们交付代码的速度比以往任何时候都快。
但当我深入了解他们对所交付内容的理解时?情况就变得令人担忧了。
没错,代码是能运行,但是问他们为什么要这样而不是那样实现?则是鸦雀无声。当被问到边界情况时?更是一脸茫然。
过去通过艰难解决问题而获得的基础知识就这样……消失了。
我们正在用快速解决方案换取深度理解,虽然当下感觉很好,但我们将来必定要为此付出代价。
回想那些需要真正动脑思考的日子,我最近意识到,现在有一整代新程序员甚至不知道StackOverflow是什么。
在「Claude」还不是聊天机器人,而是信息熵(information entropy)领域开创者的时候,调试编程问题的方式是完全不同的。
首先在Google上搜索。然后,期待着某个遇到相似问题的苦主曾经发帖求助。
如果运气好,你就能在一个叫「Stack Overflow」的网站上找到一个来自某位经验丰富的技术大佬详细的、深思熟虑的(通常带点居高临下的)答案。
这是我12年前提出的一个问题,看看Nathan Wall的最佳回答(他已经赢得了超过10,000分的高分,而且显然从2015年起就当上了CTO):
你能想象有人会写出这么详细的回答吗?完全靠手打,没有AI辅助,而且还是免费分享。
我最初的问题当然得到了彻底的解答,但他并没有就此停笔。我学到了很多新知识。有些我甚至不知道存在,还有些是我本不想知道但现在却永远刻在了我的脑海里。
这是你提问时能遇到的最理想情况。如果你遇到特别棘手的问题,却找不到现成的答案,那就只能认栽了。
现在的初级开发人员也太轻松了。他们只需要去chat.com复制粘贴看到的错误信息,更懒的人甚至不愿花30秒切换到浏览器窗口,直接用一个工具就把所有事情搞定了。
这确实方便又快捷。
但是,StackOverflow仍然有一个无可替代的优势:阅读经验丰富的开发者关于你遇到问题的讨论,是最好的学习方式。
这张图表很好地解释了他的观点:
AI能给你答案,但获得的知识往往很浅薄。
在StackOverflow上,你必须阅读多个专家的讨论才能获得完整的认识。这样虽然更慢,但你最终不仅知道什么可行,还明白为什么可行。
想想你认识的每个优秀开发者,他们是通过复制解决方案变得优秀的吗?
显然不是——他们是通过深入理解系统和领会其他开发者的思维过程才达到这个水平的。而这正是我们正在逐渐失去的东西。
我不是想做那种抱怨「现在的年轻人」的老古董。我每天都在使用AI工具,我甚至正在开发一个AI产品。但我们需要诚实地面对,为了这种便利我们正在付出什么样的代价。
我一直在尝试各种方法来应对这个问题(因为让我们面对现实,AI注定会继续存在)。
以下是一些确实有效的方法:
-
以学习的心态使用AI
。当它给你答案时,多问几个为什么。没错,这样会花更多时间,但这正是重点所在。
-
找到你的技术社群
。可以是Reddit、Discord、Mastodon——只要高手们在那里聚集。那里才有真正的技术讨论,那些能让你恍然大悟的观点交流。
-
改变代码审查的方式
。不要只检查代码是否可用,要和团队展开深入对话。了解他们考虑过哪些其他方案?为什么最终选择这个方案?让理解思路和最终结果同等重要。
-
时不时从零开始构建项目
。是的,AI可以为你生成认证系统。但不妨先试着自己动手做一个,你写的代码可能不够优雅,但你会理解每一行代码的含义。这种知识会逐渐积累。