【翻译】前端开发的终点
原文地址:https://www.joshwcomeau.com/blog/the-end-of-frontend-development/
最近几个月,我与许多初出茅庐的开发人员交谈,他们越来越担心人工智能的发展。他们看到了像GPT-4这样的工具日益令人印象深刻的演示,担心等到他们精通HTML/CSS/JS时,已经没有工作留给他们了。
这种情绪现在在Twitter上普遍存在:
Twitter上的截图:“只有前端技能的人应该立即多样化他们的技能,因为他们的工作很快就会不存在了。”
我非常不同意这种说法。我认为Web开发人员的工作不会消失。而且我很厌倦网上散布的恐慌性言论。
因此,在这篇博客文章中,我将分享我的假设,即事情将会发生变化,但不会像人们说的那样令人害怕。
我们开始吧
CSS语言首次于1996年在Internet Explorer 3中发布。两年内,第一个“无代码”网站构建器Homestead推出。
Homestead允许人们在不编写任何代码的情况下构建自定义网页:
从一开始就一直存在一种担忧,即新技术会使Web开发人员变得无用。在2000年代,是WordPress。在2010年代,是Webflow。在2020年代初期,是“无代码”工具。
而且,在某种程度上,Web开发人员已经变得过时了!现在,如果一家当地的面包店、牙医或艺术家需要一个网站,他们可能不会雇用开发人员并支付他们成千上万美元来从头构建一个网站。他们会进入SquareSpace,找到他们喜欢的模板,并支付20美元/月。
然而,Web开发人员仍然继续存在。
上周,OpenAI展示了GPT-4。其中包括一个相当令人印象深刻的演示:GPT-4可以将手绘的网站草图转换为完全功能的网站,包括一些JS来连接“揭示笑话”按钮。
这很了不起,我认为在原型制作方面有很大的潜力;但是让我们明确一点:几十年来,我们不需要Web开发人员来构建这些类型的网页。这个HTML文档和前端开发人员今天编写的代码之间有巨大的差异。
展望未来
到目前为止,我看过的大多数演示的规模都相当有限:一个简单的HTML页面或单个JavaScript函数。这些是单个开发人员在下午可以做的工作。
但这只是开始!如果事情以相同的速度继续加速,几年后它就能够构建整个应用程序,对吧?
我远非像GPT-4这样的LLMs的专家,但我在高层次上了解它们的工作原理。
基本上,LLMs是超级强大的文本预测器。给定提示,它们使用机器学习来尝试找出跟随提示最可能的一组字符。
像OpenAI这样的公司花费大量时间和精力来调整模型以改善输出。一大批人类标签制定者“评分”模型的输出,模型学习并发展。
如果您尝试过类似Chat GPT或必应的AI搜索的工具,您可能会注意到响应可能正确性达到80%,但它们的置信度绝对且不可动摇。
LLMs无法验证其假设或测试其假设。它们无法确认它们所说的内容是否真实。它们在进行一场概率游戏,并估计这个字符串似乎与提示的字符串兼容。
有时,响应的某些部分是荒谬的。 OpenAI团队将它们称之为“幻觉”。
随着技术的改进,我们可以期望一些粗糙的边缘被磨平,但根本上,总会存在一定水平的不准确性。这些工具没有任何机制来客观验证其响应。
因此,准确性会提高,但永远不会完美。如果我们谈论让Web开发人员过时,这是一个问题。如果您不是程序员,您将无法确定哪些部分是准确的。您无法发现这些幻觉。
但是等等,在GPT-4演示中,我们看到了AI如何自我修复!复制/粘贴错误消息,它会找到并修复问题。
但是,不是所有的幻觉都会导致异常。例如,我最近使用GPT-4生成了React的Modal组件,虽然输出结果令人惊讶,但仍然存在一些可访问性错误。创建应用程序的人可能不会注意到这些问题,但最终用户肯定会注意到!
那么,代码中的安全漏洞怎么办?当事情出问题时,谁负责?
还有一点:生成一个50行的HTML文档与生成一份可以直接上线的Web应用程序之间存在巨大的差异。像这个博客一样的小型JS应用程序有大约65k行代码,跨越900多个文件。这不包括书面内容,仅包括JavaScript和TypeScript。
即使准确率达到95%,这仍然非常难以调试。这就像开发人员花费数月时间构建一个巨大的项目,直到100%完成之前,从未尝试运行任何代码。这是噩梦的材料。
人工智能不是魔法。它的好坏取决于其训练数据。代码片段遍布整个互联网,通常是通用的。相比之下,每个代码库都是独特的。很少有大型开源代码库。人工智能如何学习如何构建大型真实世界的项目?
我们很快就会达到这样的程度:非开发人员可以坐下来与聊天机器人一起制作一个小的自包含项目,这是目前使用诸如Webflow之类的工具来构建的内容。这很棒!
但我认为我们离主要科技公司放弃其开发人员工作人员并用提示工程师替换他们还有很长的路要走。在我看来,有几个潜在的不可解决的问题妨碍了这成为现实。
增强,而不是替换
您可能无法从本文中了解到,但我对人工智能非常乐观。 😅
我认为最有可能的情况是GPT-4这样的工具被整合到开发人员工具中,并用于增强熟练开发人员的能力。
木匠没有被电动工具代替,会计师没有被电子表格代替,摄影师没有被数字相机/智能手机代替*,我不认为开发人员将被LLMs替代。
我曾经想过,也许开发者总数会下降;毕竟,如果每个开发者的效率显着提高,我们不需要那么多开发者了,对吧?
不见得。目前,软件开发人员的需求远远超过供应。在我工作的每一家公司,我们都有很多想做的事情,但我们受制于我们拥有的开发人员数量。
如果开发者突然变得比现在多产2倍,会发生什么?会修复更多的错误,发布更多的功能,赚取更多的利润。有很多要建造的东西,因此并不像我们会用完开发者要做的工作。
我实际上认为这可能会增加开发者的总数。
今天,有很多公司根本不聘请软件开发人员。我曾经为一家名为Konrad Group的公司工作,这是一家为其他公司构建Web应用程序的代理公司,其中许多家庭名字。由于开发成本非常高,对他们来说与其雇用内部开发人员,不如外包管理他们的开发需求。
这些财富500强公司正在根据软件开发的当前成本进行计算。让我们编造一些数字:假设他们需要4名每人150,000美元的开发人员,每年需要60万美元。对他们来说,支付代理机构500,000美元来管理此需求是更有意义的。但是,如果LLMs确实增强了开发人员的生产力,他们可能只需要雇用两名每人15万美元的开发者就可以完成同样数量的工作。突然之间,情况变得更具吸引力!
让我明确一点:我不是经济学家,这都是猜测。我不是说我知道这件事一定会有这样的结果。我想说的是,这并非注定会对我们不利。没有人知道会出现什么情况,我有点烦人们表现得好像最坏的情况是铁定会发生的。
我们不是唯一在进行这种讨论的人
艾伦·布莱斯(Aaron Blaise)是一位资深的动画师和插画家。他在迪士尼工作了将近20年,为《美女与野兽》(1991年)、《阿拉丁》(1992年)、《风中奇缘》(1995年)等经典迪士尼电影做出了贡献。
几周前,他在YouTube上发布了一段视频:迪士尼动画师对AI动画的反应。在阅读本博客文章之后,他的看法会让您感到熟悉:他不认为这些工具是一种威胁,而是认为它们将增加动画师的生产力,并带来更多的动画师工作机会。
各行各业的艺术家和知识工作者正在进行相同的对话。人们担心他们的工作将被类似于GPT-4、DALL-E 2和Midjourney这样的人工智能吞噬。
GPT-4可以通过模拟的吧台考试,并获得测试者中排名前10%的分数。很多律师正在进行这些完全相同的讨论。
我个人的信念是,大多数职业人士将找到一种方式将这种技术整合到他们的工作流程中,从而增加他们的生产力和价值。某些任务可能会被委托给人工智能,但不会取代大多数工作。
但如果我错了,LLMs确实可以完全取代软件开发人员怎么办?如果情况是这样的,我怀疑LLMs将取代绝大多数知识工作者。
这不是您可以通过切换到不同的学科可以避免的。因此,与其赌博未来会带来什么,为什么不专注于自己的激情,自己感兴趣的事情,自己擅长的事情呢?
前端开发与其他工程学科
一些人在网上建议,前端开发特别容易受到人工智能取代的影响,并建议开发人员向上移动到栈底,更加关注后端或数据工程。
这对我来说似乎完全是倒过来的。我认为没有任何开发人员需要担心被淘汰,但如果这里有任何脆弱性,我认为它在后端。
OpenAI上周的GPT-4直播展示了两个与代码相关的演示:
- “笑话网站”前端
- 一个基于Python的Discord机器人
对于这两个项目,Python代码对我来说似乎更加符合生产要求。最近我使用Node.js构建了一个Discord机器人,代码看起来非常相似。
相比之下,我每天编写的前端代码与生成的基本HTML文档之间有很大的差距。
这是一个过度概括,但在过去的10年左右的时间里,很多复杂性已经从服务器转移到客户端。Express应用程序已经转变成了无服务器函数集合,而我们的前端已经从超链接数字化文档演变成了完整的桌面级应用程序。
此外,前端是用户与产品交互的部分。公司通常希望为其产品量身定制,独一无二,根据品牌精心制作。相比之下,后端是不可见的。通用后端比通用前端更可接受。
我们行业中令人沮丧的许多人认为,后端开发比前端开发更难或更复杂,即“真正的”工程在服务器上发生。这当然是无稽之谈。
我认为自己是一个全栈开发人员。我实际上是从后端开始我的职业生涯的,使用PHP和Ruby on Rails。我仍然花费了很大一部分时间编写我课程平台的后端代码。两个方面的栈在不同的方面都很困难。它们都很复杂和难。
(顺便说一句,即使不涉及JS框架,前端仍然很复杂和难。我对专门使用HTML、CSS和香草JS制作高质量网站并专注于可用性和可访问性的人表示极大的尊重。我认为他们不会很快被人工智能所取代。)
使用LLMs帮助学习
我听说有一些人说ChatGPT在学习技术技能方面非常有帮助。如果您在教程中感到困惑,可以向人工智能询问并获得解释!
对我来说,这是一个非常有趣的用例。实质上,ChatGPT就像一个程序员,可以帮助您理解不理解的事情。您可以提出具体问题并得到具体答案。
但我认为您需要小心。使用这类工具帮助您学习有正确的方法和错误的方法。
错误的方法是将其视为GPS导航。当我必须驾车前往某个地方时,我会将地址输入我的GPS,并无差别地按照其指示前行。通常情况下,我会到达目的地,但这需要我0%的精神努力。因此,我的方向感完全退化了。现在,我无法去任何地方,除非有一个合成的声音告诉我该怎么做。 😬
我建议将其视为您是陪审团成员,LLM是被告人。
您应该倾听他们的发言,但不会将其作为事实接受。您应该持怀疑态度,并对每个单词进行批判性思考。
不要盲目地复制/粘贴ChatGPT生成的代码,逐行审查并确保您了解。请要求它进行澄清。并通过权威来源(例如官方文档)双重检查似乎可疑的事物。请记住,LLMs的置信度为100%,但准确性可能不是100%。
如果您按照此策略进行,我认为LLMs可以提供很多价值。 😄
给有抱负的开发人员一个建议
我想撰写这篇博客文章的原因是特别是为了解网站开发并感到焦虑和失望的人,就像在整个领域即将过时花费所有这些时间/精力建立这些技能毫无意义。
我不能保证事情会完全保持不变。我确实怀疑人工智能将对我们的工作方式产生影响。我从2007年开始涉足HTML/CSS/JS,并从那时起事情已经发生了如此大的变化。开发人员总是必须适应技术的变化。
但到目前为止,我没有看到任何迹象表明我们的工作岌岌可危。我试图想象,如果非开发人员能够构建完整的Web应用程序而不了解Web技术,会发生什么,即使未来的GPT版本不会产生幻觉,我也想出了许多原因为什么这种做法行不通。
我可能是错的。我没有水晶球🔮。我知道,太阳明天可能会爆炸。但我真的不相信我们正在拥有使网络开发人员过时的边缘。我担心许多有意愿的开发人员没有理由减缓他们的学习步伐。
我不希望在5年后回头看,如果软件开发人员的需求更加广泛,您会后悔停止追寻自己的梦想。❤️