AI 让所有人都是程序员,程序员要被替代了吗?

这两年 AI 发展迅猛,去年最流行的话是:“替代你的不是 AI,而是会使用 AI 的人”,一度引起很多人对 AI 的焦虑。今年 AI 编程领域发展迅猛,AI 编程工具 Devin 成立不久就拿了 1.75 亿美元,估值 20 亿美元,最近 AI 编辑器 Cursor 的各种视频,比如 8 岁女孩借助 Cursor 完成一个聊天机器人网页。于是今年开始很多人预言程序员要被 AI 代替,英伟达 CEO 黄仁勋更是提到:“你的孩子不需要学编程,AI 让所有人都是程序员!”

那么这些眼花缭乱的 AI 资讯中,哪些是炒作,哪些是真正的发展趋势呢?程序员要被替代了吗?

很多时候,数据可以帮我们透过迷雾,看出背后的真相,结合 CSDN 这份《2024 中国开发者调查报告》上的数据,以及我这两年对各种 AI 技术和产品的学习使用体会,来简单分析一下。

有 69% 的开发者表示他们正在使用 AI 工具。另外 25% 的开发者虽然目前没有使用 AI 工具,但他们计划在未来使用它。

AI 的迅猛发展一方面造成了很多人的焦虑,另一方面也是促使大家学习 AI 的动力,毕竟学习了解 AI、借助 AI 提升效率才是真正缓解焦虑症的良方。已经有约 7 成开发者在日常工作中使用 AI,另外的也在计划未来使用 AI。

在使用 AI 工具的开发者中,86% 开发者在工作中至少一定程度上依赖于 AI 编程辅助工具。

AI 编程辅助工具正在逐步成为开发人员的标配。就像这些年大家已经习惯了使用 VSCode 里面的语法智能提示,让我们不需要去查询编程语言的语法手册,也不需要去查询某个类下面有哪些属性和方法,只需要依赖编辑器中的提示,直接快速选择对应的接口,甚至还可以查阅注释文档,写错了有错误提示。

  • 38% 的开发者在体验之后,觉得 AI 编码辅助工具可以节省 20%-40% 的工作量。

借助 AI 辅助编程工具,智能提示不再局限于语法级别,而是模块甚至于项目代码级别,当你输入要实现模块的注释,AI 会基于注释内容和项目代码帮助你生成整个模块部分甚至完整代码的提示,大部分时候你只要 Tab 键选择即可。除了智能提示,还可以上传截图,让 AI 基于截图生成一段 UI 代码,大部分时候可以生成不错的代码。或者项目代码遇到 Bug 或者运行时错误,将错误代码和问题描述给 AI,有时候能帮助你快速定位到问题甚至直接提供修复代码。这节约了我们去搜索引擎找答案的时间。

  • 44% 的开发者认为,AI 编程辅助工具显著提升了代码的质量。

AI 编程用到的大语言模型,在预训练阶段,会学习整个互联网上的所有公开内容包括开源代码,在微调阶段,还会使用高质量的代码进行微调,以借助代码的良好结构和逻辑提升大语言模型的能力,这也保证了模型在生成代码时,在生成小的模块代码时,可以借鉴到学习了的海量优质代码,所以很多时候能生成比普通程序员质量更高的代码。另外 AI 还可以快速的生成单元测试代码,有助了整体代码质量。

善用 AI 能实实在在提升效率,那么它是否会在现在或者不远的将来替代程序员呢?

  • 36% 的开发者反馈,在某些情况下,生成的代码仍需要开发人员进行返工,以及 32% 的开发者反馈它也会带来重复代码

AI 生成的代码,并不能保证能运行没有 Bug,生成代码的结果很大部分取决于你写的提示词和 AI 自身的局限性。当你和 AI 交互时,很多时候制约你的不是 AI 的能力,而是自己的表达能力,如果你不能清晰的描述自己想要的代码是什么样子的,那么再厉害的 AI 也无法生成你想要的代码,这无可避免的会导致生成的结果要反复返工调整,直到生成想要的代码。

另外由于 AI 辅助编码的便利性,如果生成前不加思考,生成后不检查,只是盲目的接受 AI 的生成结果,那么必然会产生很多重复的代码和不可知的 Bug。

  • 58% 开发者认为这些工具无法替代人类程序员的角色。

现在不懂软件开发的人对 AI 是普遍乐观的,认为 AI 很快就要替代程序员了,而程序员群体作为最了解开发最常使用 AI 的群体怎么反而大多数认为这些工具无法替代人类程序员的角色呢?

**首先现在的成功案例,都是偏向原型性质的、简单的产品,离真正的复杂商用产品还是有一段距离。**原型产品的特点就是不需要考虑后期维护,不需要考虑各种使用场景,满足特定场景的演示、验证需求即可。但程序员们日常实施的项目,需要在保障各种不同使用场景下的稳定运行,以及对复杂庞大的代码库长期维护。

**然后 AI 目前还只能生成代码,而在软件工程中,编码只是软件生命周期的一部分。**程序员的日常工作,还有很多编码之外的工作,比如需要和产品经理反复沟通确认需求,基于需求去设计合理的架构,将复杂的架构拆分成小的模块并保证模块之间可以正常通信,需要对结果进行反复测试,发现 Bug 要去跟踪和修复,开发完成还要部署到线上去运行。

**最后受限于 AI 的上下文窗口长度,AI 还不具备大项目的代码开发和管理能力。**当前 AI 都有上下文窗口长度限制,也就是说每次和 AI 的交互,内容不能太长,也不能生成太长的代码,这就意味着你无法把整个代码库都扔给 AI,只能是每次选取一部分代码,加上提示词一起交给 AI 生成,所以在让 AI 生成代码时,仍然要程序员去把复杂的需求拆分成简单的模块,仍然需要手动去选取最相关的代码供 AI 参考。

所以现在说 AI 能替代程序员还为时尚早,但是善于使用 AI 的程序员一定能大幅提升效率,甚至于不懂写程序的人借助 AI 的帮助作出原型类产品也是完全有可能的。除此之外,现在的 AI 本身是一个极好的知识库,通过和 AI 的交互,我们还可以让 AI 成为我们的导师,帮助我们学习各种开发上知识,解答开发中遇到的难题,快速提升自己。