写在前面:
今天读到一篇关于 AI 应用的文章,深有共鸣。如今,AI 已深度融入我的开发工作流。当程序报错且堆栈信息不够直观时,我的第一反应不再是通过 Debug 或查阅文档来逐步理解和解决问题,而是直接将上下文复制粘贴给 AI,等待它给出答案。
类似的情况也发生在学习新 SDK 方面。过去,我可能会花费数小时阅读文档,逐步尝试并理解其原理,而现在,AI 只需几秒钟就能提供完整的接入方案。渐渐地,我越来越依赖 AI 解决问题,却在无形中忽略了对问题本身的深入理解。
几天前,ChatGPT 罢工期间,Cursor 停机了。
我注视着 Terminal 窗口上那些令我讨厌的红色错误信息。这是一条来自 AWS 的错误信息,我没有动力在不借助 AI 的情况下去弄清楚它。
从某种程度上来说,经过 12 年的编程,我反而越来越不擅长自己的技能了。这并不是夸大其词,而是软件开发人员必须要面临的新困境。
衰变
它正在悄然潜入我的生活。
首先,我停止阅读文档。当 AI 可以立即解释的时候,为什么还要费时费力去阅读长篇文档呢?
然后,进一步影响了我的 Debug 技能。在没有 AI 的情况下,那些异常的堆栈信息似乎变得难以理解错误的原因,我变得不再去理解这些错误信息,而是将它们复制粘贴给 AI。
现在,我已经成了代码与 LLM 之间的人形剪贴板。
回顾以前,每个错误信息都曾教会我很多。现在呢?这些错误的解决方案在借助 AI 的情况下,如同魔法一样,能够快速的出现,但是我却不能从中学到任何东西。这些及时答案带来的多巴胺刺激已经取代了真正理解所代码的满足感
接下来受影响的事情是,对一个技术点的深入理解。还记得以前,我会花费几个小时来理解这个方案为什么起作用吗?现在,我只需要按照 AI 给的方案去实施,如果它不起作用,我就调整上下文,再次询问,直到某个方案变得合适,这种获取解决方案的方式带来的及时反馈是过往花费的几个小时无法比拟的。这是一个逐渐依赖的恶性循环。
最后是情绪上的变化。以前,解决新问题是编程快乐的一部分。现在,如果人工智能在 5 分钟内没有给出答案,我就会感到沮丧。
最可怕的是什么?我正在开发一款 AI 动力开发工具,但我无法摆脱这种感觉,我正在助长正在侵蚀我们共同技能的问题。
康复计划
我并不建议完全摒弃 AI 之类的激进做法——那并不现实。相反,我们可以尝试每周一天的”无 AI 日“,在这一天里,我遵循如下规则:
- 彻底阅读每个错误消息
- 再次使用实际的调试器
- 从头开始编写代码
- 阅读源代码而不是询问人工智能
坦白说,相较于使用 AI,这种体验更糟糕。我感觉处理事情变得更慢也跟困难,同时也更容易沮丧。
但我也能看到区别。我逐渐找回了在使用 AI 过程中慢慢丢失的感觉,我感到与我的代码有更强烈的联系和掌控感。而且,我学到了更多。
令人不安的真相
我们无法通过 AI 成为 10 倍开发者。
我们对 AI 的依赖程度将增加 10 倍。这是有区别的。
每次让 AI 解决一个我们本来可以自己解决的问题,我们都在以长期理解为代价换取短期生产力。我们是为了今天的成果而牺牲了明天的能力。
我并不是在建议我们放弃 AI 工具——那样我们会被时代抛弃。但我们需要制定使用规则。以下是我提出的一些想法:
- 首先要在使用 AI 之前先理解问题
- 阅读并理解所有 AI 建议的解决方案
- 定期在没有 AI 辅助的情况下进行编码
- 专注于学习模式,而不仅仅是解决眼前的问题
坦白说,我不认为我能一直遵守这些规则。但这是一个开始,我坚信任何新手程序员都应该绝对遵守所有这些规则。
此时此刻,在某个地方,一位新手程序员正在学习编程。他们永远不会知道完全靠自己解决问题的满足感。他们永远不会经历因为与 bug 纠缠数小时带来的深刻理解。
我们正在培养一代开发人员,他们能向 AI 提出正确的问题,但无法理解答案。每次 AI 失效时,他们会暴露出越来越无助的现象。目前,AI 还不足以完全取代程序员,但随着 AI 的进步,这种情况可能会加剧。真正的问题不是 AI 是否会取代程序员,而是我们是否正在取代自己。
试着不使用人工智能进行编码,只是试一天。结果可能会让你惊讶。