引言:
这是一篇来自 AI is Creating a Generation of Illiterate Programmers的译文,文章在开发者社区引起了很大的共鸣,一周的浏览量超过了 125w 次。有些观点觉得可以借鉴一下,所以转载翻译了一下,欢迎大家讨论。
译文如下:
几天前,在 ChatGPT 宕机期间,Cursor 也无法使用了。
我盯着终端,面对着那些我不愿看到的红色错误信息,一条来自 AWS(亚马逊云服务)的错误信息格外刺眼。没有人工智能的帮助,我甚至都不想去弄清楚问题出在哪里。
从事编程工作 12 年后,不知怎的,我在自己的专业领域反而变得更差了。这可不是夸张,而是软件开发人员面临的新现实。
能力衰退
这种变化是悄然发生的。
起初,我不再阅读文档。既然人工智能能瞬间解释清楚,何必费那个劲呢?
接着,我的调试技能受到了影响。如今,没有人工智能的帮助,堆栈跟踪(stack traces)让我望而却步。我甚至都不再仔细阅读错误信息,只是简单地复制粘贴。我变成了一个人肉剪贴板,仅仅是 我的代码 和 大语言模型(LLM) 之间的 传声筒 。
以前,每一条错误信息都能让我学到新东西。现在呢?解决方案神奇地出现,而我却一无所获。即时得到答案带来的多巴胺刺激,取代了真正理解问题后的满足感。
深度理解能力也受到了影响。还记得曾经花好几个小时去理解一个解决方案为何有效的那种钻研劲儿吗?现在,我只是简单地按照人工智能的建议去做。如果行不通,我就优化一下问题描述,然后再去问人工智能。这成了一个越来越依赖的循环。
情绪上也发生了变化。以前,解决新问题是编程乐趣的一部分。现在,如果人工智能在 5 分钟内没有给出解决方案,我就会感到烦躁。
最可怕的是,我正在开发一款基于人工智能的开发工具,但我却无法摆脱一种感觉:我正在助长这个侵蚀我们集体编程技能的问题。
恢复计划
我并不建议采取完全不用人工智能这种极端做法,这不现实。相反,我打算从 “无人工智能日” 开始。每周设定一天:
- 完整阅读每一条错误信息;
- 重新使用真正的调试工具;
- 从头开始编写代码;
- 阅读源代码,而不是向人工智能求助。
说实话,这体验并不好。我感觉自己速度变慢了,变笨了,还更容易受挫。
但我也看到了一些变化,我和自己的代码有了更强的连接感,也找回了那种随着对人工智能的依赖而逐渐消失的掌控感。
而且,我学到了更多东西。
(令人不安的)真相
有了人工智能,我们并没有成为 10 倍效率的开发者,而是对人工智能产生了 10 倍的依赖。这两者有着本质的区别。
每次让人工智能解决我们本可以自己解决的问题时,我们都是在用长期的理解能力去换取短期的生产力。我们为了今天的代码提交进行优化,却牺牲了未来解决问题的能力。
我并不是说我们要抛弃人工智能工具,这已经不现实了。但我们需要制定使用规则。以下是我的一些想法:
- 对于自己还没有尝试理解的问题,不要使用人工智能;
- 阅读并理解人工智能给出的所有解决方案;
- 定期进行不借助人工智能的编程;
- 专注于学习编程模式,而不只是解决眼前的问题。
说实话,我觉得自己也无法一直遵守这些规则。但这是一个开始,而且我坚信,任何刚开始学习编程的人都绝对应该遵守这些规则。
此刻,在某个地方,有一个新手程序员正在学习编程。他们永远不会知道真正靠自己解决问题的那种满足感,也永远不会体验到花几个小时攻克一个漏洞所带来的深度理解。
我们正在造就一代这样的开发者:他们能向人工智能提出正确的问题,却无法理解答案。每次人工智能出现故障,他们就显得越来越无助。目前,人工智能还不足以完全取代程序员,但随着它的不断改进,情况只会变得更糟。真正的问题不是人工智能是否会取代程序员,而是我们是否正在自我取代。
TODO: 试着一天不使用人工智能编程吧,结果可能会让你大吃一惊。
思考:
文中有一句话突然刺到我了:”有了人工智能,我们并没有成为 10 倍效率的开发者,而是对人工智能产生了 10 倍的依赖。这两者有着本质的区别。”
其实这个也不单单是指工程师,所有的行业都会遇到文中类似的场景。
我们不能过分的依赖AI,AI 应该是帮助我们成长的,帮助我们变强,而不是让我们变的更加依赖 AI。