【译】前端开发者的终局

越来越担心人工智能的人。他们已经看到了像GPT-4这样的工具越来越令人印象深刻的演示,他们担心等他们精通HTML/CSS/JS的时候,就再也找不到工作了。

这种情绪现在在Twitter上到处都是。

我完全不同意。我认为网页开发人员的工作不会消失。而且我已经对在线传播的恐惧、不确定性和怀疑感到厌倦了。

因此,在这篇博客文章中,我将分享我对未来可能发生的事情的假设。事情将会发生变化,但不是人们所说的那种令人恐慌的方式。

我应该说明我对这个话题有着既定的利益:我在网上教授软件开发。如果开发人员的工作开始消失,对我的业务将产生不利影响。

也就是说,本文中的一切都是基于我的真实信念。你可以自行判断这些信念是否有偏见。

又来了

CSS语言于1996年首次发布,出现在Internet Explorer 3中。在2年内,第一个“无代码”网站构建器Homestead就推出了。

Homestead允许人们构建自定义网页,而不需要编写一行代码:

自从一开始,人们就一直担心新技术会让网页开发人员变得多余。在2000年代,是WordPress。在2010年代,是Webflow。在2020年代初,是“无代码”工具。

而且,在某种程度上,网页开发人员已经变得不再必要!如今,如果当地的面包店、牙医或艺术家需要一个网站,他们可能不会雇用开发人员并支付数万美元来从头开始构建一个网站。他们会上SquareSpace,找到他们喜欢的模板,然后每月花费20美元。

然而,网页开发人员仍然存在。

上周,OpenAI展示了GPT-4。其中有一个相当令人印象深刻的演示:GPT-4可以接受手绘网站草图,并将其转换为完全功能的网站,包括一些JS来连接“揭示笑话”的按钮。

这是非常引人注目的,我认为它在原型设计方面有很大潜力……但让我们明确一点:几十年来,我们并不需要网页开发人员来构建这类页面。这个HTML文档与前端开发人员今天编写的代码之间存在巨大的差异。

展望未来

到目前为止,我看到的大多数演示在范围上相当有限:一个简单的HTML页面,或一个单一的JavaScript函数。这些是一个开发人员在一个下午内可以做的事情。

但这些只是初期!如果事情继续以同样的速度加速发展,那么在几年内就能够构建整个应用程序,对吗?

在像GPT-4这样的LLM方面,我远非专家,但我在高层次上理解它们的工作原理。

从根本上说,LLM是超级强大的文本预测器。给定一个提示,它们使用机器学习来尝试找到跟随提示的最可能的字符集。

OpenAI这样的公司花费大量时间和精力来调整模型以改善输出。一群人类标记员“评分”模型的输出,模型会学习和进化。

如果你尝试过像Chat GPT或必应的AI搜索这样的工具,你可能会注意到,回复可能大约80%正确,但它们是绝对和不可动摇的自信地说出来的。

LLM不能验证它们的假设,或测试它们的假设。它们不能确认它们所说的是否真实。它们正在进行概率游戏,并估计这个字符串似乎与提示的字符串兼容。

有时,响应的部分是荒谬的。OpenAI团队将这些称为“幻觉”。

随着技术的改进,我们可以期待一些粗糙的边缘被修整,但从根本上说,总会存在一定程度的不准确性。这些工具没有任何机制来客观地验证它们的回应。

因此,准确性会提高,但永远不会完美。如果我们在谈论让网页开发人员变得多余,这就是一个问题。如果你不是程序员,你将无法判断哪些部分是准确的。你也无法察觉到幻觉。

但等等,在GPT-4的演示中,我们看到AI可以自我修复!复制/粘贴错误消息,它就会找到并修复问题。

但是,不是所有的幻觉都会导致明显的错误。例如,我最近使用GPT-4使用React生成了一个<Modal>组件,虽然输出令人惊讶地不错,但仍然存在一些可访问性错误。创建应用程序的人可能不会注意到这些问题,但最终用户肯定会注意到!

可访问性只是一个例子。那么代码中的安全漏洞呢?当事情出了大问题时谁负责呢?
再多说一点:生成一个50行的HTML文档和输出一个可投入生产的网络应用之间存在巨大差异。像这个博客这样的小型JS应用有大约65,000行代码,跨越了900多个文件。这里不包括书面内容,只有JavaScriptTypeScript

即使准确率达到95%,这仍然会非常难以调试。这就像一个开发人员花了几个月的时间构建一个庞大的项目,而从未尝试运行其中任何代码,直到它完成了100%一样。这是噩梦般的情景。

人工智能并不是魔法。它的表现只能及其训练数据一样好。代码片段遍布互联网,通常是通用的。相比之下,每个代码库都是独一无二的。大型开源代码库几乎没有。AI如何学习构建大型实际项目呢?

我们很快就会达到一个这样的时刻:非开发人员可以与聊天机器人坐下来制作一个小型的独立项目,类似于目前使用Webflow等工具来构建的东西。这太棒了!

但我认为我们距离主要科技公司放弃他们的开发人员并用提示工程师取代他们还有很长的路要走。在我看来,有几个潜在的无法解决的问题阻碍了这一现实化。

你的博客为什么这么大?
早些时候,我提到我的博客有大约65,000行代码。如果你不熟悉我的工作,你可能会对一个简单的博客如何如此庞大感到非常困惑!它一定是多么过度工程化了吧?
代码量之所以如此之多,是因为我的大多数博客文章都包含大量自定义的交互元素,比如我的《Flexbox交互式指南》:

我还在同一个代码库中托管了几个副项目,比如我的渐变生成器和JS运算符搜索引擎。

增强而非取代

从这篇文章中你可能不会知道,但我对人工智能其实非常乐观。😅

我认为最可能的情况是,像GPT-4这样的工具将被集成到开发工具中,用于增强熟练开发人员的能力。

木匠没有被电动工具取代,会计师没有被电子表格取代,摄影师没有被数码相机/智能手机取代*,我也不认为开发人员会被LLM取代。

我曾想过,也许开发人员的总数将会减少;毕竟,如果每个开发人员的效率显著提高,我们就不需要那么多开发人员了吧?

不一定。目前情况是,对软件开发人员的需求远远超过供应。在我工作过的每家公司,我们都有很多想做的事情,但我们受到了拥有的开发人员数量的限制。

如果开发人员突然变得效率提高了一倍会发生什么?将修复更多的bug,发布更多的功能,赚取更多的利润。有许多需要开发的项目,因此我们不会因为没有开发人员去做工作而无事可做。

我实际上认为这可能增加了开发人员的总数。

如今,有很多公司根本不雇用软件开发人员。我曾经为一家名叫Konrad Group的公司工作,这是一家为其他公司构建网络应用程序的机构,其中许多公司是家喻户晓的品牌。由于开发成本如此之高,对他们来说更有意义的是将开发需求外包,而不是在内部雇用开发人员。

那些财富500强公司正在根据目前的软件开发成本进行计算。假设他们需要每人150,000美元的4名开发人员,共计每年600,000美元。对他们来说,为代理公司支付50万美元来管理这个项目更有意义。但如果LLM确实提高了开发人员的生产力,他们可能只需要每人150,000美元的2名开发人员来完成同样的工作量。突然之间,数学变得更有吸引力!

经济学家有一个术语来描述这种情况:杰文斯悖论。它可以追溯到1865年!感谢Tim Grant让我知道这一点。

让我明确一点:我不是经济学家,这一切都是猜测。我不是说我知道事情一定会这样发展。我要说的是,这不是对软件开发人员不利的必然结果。没有人知道事情会如何发展,我对人们表现得好像最坏的情况是既成事实感到有些厌倦。

我们不是唯一在讨论这个问题的人

Aaron Blaise是一名资深的动画师和插画家。他在迪士尼工作了近20年,为《美女与野兽》(1991)、《阿拉丁》(1992)、《风中奇缘》(1995)等

经典迪士尼电影做出了贡献。

几周前,他在YouTube上发布了一个视频:迪士尼动画师对AI动画的反应。在阅读了这篇博客文章之后,他的看法会让你觉得耳熟:他不认为这些工具是威胁,而是认为它们会提高动画师的生产力,并导致更多的动画师工作。

各行各业的艺术家和知识工作者目前都在进行同样的讨论。人们担心自己的工作即将被像GPT-4DALL-E 2Midjourney这样的AI所取代。

GPT-4可以通过模拟的法学考试,取得前10%的成绩。许多律师正在进行这些完全相同的讨论。

我个人的信念是,就大多数工作专业人士而言,他们会找到办法将这项技术整合到他们的工作流程中,提高他们的生产力和价值。某些任务可能会交给AI,但工作不会被取代。

但如果我错了,LLM真的可以完全取代软件开发人员怎么办?如果是这样,我怀疑LLM将会取代绝大多数的知识工作者。

这不是你通过转行就能避开的海啸。没有什么高地可言。因此,与其试图赌博未来可能会带来什么,为什么不专注于你的激情、你感兴趣的事情、你擅长的事情呢?

前端与其他工程学科

一些网友在网上建议,前端开发特别容易受到AI取代,建议开发人员向上升级,专注于后端或数据工程。
我觉得这完全是反过来了。我不认为任何开发人员都必须担心被淘汰,但如果这里确实有漏洞,我认为它存在于后端。
上周OpenAI的GPT-4直播展示了两个与代码相关的演示:
“笑话网站”的前端

  • 基于Python的Discord机器人
  • 对我来说,这两个项目中,Python代码更适合生产。

最近我用Node.js构建了一个Discord机器人,代码看起来非常相似。
相比之下,生成的笑话网站的基本HTML文档和我每天编写的前端代码之间存在很大的差距。
这是一种过度概括,但在过去的10年左右的时间里,许多复杂性已经从服务器转移到了客户端。单片式的Express应用程序已经转变为一组无服务器函数,而我们的前端已经从超链接数字文档发展成了成熟的桌面级应用程序。
此外,前端是用户与产品互动的部分。公司通常希望他们的产品是定制的、独特的,根据他们的品牌精心制作的。相比之下,后端是看不见的。通用的后端比通用的前端更可接受。
我们行业中有大量的人认为后端开发比前端开发更难或更复杂,认为“真正”的工程在服务器上进行。这当然是无稽之谈。
我认为自己是一个全栈开发人员。我实际上是从后端开始的,使用PHPRuby on Rails。我仍然花很多时间编写后端代码,用于我的课程平台。两端的代码在不同的方面都是困难的。它们都是复杂和困难的。
(顺便说一句,即使不涉及JS框架,前端仍然很复杂和困难。我非常尊重那些专门使用HTML、CSS和纯JS制作高质量网站的人,专注于可用性和可访问性。我认为他们不会很快被AI取代。)

使用LLMs来帮助你学习

我听说有一些人说ChatGPT在学习技术技能方面非常有帮助。如果你在教程中感到困惑,你可以请AI给你解释!

对我来说,这是一个非常有趣的用例。本质上,ChatGPT就像一位编程伙伴,可以帮助你理解你不明白的东西。你可以询问它具体的问题,得到具体的答案。

但我认为你需要小心。使用这种工具来帮助你学习有正确的方式和错误的方式。

错误的方式是把它当作GPS导航来对待。当我必须开车去某个地方时,我会把地址输入我的GPS,然后盲目地按照它的指示行事。通常我会到达目的地,但这不需要我付出任何精神上的努力。因此,我的方向感完全退化了。现在我不能在没有合成声音告诉我该怎么做的情况下去任何地方了。

与其将其视为GPS,我建议将其视为你是陪审团的成员,而LLM是被告,正在作证。
你会听听他们说的话,但不会把它当作事实接受。你会持怀疑态度,对每个字思考得很深。
与其盲目地复制/粘贴ChatGPT生成的代码,不如逐行查看并确保你理解。要求它进行澄清。并用权威来源(如官方文档)验证看起来可疑的事情。记住,LLMs是100%自信的,但不是100%准确的。

如果你遵循这个策略,我认为LLMs能够提供很多价值。😄

给开发人员的人的一条建议

我想写这篇博客文章的原因是专门为了解决那些正在学习网页开发并感到焦虑和沮丧的人,他们觉得花费所有这些时间/精力来建立这些技能没有意义,因为整个领域即将被淘汰。

我不能保证事情会保持不变。我确实怀疑AI会对我们的工作产生影响。我2007年开始尝试HTML/CSS/JS,从那时起,事情就变化了很多。开发人员一直需要适应,随着技术的发展而进步。

但到目前为止,我没有看到任何迹象表明我们的工作处于危险之中。我试图想象一下,如果非开发人员能够在不了解网络技术的情况下构建完整的网络应用程序,那会是什么样子,即使未来的GPT版本不再产生幻觉,我想到了很多原因为什么它不会起作用。

我可能错了。我没有水晶球🔮。我也不知道太阳明天会不会爆炸。但我真的不相信我们即将成为过时的网络开发人员。我担心许多潜在的开发人员毫无理由地放慢了自己的脚步。

我不想让你在5年后回首,如果软件开发人员的需求更大,而后悔你停止追求自己的梦想。❤️