最近,AI 被说成让新手程序员变得更糟,但根据我20年的经验,新手程序员一直很难写出好代码。关键是“好”。这不是什么新问题,AI只是把这一情况更加突显出来了。
几十年来,初出茅庐的开发者一直依赖Stack Overflow、在线教程和乐于助人的资深同事来在日常工作中得到指导。像Copilot这样的AI工具并不是在替代深度学习的过程——它们只是在简化一直以来学习过程中的一部分内容。
在AI出现前当我刚开始编程时,Stack Overflow 还没出现。那时候,我们有重达 10-20 公斤的教科书,一叠叠难以辨认的手写笔记,以及论坛,要在上面得到一个答案可能需要好几天。
在2003年,就这样做。大体上,我们确实做到了这一点。你不可能一夜之间成为世界上顶尖的程序员,但你会学习到算法、数据结构和操作系统,以及一些SQL知识。
然后Stack Overflow出现了——你知道发生了什么没有?它面临着与今天的人工智能工具相同的审视。有人认为开发人员变懒了,因为他们太依赖Stack Overflow。一些大学禁止学生使用它。人们担心它会让工程师变得不那么好,因为他们不需要费劲找答案了。
强制性的劳动锻炼是否让开发者变得更好?
可能吧。这个真的说不准。说实话,我的感觉可能是,我对于这个可能有点主观,无法代表所有开发者。
但是,我要说,即使有所有这些“纯正”的学习,那时候我还是个糟糕的初学者。
和我一起工作的人没有人对此感到惊讶或怨恨。因为学习本来就是这样进行的。
公司一般不会把一个价值2000万美元的项目交给一个连设置开发环境都有困难的新同事。这需要时间,也需要大量的信任。
一旦我进入职场,StackOverflow 随处可见。更让人感到欣慰的是,我们不必去读那些十年前用另一种语言写的论坛帖子,来了解如何正确使用一个函数。
每天阅读 StackOverflow 是否让我成为一个更好的开发者?还是因为我依赖了这些带主观性的答案,反而变得更差了?说实话,我不知道。也许答案是一点都有。
但事实是,我通常只是复制粘贴我找到的答案并进行修改,直到它适用于我的需求情况。周围的其他开发人员也大多如此。
我们并不是为了在一天结束时掌握一种编程语言。我们的目标是完成这一周的待办事项,并希望我们做得足够好,能够提供一些价值。
高级工程师的角色在我职业生涯的头五年里,我非常依赖资深开发者的指导。不仅因为他们比我更擅长写代码——的确如此——而且因为这只是问题的一部分。
他们经验丰富。他们做过我在大学或任何教程中从未接触过的代码方面的工作。当真正开始做我的工作时,我就是缺少这些东西。
那一次我还记得,为了迁移一个网站,我不得不远程登录Linux服务器,并配置了一些不太常见的网络参数。
我在职已经两年了。我从未远程登录过任何东西。经理提到的缩略词对我来说就像在听一种古代语言。我唯一能做的就是说声“行!”
真是太好了,一個資深開發者坐在我後面不到兩英尺。看到我在椅子上熬了兩個小時,汗如雨下,他就一步步教我流程。
这种模式在我早年间经常出现。
甚至有些日子,高优先级的任务只在几个小时内就要完成,我的首席开发人员会坐在椅子上,飞快地敲打着键盘,同时指导每一步。而我坐在那里一头雾水,只盼着快点到中午。
总而言之,无论是StackOverflow、ChatGPT、Copilot,还是2001年的论坛帖子,都是一样的工具。它们都是帮你搞定任务的工具。
真正的学习和体验其实来自于不断的重复,以及坐在你旁边的人,他们做过的你从未做过的事情,并且很乐意花时间指导你。
AI是更多地带来伤害还是更多地带来帮助我觉得这个问题的答案完全取决于这个开发者及其目标。
许多人只想尽可能地做一些酷炫的事情,同时拿到一份工资,并不需要记住每一种搜索算法、数据结构或加密密码。
这也没问题。
实际上,AI 并不会让差的开发者变得更糟——它只会暴露原有的差距。一个优秀的开发者会把 AI 当作工具来加速学习,自动化繁琐的任务,提升效率。而一个差的开发者则会盲目复制粘贴,就像他们平时做的那样,不管是从 AI 还是从 Stack Overflow。
两者的区别在哪里呢?经验、好奇心、乐于学习。
AI不会取代实际工作经验。它不会教你某样东西为什么会起作用,也不会在你凌晨2点遇到棘手的调试问题时帮你解决。它肯定不会取代坐在你旁边的资深工程师,现场教你事情是如何完成的。
你觉得人工智能是帮了忙还是添了乱呢?
那不是工具的问题,而是要看开发者。
最初发布于 https://www.thatsoftwaredude.com,2025年2月24日。