前端开发者的终局

在过去的几个月里,我和许多早期职业的开发人员进行了交流,他们对人工智能越来越感到焦虑。他们看到了像 GPT-4这样的工具越来越令人印象深刻的演示,担心到他们熟练掌握 HTML/CSS/JS的时候,已经没有工作岗位留给他们了。

这种情绪现在在 Twitter上随处可见:

图片

任何只有前端技能的人应该立即多样化他们的技能,因为他们的工作很快就不会存在了。

我完全不同意这种观点。我不认为前端开发人员的工作会消失。我已经厌倦了网上传播的这种恐惧、不确定和怀疑(FUD)。

因此,在这篇博客文章中,我将分享我对未来将会发生的事情的假设。事情确实会改变,但不会像人们所说的那样可怕。

尽管如此,这篇博客文章中的所有内容都是基于我的真实信念。你可以自己决定这些信念是否有偏见。

我们重新来过

CSS 语言在 1996 年首次发布于 Internet Explorer 3。两年内,首个“无代码”网站构建器Homestead上线了。

Homestead 允许人们无需编写一行代码就能构建自定义网页:

图片

几乎从一开始,就有人担心网络开发人员会被某种新技术淘汰。在 2000 年代,是 WordPress。在 2010 年代,是 Webflow。在 2020 年代初,是no code工具。

从某种程度上说,网络开发人员确实变得多余了!如今,如果一个本地面包店、牙医或艺术家需要一个网站,他们可能不会雇佣开发人员并支付成千上万美元来从头构建东西。他们会登录SquareSpace,找到他们喜欢的模板,每月花费 20 美元。

然而,网络开发人员依然存在。

OpenAI展示了 GPT-4。这次展示了一个相当令人印象深刻的演示:GPT-4可以将手绘草图变成功能齐全的网站,包括用一点 JavaScript实现“Reveal Punchline”按钮。

图片

这很了不起,我认为它在原型设计方面有很大潜力……但让我们明确一点:我们已经几十年不需要网络开发人员来构建这些类型的页面了。这份HTML文档与当今前端开发人员编写的代码有着巨大的差异。

展望未来

到目前为止,我看到的大多数演示范围都很有限:一个简单的 HTML页面,或一个 JavaScript函数。这些是一个开发人员在一个下午就能完成的事情。

但这些只是早期阶段!如果事情继续以相同的速度加速发展,它将在几年内能够构建整个应用程序,对吗?

虽然我并不是像GPT-4这样的LLM(大语言模型)的专家,但我确实对它们的工作原理有一个高层次的理解。

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

像 OpenAI这样的公司花费大量时间和精力调整模型以改进输出。一支人类标注者队伍“评分”模型的输出,模型因此学习和进化。

如果你曾尝试过像Chat GPT 或BingAI驱动搜索这样的工具,你可能已经注意到这些响应大约有 80% 是正确的,但它们的说法绝对坚定且毫不动摇。

LLM无法验证它们的假设或测试它们的假设。它们无法确认自己所说的是否属实。它们在玩一个概率游戏,估计这串字符似乎与提示中的字符兼容。

有时,响应的一部分是无意义的。OpenAI团队将这些称为“幻觉”。

随着技术的进步,我们可以期望一些粗糙的边缘被打磨掉,但从根本上说,总会有一定程度的不准确性。这些工具只是没有任何机制来客观验证它们的响应。

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

但是等等,在 GPT-4 的演示中,我们看到了 AI 如何自我修复!复制/粘贴错误信息,它会找到并修复问题。

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

可访问性只是一个例子。代码中的安全漏洞呢?当事情变得非常糟糕时,谁来负责?
再补充一点:生成一个 50 行的 HTML 文档和输出一个生产就绪的Web应用程序之间有着巨大的差异。一个像这个博客的小型 JavaScript 应用程序大约有 65,000 行代码,分布在 900 多个文件中。这还不包括书写的内容,仅仅是 JavaScript和 TypeScript

即使有 95% 的准确率,这也会极其难以调试。这就像一个开发人员花几个月时间构建一个庞大的项目,却从未实际运行过任何代码,直到项目完全完成。这简直是噩梦。

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

我们很快就会到达这样一个点:非开发人员可以坐下来与聊天机器人一起快速完成一个小型的自包含项目,这类项目目前人们使用工具如 Webflow 来构建。而这非常棒!

但我认为我们还离大型科技公司解雇其开发人员并用提示工程师替代他们有很长的路要走。在这成为现实之前,似乎有许多潜在的无法解决的问题。

为什么你的博客如此庞大?
前面我提到我的博客大约有 65,000 行代码。如果你不熟悉我的工作,可能会对一个简单的博客如此庞大感到非常困惑!这得多么过度设计啊?
代码量如此庞大的原因是我的大多数博客文章都有许多自定义交互元素,比如我的《Flexbox 交互指南》:

图片

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

增强而非替代

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

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

木工没有被电动工具取代,会计没有被电子表格取代,摄影师没有被数码相机/智能手机取代*,我也不认为开发者会被大型语言模型(LLM)取代。

我曾想过开发者岗位的总数是否会减少;毕竟,如果每个开发者的效率显著提高,我们还需要那么多开发者吗?

未必如此。现状是,软件开发者的需求远大于供给。在我工作过的每家公司,我们都有许多想做的事情,但受限于开发人员的数量。

如果开发人员的生产力突然提高两倍会怎样?更多的 bug 会被修复,更多的功能会被发布,更多的利润会被创造。有很多东西要构建,因此开发人员的工作并不会缺乏。

我其实认为这可能会增加开发者岗位的总数。

今天,有许多公司完全不雇佣软件开发者。我曾经在 Konrad Group工作过,这是一家为其他公司构建 Web 应用程序的代理机构,许多客户都是家喻户晓的名字。由于开发成本如此之高,与其内部雇佣开发人员,他们更愿意将开发需求外包给代理机构。

那些财富 500 强公司是根据当前的软件开发成本进行计算的。假设他们需要 4 个开发人员,每人年薪 15 万美元,共 60 万美元/年。更有意义的是支付 50 万美元给一家代理机构来管理这些。但是如果 LLM真的提高了开发者的生产力,他们可能只需要雇佣 2 个开发人员,每人年薪 15 万美元,就能完成同样的工作。突然间,这笔账变得更划算了!

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

让我明确一点:我不是经济学家,这一切都是狂野的猜测。我不是说我知道事情会如何发展。我的意思是,这并不是对软件开发者不利的必然结果。没有人知道事情会如何发展,而我有点厌倦了人们把最坏的情况当成既成事实来看待。

我们不是唯一在进行这种对话的人
Aaron Blaise 是一位资深动画师和插画师。他在迪士尼工作了将近 20 年,参与了《美女与野兽》(1991 年)、《阿拉丁》(1992 年)、《风中奇缘》(1995 年)等经典迪士尼电影的制作。

几周前,他在 YouTube 上发布了一段视频:《迪士尼动画师对 AI 动画的反应》。看完这篇博客文章后,他的看法会让你感到熟悉:他并不认为这些工具是威胁,而是认为它们会提高动画师的生产力,增加动画师的工作岗位。

各行各业的艺术家和知识工作者现在都在进行同样的对话。人们担心他们的工作会被 GPT-4、DALL-E 2 和 Midjourney 等 AI 吞噬。

GPT-4 能够通过模拟律师考试,成绩进入前 10%。许多律师也在进行这些相同的讨论。

我个人认为,大多数情况下,工作专业人士会找到将这项技术整合到他们工作流程中的方法,从而提高他们的生产力和价值。某些任务可能会被交给 AI,但很少有工作会被完全取代。

但如果我错了,结果表明 LLM 确实可以完全取代软件开发者呢?如果是这样,我怀疑 LLM 将取代绝大多数知识工作者。

这不是你能够通过切换到其他学科来避免的海啸。没有更高的地面。所以,与其试图赌未来可能带来的变化,不如专注于你热爱的、感兴趣的和擅长的事情。

前端 vs 其他工程学科

网上有些人建议,前端开发特别容易被 AI 替代,并建议开发人员上移到后端或数据工程领域。

这对我来说完全是本末倒置的。我不认为任何开发人员需要担心被淘汰,但如果有任何脆弱性,我认为是在后端。

上周 OpenAI 的 GPT-4 直播展示了两个与代码相关的演示:

  • “笑话网站”的前端
  • 一个基于Python 的 Discord 机器人
    这两个项目中,Python代码看起来更接近生产就绪。我最近用 Node.js构建了一个Discord 机器人,代码非常相似。

相比之下,生成的笑话网站的基本 HTML 文档与我每天编写的前端代码之间存在巨大差异。

这是一个过度概括,但在过去的 10 年左右,许多复杂性已经从服务器转移到客户端。单片的Express应用程序已经变成了一组无服务器函数,而我们的前端已经从超链接的数字文档演变为完全成熟的桌面级应用程序。

此外,前端是用户与产品交互的部分。公司通常希望他们的产品是定制的、独特的,根据他们的品牌精心制作的。相比之下,后端是不可见的。一个通用的后端比一个通用的前端更可接受。

我们行业中有很多人觉得后端开发比前端开发更难或更复杂,“真正的”工程发生在服务器上。这当然是胡说八道。

我认为自己是全栈开发者。我的职业生涯实际上是从后端开始的,使用 PHP 和 Ruby on Rails。我仍然花大量时间编写后端代码,用于我的课程平台。栈的两侧在不同方面都很难。它们都很复杂且难以处理。

(顺便说一句,即使不涉及 JS框架,前端开发仍然很复杂且困难。我对那些专注于使用 HTMLCSS和原生JS制作高质量网站、关注可用性和可访问性的人有着极大的敬意。而且我认为他们不会很快被 AI 取代。)

使用大型语言模型(LLM)来帮助你学习

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

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

但我认为你需要谨慎使用。这种工具有正确的使用方法和错误的使用方法。

错误的方法是像对待 GPS导航一样使用它。当我需要开车去某个地方时,我会把地址输入 GPS,然后毫无区别地跟随其指示。通常,我确实会到达目的地,但这过程中我完全不需要动脑。因此,我的方向感已经完全退化了。现在如果没有合成声音告诉我该做什么,我就哪儿也去不了。😬

我建议不要像对待GPS一样对待它,而是像陪审团成员一样对待它,而 LLM就是被告,在台上作证。

你会听它说什么,但不会把它当作事实。你会保持怀疑,对每一句话进行批判性思考。

不要盲目地复制粘贴 ChatGPT 生成的代码,而是逐行检查,确保你理解。请求它进行澄清。对于看起来可疑的内容,使用权威来源(如官方文档)进行双重检查。记住,LLM 们 100% 自信,但并不 100% 准确。

如果你遵循这个策略,我认为 LLM 可以提供很大的帮助。😄

给有志成为开发者的人的信息

我写这篇博客文章的原因,特别是为了那些正在学习Web 开发并感到焦虑和沮丧的人,这样他们就不会觉得在整个领域即将被淘汰时花费这么多时间和精力是没有意义的。

我不能保证事情会完全不变。我确实怀疑 AI会对我们的工作方式产生影响。我从 2007 年开始涉足 HTML/CSS/JS,自那时以来,情况已经发生了很大变化。开发人员一直都需要适应,并随着技术的发展而演变。

但到目前为止,我没有看到任何迹象表明我们的工作面临风险。我试图想象,如果非开发人员能够在不理解 Web 技术的情况下构建整个 Web 应用程序会是什么样子,并且我能想到很多原因,即使未来的 GPT 迭代不会出现幻觉,这样做也行不通。

我可能是错的。我没有水晶球🔮。谁知道呢,明天太阳可能会爆炸。但我真的不相信我们正处于 Web 开发者被淘汰的边缘。而且我担心许多潜在的开发者会无故放慢脚步。

我不希望你在 5 年后回顾时,发现软件开发者的需求更高,并后悔自己停止追求梦想。❤️

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/88433.html

(0)
guozi's avatarguozi
上一篇 2024年6月3日 下午5:28
下一篇 2024年6月3日 下午5:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注