Linguista

「吴恩达CS230」AI辅助编码时代下的新型生产力与职业发展

内容概述

概述
Andrew Ng在CS230课程中梳理了AI辅助编码工具(如Copilot、Gemini CLI等)对编程和开发者职业发展的深远影响。他强调:AI正在极大改变编程方式,个体生产力显著提升,快速原型和创新变得前所未有的高效。新一代开发者不仅要精通AI工具,更要打牢计算机基础。随着工作要求变化,纯靠传统编程经验难以满足行业需求,精通AI辅助和新技术的工程师成为企业核心。课程鼓励所有人跨专业提升AI能力,迎接更高生产力与创新的未来。


主题梳理

一、AI辅助编码革新编程模式与生产力边界

二、AI加速创新与反馈迭代循环

三、AI辅助与编程基础的协同新范式

四、面向未来的跨界融合与AI职业新动能

五、AI领域现阶段的核心技能体系与新兴工具


框架与心智模型(Framework & Mindset)

1. 快速原型—负责任创新模式

2. AI新时代下的技能升级与择业观

3. 以“创造者”视角重新定义未来


基本信息


内容实录:AI领域的趋势与洞察

这门课的好处之一是,Kian和我可以偶尔与大家分享我们在更广阔的世界里看到的一些东西。嘿,顺便问一下,你们中有多少人使用专门的AI辅助编码工具,比如Copilot、Cursor、Gemini CLI、Codex或者Windsurf?太棒了,几乎是所有人,但不是全部。有意思。

是的,编程领域发生的最激动人心的事情之一就是AI辅助编码。我个人觉得,我希望自己再也不用回到手动编码的时代了。这很有趣,我经常在周末去咖啡馆工作。几周前,我坐在一家咖啡馆里,旁边坐着一个正在手动编码的人,这看起来太奇怪了。我便问他(当然是以一种尊重的方式):“你在做什么?”原来他在做另一所大学的作业,要求手动编码。

我发现一个令人兴奋的事情是,个体程序员的生产力比以往任何时候都要高得多。我想和大家分享一下我的观察。我发现,在我所做的软件工作中,我可能会将其分为两类:一是构建快速粗糙的原型(quick and dirty prototypes),看看某个想法是否可行;二是有时我需要编写生产级别、企业级别的、健壮可靠且可扩展的软件。我发现,AI辅助编码在构建快速粗糙原型方面带来的改变是最大的。

而对于生产级别的软件,我的一个合作者今天早上就给我发了一条Slack消息说,他用的某个自动化编程工具(我就不说是哪个了)出了一个数据库迁移错误,把所有的数据库记录都清空了——幸运的是,这只是一个有五个用户的测试应用。但这种事确实发生了。所以我发现,对于生产级软件,我使用这些自动化工具时会更加小心。

然而,对于构建快速粗糙的原型,只要你不是以一种不负责任的方式发布软件,这些原型的依赖关系要少得多。你不需要与旧有的数据基础设施集成。接下来我要说的话可能听起来有点不该说,但我还是要说:我发现,当我运行代码时,人们常常担心软件的安全性、可靠性或保密性。我经常对我的团队说,如果你正在构建一个只在你自己的笔记本电脑上运行,并且不使用任何敏感信息的原型,那么除非你打算恶意攻击自己的电脑,否则安全要求可以降低。因此我发现,在构建快速粗糙原型时,拥有一个可以让你在其中快速操作的沙盒环境,意味着你可以更快地做出许多决策,而不用过多担心可扩展性、安全性或可靠性——只要这个沙盒环境能确保这些东西不会泄露出去,或造成安全漏洞。这正是让我们能够行动得更快的部分原因。

我发现,由于原型制作的速度加快了,只要你能以负责任的方式去追求创新想法,我的团队会越来越多地尝试20件事,然后看哪一件能成功。我知道很多团队在抱怨,许多概念验证(proof of concepts)项目最终都未能投入生产。你尝试了一些东西,但它行不通。有些团队对此感到焦虑。我其实有不同的看法。我认为,如果一个概念验证的成本足够低,那么就算你需要做20个才能找到那一两个真正有效的东西,又有什么关系呢?

在这门课中你会听到,无论是在构建机器学习应用还是很多软件应用时,你通常都不知道结果会怎样。这有一个特定的原因:机器学习算法的输出,既取决于你写的代码,也取决于你用来训练的数据。虽然你百分之百控制代码,但你通常并不真正知道,这个世界给你的那些奇妙而古怪的数据里到底有什么。

例如,我在多家公司、多种背景下都曾深入研究过语音识别。即使是现在,当我做语音识别时,我有时仍然会感到惊讶,比如,“哦,这份数据里带有某种口音的人比我想象的要多”,或者“人们说话的速度不知何故变快了”,或者“天哪,当人们在车里使用时,背景噪音真大”。即使我多次从事语音识别工作,最近一个应用中,背景中说话人的数量也让我感到惊讶。他们先跟我们说话,然后又去跟另一个人说话,再回来跟我们说,这让我们很困惑。

我发现,世界给我们的数据常常是奇妙而古怪的。只有通过构建一个系统,你才能开始发现数据中的这些东西,从而取得进展。对于很多软件应用也是如此,除了机器学习应用之外,我最终需要发现的很多东西是:用户到底想要什么?我百分之百控制我的代码,我可以写任何我想要的代码。但我无法控制你的用户会对你的系统作何反应。我发现,我们快速构建粗糙原型的能力,既能帮助我们发现数据中的内容,也能让我们接触用户看看他们是否喜欢,这使我们能够驱动比以往任何时候都更快的反馈循环,从而帮助我们构建越来越有价值的软件。

我知道,“快速行动,打破常规”(move fast and break things)这句口号名声不太好,因为它确实打破了东西。我发现有些团队从中得出的结论是,我们不应该行动得快。但我认为这是个错误。我通常对我的团队说的是:“快速行动并负责任”(move fast and be responsible)。尽管有各种关于AI导致人类灭绝风险或者其他在我看来有些奇怪的炒作,但我发现,当团队行动得非常快时,我们就能以一种负责任的方式实施、测试,并更快地发现问题并解决它们。我发现,我所知道的许多最负责任的团队,那些能够真正快速把事情做成的团队,往往是行动最快的团队之一。因为正是这种执行速度,让你最终能够实现它,弄清楚你的数据里有什么,弄清楚你的用户想要什么,这也是找出潜在问题并确保它们不会真正发生的最佳方式。

我假设这门课里的每个人都会编程。如果你还没学过编程,你可能暂时还不想上这门课。但我发现,有些人,包括非常高层的商业领袖,建议别人不要学编程,理由是AI会把它自动化。我想和大家分享这一点,不是因为我认为你需要学编程,而是因为我希望你们能帮我把这个信息传播出去:去告诉你们在其他院系的所有朋友,“不要学编程”这个建议,我们回头看时,会发现这是有史以来最糟糕的职业建议之一。

原因是,当编程变得更容易时,应该有更多的人去做,而不是更少。当人类从打孔卡片转向键盘和终端时,编程变得更容易了,于是更多的人学习了编程。当我们从汇编语言转向当时现代的编程语言时,编程变得更容易了,更多的人学习了编程。我回头查了关于COBOL——一种非常老派的编程语言——被发明时的文章,当时真的有人说:“哇,现在我们有了COBOL编程语言,编程太简单了,谁还需要程序员呢?”显然,事实恰恰相反。从文本编辑器到集成开发环境(IDE),再到AI辅助编码,随着编程变得越来越容易,应该有更多的人去学习编程。

另一件我看到的事情是,我知道最近计算机科学毕业生的失业率有所上升,比过去十年都要高。我知道这对正在学习计算机科学的人来说,引起了一些忧虑。我想分享一下我的看法。

事实是,我在硅谷内外看到的情况是,我们根本找不到足够多具备这些技能的人。我知道很多大企业愿意招聘一千名具备生成式AI、深度学习和机器学习技能的人,但他们很难找到这样的人才。相反,仍然有一些大学的课程设置自2002年以来,也就是生成式AI兴起之前,就没怎么变过。所以我确实看到,许多新的计算机科学毕业生,不是斯坦福的,而是来自全国各地的,正在为找工作而挣扎。因为不幸的是,那种旧的、没有AI赋能的技能组合,需求已经没那么大了。

就我个人而言,今天我不会雇佣一个不知道如何使用AI辅助编码的软件工程师。这完全没有道理。就像我不会雇佣一个还在用打孔卡片而不是键盘和终端的人一样。我认为,当世界从打孔卡片进化到键盘和终端时,打孔卡片的工作岗位还存在了一段时间,但最终它们都消失了,因为这不再有意义。所以今天,手动编码的工作仍然存在,可能在一些非常底层的、AI不擅长的专业领域。事实证明AI在某些类型的GPU编程上表现不佳。在一些细分领域,手动编码仍然是有意义的。

几个月前,我曾连续面试了两位工程师。一位还没有大学毕业,但对生成式AI编码非常精通。我与这位候选人交谈,他知道如何使用AI,能快速构建程序。紧接着,我面试了另一位有十年全栈工程师经验的人,但他的技能组合和2002年时完全一样,没有尝试过任何AI辅助编码。他有十年经验,技能很好。但对我来说,选择非常明确:我选了那位即将毕业的大学毕业生,而不是那个有十年经验的人。所以,我认为确保你掌握这些新技能至关重要。我看到的是,企业在填补拥有这些新技能的人才缺口方面存在巨大困难。但对2022年那种软件工程、全栈工程技能组合的需求,已经不复存在了。

我还发现,计算机科学的基础知识(CS fundamentals)真的非常重要。所以除了上面提到的,虽然我雇佣了一个应届大学毕业生而不是一个有十年经验的人,但这个故事还有另一部分:我所认识的最好的程序员也不是应届毕业生。我无意冒犯即将从斯坦福毕业的同学们。我所认识的最好的程序员,是那些既精通AI辅助编码,又深刻理解计算机科学基础的人。

让我用一个简短的故事来说明这一点。当我教授一门在线课程时,我的团队想生成一些像这样的背景图片作为装饰。当我在做这个名为“Generative AI for Everyone”的课程时,我与一位懂艺术史的合作者Tommy Nelson一起工作。我的合作者了解艺术的语言,他知道艺术流派、灵感来源、调色板,所以他可以用艺术的语言来提示Midjourney这样的AI图像生成工具。因此,他能生成像这样漂亮的图片。相比之下,我不懂艺术史,我希望我懂。所以我能做的就是去Midjourney,输入:“请为我制作漂亮的机器人图片”。我永远无法像我的合作者Tommy那样,对生成过程有那么好的控制力。这就是为什么我们用了他所有的图片,而一张我的都没用。

我在计算机科学领域也看到了同样的情况。未来最重要的技能之一,就是理解计算机是如何工作的,理解生成式AI、深度学习和机器学习是如何工作的,这样你才能用AI的语言,用这些工具的语言,准确地告诉计算机你想要什么,然后让计算机为你完成。一个只学会了提示LLM,却不理解计算机或AI真正工作原理的人,与一个能够分析问题,然后通过AI辅助编码告诉计算机如何执行下一步的人之间,表现上存在着巨大的差异。这就是为什么我认为计算机科学基础知识非常有价值。计算机科学基础、机器学习基础、深度学习基础——我和我的团队每天都在运用这些知识来做出相当重要的决策。我希望你们能从这门课以及斯坦福的许多其他课程中获得这些。

我真心希望你们能去告诉校园里所有院系的朋友们,鼓励他们成为一个创造者(builder)。因为我看到的另一件事是,对于计算机科学专业人士来说,使用AI辅助编码、掌握计算机科学基础、创造酷炫的东西,这很明确。但对于其他非计算机科学或非AI的学科,我发现,那些懂得如何构建软件的教育专业人士、气候科学家或机械工程师,他们的生产力更高,能完成更多的工作。而现在,进入AI和编程领域的门槛是我们一生中最低的。所以,坦白说,这是一个很好的时机——我希望每一位斯坦福学生都能学会用AI辅助来构建软件。我希望你们能去帮助你们在校园各处的朋友们也掌握这些技能。


问: 我听到很多业界人士说,他们宁愿雇佣一个有十年经验、只了解如何应用生成式AI(比如只是用来编码)的人,也不愿雇佣一个对深度学习、机器学习和生成式AI有深刻基础理解的应届本科生,仅仅因为前者有更多的项目经验。您也看到了这种趋势吗?

答: 好的。让我来给生产力排个序,分成四个等级。我这么说,是带着对每个人的极大尊重的,谈论生产力并不是对任何人或其工作的不敬。我认为,生产力最低的是既没有经验也不懂AI的人。之上一个等级是,比如说,有十年经验但不了解AI的人。再往上,我宁愿选择一个了解AI的应届大学毕业生。但生产力最高的,是既有十年经验,又非常精通AI的人。所以,在这两个因素之间,真正驾驭AI非常重要,但经验也很重要。我所认识的最好的开发者,他们交付代码的速度是两三年前都无法想象的,他们都是经验非常丰富的开发者,并且同时非常精通如何使用最新的AI技术。

关于就业市场,还有一点。我发现很多雇主还没有弄清楚如何进行恰当的招聘。坦白说,如果一个公司里没有人懂生成式AI,他们甚至不知道该如何正确地进行面试。这也是我们需要解决的一个问题。