资深开发教育工作者分享 AI 普及下如何平衡创新与基础教学的思考。
作为一个在过去十年中带领开发者关系团队、在编程训练营授课,并担任专业软件工程师的人,我亲眼见证了生成式 AI 工具的崛起给编程教育带来的巨大变化。我想分享一下自己对这个新时代应当如何教授编程的看法。
编程教学正在发生非常、非常迅速的变化。但我认为,基础知识几乎比以往任何时候都更加重要。尽管 GitHub Copilot、Amazon Q Developer 和 Cursor 等 AI 编程助手正在兴起,理解核心编程原理仍然至关重要。
原因很简单:你依然不应该把自己无法理解的代码提交到生产环境。生成式 AI 固然可以加快开发速度,但软件工程师必须能够解释自己的代码、识别安全问题,并对代码进行长期维护。
“Vibe coding”正在社交媒体上风靡,而我很喜欢它。你只需要编写 prompt 来构建应用,整个过程中完全不用理会代码。
我认为,其中最令人兴奋的一点,是它让非技术人员也有能力成为开发者,并对开发产生兴趣。他们可以非常快地实现从零到一的突破。这让编程变得更加普及,使新手无需先掌握所有编程基础,就能构建 three.js 游戏之类的项目。
以前我教别人编程时,他们上的第一节课通常是使用 CodePen 构建简单的 HTML 和 CSS 网站。这样一来,他们可以很快取得成果,并通过视觉反馈看到自己正在创建的东西。Vibe coding 则把这种体验提升到了一个全新的层次。
然而,当 AI 生成的代码进入生产环境时,风险也会随之出现:
安全漏洞
不同代际使用这些工具的方式存在明显差异。对于学生和应届毕业生群体来说,这些 Gen AI 工具已经成为他们思考和构建软件的方式。它们从根本上融入了他们的开发过程,而这与资深开发者的开发方式截然不同。
经验丰富的开发者可能很难改变自己的 devtools 配置和使用习惯(比如我就离不开自己的 CLI!),而新开发者从第一天开始就把这些工具整合进了工作流,从而形成了一种更加自然的结对编程体验。
生成式 AI 尤其擅长完成传统 CS 课程经常忽略的任务:
测试生成:GenAI 非常擅长为你的代码库生成测试,而编程课程很少教授这项内容。
代码文档与解释:真正的挑战不只是编写新代码,还包括理解前任开发者留下的代码。对于初级工程师来说,这可能非常令人畏惧。GenAI 让这件事变得容易了。
编程课程必须不断演进,才能让学生为这一新的现实做好准备。我认为,课程一方面仍然应该教授基础知识,确保人们拥有依靠这些知识取得成功的坚实基础……另一方面,也要确保人们能够充分适应当下的就业市场——在这个市场里,借助 Gen AI 工具可以更快地构建大量内容。
这意味着既要教授传统的编程原理,也要教授有效的 prompt engineering、与 AI 结对程序员协作等新技能。
我的答案并不是简单的是或否。五年后的开发工作还会和现在一样吗?甚至今年晚些时候还会一样吗?当然不会。面对当前的就业市场,训练营还是合适的学习方式吗?不是。
然而,编程从根本上说是一种解决问题的活动。尽管计算器和计算机可以轻松解决人类能够解决的任何数学问题,我们仍然要求学生学习数学。编程依然是一项值得学习的技能,而且我们还没有发展到无需人工干预、严格的代码审查,以及对安全性、可维护性和可扩展性的关注,就能将代码推向生产环境的阶段。
编程教育正站在十字路口。未来的道路,是将传统基础知识与 AI 工具结合起来,比如 Claude 刚刚推出的全新教育模式。最有效的方法,是在教授核心原理的同时,帮助学生做好负责任地使用 AI 的准备。随着这些技术不断发展,我们培养下一代软件工程师的方法也会随之演进。
未来并不是要在人类知识和 AI 辅助之间二选一,而是要充分利用两者,培养出更优秀的开发者,让他们构建出更好的软件。通过同时拥抱二者,我们可以帮助更多人成为开发者,并借助代码不断拓展可能性的边界。
部分评论可能仅对已登录的访客可见。请登录以查看所有评论。
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。