原文链接:https://nmn.gl/blog/ai-illiterate-programmers
这是一个我们正在经历而不得不面对的现象,本文值得程序员群体深思
摘要:
本文探讨了 AI 工具对程序员能力的影响及应对策略。作者通过亲身经历发现,过度依赖 AI 会导致程序员的多项基础能力衰退,包括阅读文档、调试代码、深度思考等。针对这一现象,作者提出了"无 AI 日"的实践方案,每周安排一天完全依靠自己编程,以维持核心能力。
文章指出,当前的问题不是 AI 是否会取代程序员,而是程序员是否在"取代自己"。为此,文章建议:
-
在尝试理解问题前不使用 AI;
-
认真理解 AI 提供的解决方案;
-
保持定期不依赖 AI 的编程练习;
-
关注学习模式而非仅解决当前问题。
此外,文章还提供了详细的实践指南,包括如何分级使用 AI、培养提问和验证能力、建立学习反馈循环等。核心观点是将 AI 定位为辅助工具,在提升效率的同时,持续加强对技术本质的理解和掌握。
正文:
前几天,在 ChatGPT 宕机期间,Cursor 也跟着挂了。
我盯着终端上那些让我头疼的红色报错信息,一个 AWS 的错误直勾勾地瞪着我。没有 AI 的帮助,我居然不想去解决它。
编程 12 年后,我竟然在自己的专业领域越来越差劲了。这不是在夸张——这就是当下程序员的真实写照。
1 能力的衰退
这种衰退来得很隐蔽。
首先,我不再看文档了。有 AI 能立即解释,何必费那个劲呢?
然后,我的调试能力受到了打击。没有 AI 的帮助,看到堆栈追踪就觉得无从下手。我甚至不再仔细阅读错误信息,只是复制粘贴。
我变成了一个"人肉剪贴板",仅仅是代码和 AI 之间的一个中转站。
以前,每个错误信息都能教会我一些东西。现在呢?解决方案神奇地出现了,而我什么都没学到。即时获得答案带来的多巴胺快感,取代了真正理解问题的成就感。
深层理解能力是接下来受影响的。还记得那些花好几个小时去理解某个解决方案原理的日子吗?现在,我只是简单地实执行 AI 的建议。如果不管用,就优化一下提示词,然后再问 AI。这是一个越来越依赖的恶性循环。
情绪上的变化也随之而来。以前,解决新问题是编程的乐趣所在。现在,如果 AI 五分钟内给不出解决方案,我就烦躁不安。
最可怕的是什么?我正在开发一个 AI 驱动的开发工具,但我甩不掉一个感觉:我正在助长这个侵蚀我们集体技能的问题。
2 戒断计划
我不是建议采取什么激进措施,比如完全不用 AI——这不现实。相反,我从"无 AI 日"开始:每周一天:
- 完整阅读每条错误信息
- 重新使用真正的调试工具
- 从零开始写代码
- 读源码而不是问 AI
老实说,这感觉很糟糕。我觉得自己变慢了,变笨了,还更容易急躁。
但我也能看到不同:我对代码有了更强的掌控感和主人翁意识,这些在用 AI 的过程中慢慢消失了。而且,我学到的东西多了很多。
3(不舒服的)事实
我们并没有因为 AI 变成十倍效率的开发者。
我们变成了对 AI 十倍依赖的人。这是有本质区别的。
每次让 AI 解决我们本可以自己解决的问题时,我们都在用长期的理解能力换取短期的生产力。为了今天的代码提交,我们牺牲了明天的能力。
我不是说要放弃 AI 工具——这艘船已经起航了。但我们需要一些使用规则。这是我的一些想法:
- 在尝试理解问题之前,不要用 AI
- 阅读并理解所有 AI 建议的解决方案
- 定期不依赖 AI 编程
- 专注于学习模式,而不仅仅是修复眼前的问题
说实话,我觉得我不可能一直严格遵守这些规则。但这是一个开始,而且我强烈建议所有编程新手一定要遵守这些规则。
此时此刻,在某个地方,有个新手正在学习编程。他们永远不会体会到真正靠自己解决问题的成就感。他们永远不会经历通过与 bug 搏斗数小时而获得的深刻理解。
我们正在创造一代能问 AI 正确问题但不能理解答案的开发者。每次 AI 宕机,他们就暴露出越来越无助的一面。目前,AI 还没有强大到可以完全取代程序员,但随着它的进步,情况只会变得更糟。真正的问题不是 AI 是否会取代程序员,而是我们是否在取代自己。
试试只花一天时间不用 AI 编程。结果可能会让你大吃一惊。
4 更新(2月1日)
这篇文章在开发者社区引起了强烈共鸣!我既惊喜又深感谦卑。
这里是一些有趣的数据:
- 一周内浏览量超过125万
- 被拥有70万订阅者的 AI 教育博主 ThePrimeagen 制作了27分钟的 YouTube 视频讲解
- 在 Reddit 的 /r/programming 获得2500个赞,在 /r/webdev 获得1000个赞
- 在 Hacker News 上收获100条评论
我们的行业正在发生变革,讨论这些影响很重要。
希望我的文章能让你思考。如果你喜欢,请分享给你的朋友!
以下内容我让 Claude 基于我和它对该文章的讨论整理而成,以下建议有较大参考价值,因此分享于此:
译者的思考
1 转变思维方式:把AI当作配角而非主角
想象一下编程就像做数学题:使用计算器(AI)可以帮我们快速得到结果,但关键是我们要理解解题思路。因此,在使用AI之前,建议先自己思考:
- 这个问题的核心难点是什么?
- 有哪些可能的解决方案?
- 我现在卡在哪一步?
这样的预思考能帮助我们保持主动思维,而不是被动等待 AI 的答案。
2 建立分级使用策略
可以根据任务的不同性质,制定不同的AI使用策略:
第一类:基础性任务(如简单的CRUD、标准组件开发)
- 可以直接使用 AI 加速开发
- 但要认真阅读 AI 生成的代码,理解其中的设计模式和最佳实践
- 定期回顾这些代码,总结共性的解决方案
第二类:学习性任务(如使用新框架、尝试新技术)
- 先阅读官方文档,形成基本认知
- 使用 AI 解释不理解的概念
- 自己动手实现核心功能,遇到困难时才求助 AI
- 要求AI解释原理,而不是直接给出解决方案
第三类:问题解决类任务(如debug、性能优化)
- 先自己分析日志和错误信息
- 尝试使用调试工具定位问题
- 如果 15-30 分钟内没有进展,再求助 AI
- 要求 AI 解释问题原因,而不是仅仅给出修复代码
3 培养与AI协作的新能力
- 提问能力:
- 学会拆分复杂问题
- 提供足够的上下文信息
- 明确表达你的疑惑点
- 验证能力:
- 不盲目信任 AI 的答案
- 通过单元测试验证代码
- 考虑边界情况和异常处理
- 学习迁移能力:
- 从 AI 的解答中提取通用原则
- 总结解决问题的模式
- 建立自己的知识体系
4 具体实践建议
- 设置"思考时间配额":
- 每个问题至少独立思考 10 分钟
- 记录自己的思考过程
- 与 AI 的答案对比,找出差异
- 建立学习反馈循环:
- 每周末回顾使用 AI 解决的问题
- 总结哪些是真正学会了的
- 哪些还需要加强理解
- 保持动手实践:
- 每周选择 1-2 个小项目完全自己实现
- 定期参与开源项目
- 尝试写技术博客,加深理解
- 培养批判性思维:
- 质疑 AI 给出的方案
- 思考是否有更好的解决方法
- 考虑方案的可维护性和扩展性
记住,AI 是一个强大的工具,但编程的本质是解决问题的思维能力。通过正确的使用策略,我们可以既享受AI带来的效率提升,又持续提升自己的核心竞争力。
最重要的是要建立持续学习的心态:技术在不断发展,我们需要适应与AI协作的新时代,但同时保持对技术本质的追求和理解。这样才能在 AI 时代保持自己的技术竞争力。
对于如何高效利用 AI 的同时又不降低自己的能力,大家有没有其他好的方法和建议?欢迎评论区交流讨论。
如果文章对你有帮助,欢迎点赞、收藏、加关注,您的支持是我创作的最大动力。
想要学习更多 AI 经验和技巧,欢迎加入我的知识星球: AI 实战营
(知识星球号:71196788)