别把 OpenAI 太当回事,它远未达到替换前端的地步
最近几个月,我和很多初入行的开发人员交谈,他们对AI越来越感到焦虑。他们看到像GPT-4这样的工具展示的越来越令人印象深刻的演示,担心等他们掌握了HTML/CSS/JS,就没有任何工作机会了。这种情绪现在在Twitter上广泛存在:
我认为网页开发工作并不会消失。我非常厌倦在网上看到的那些“FUD”(宣传恐惧、不确定性和怀疑的信息)。因此,在本篇博客中,我将分享我对未来的猜测。虽然情况将发生改变,但不会像人们所说的那样可怕。
很早之前就有自动生成代码的工具
CSS语言于1996年首次发布于Internet Explorer 3中。两年内,第一款“无代码”网站构建器Homestead应运而生。Homestead让人们可以在不写一行代码的情况下构建自定义网页:
从一开始,人们就一直担心新技术会使网络开发人员变得多余。在2000年代,是WordPress;在2010年代,是Webflow;在2020年代初,是“无代码”工具。某种程度上,网络开发人员已经过时了!现在,如果当地的面包店、牙医或艺术家需要一个网站,他们可能不会雇佣开发人员并支付数万美元来从头构建一个网站。他们会跳到SquareSpace,找到他们喜欢的模板,花费20美元/月。然而,网络开发人员仍然存在。
上周,OpenAI展示了GPT-4的功能。其中一个相当令人印象深刻的演示是:GPT-4可以将手绘的网站草图转换成完全功能的网站,包括一些JS代码来连接“揭示妙语”按钮。
非常出色,我认为它在原型设计方面有很大的潜力...但是让我们明确一点:几十年来,我们并不需要Web开发人员来构建这些类型的页面。这个HTML文档和现代前端开发人员编写的代码之间存在巨大的差异。为了更好地理解这段话,我们需要知道,随着互联网的发展,前端开发已经从简单的HTML页面转变为更复杂的Web应用程序和移动应用程序的构建。现代前端开发人员需要熟练掌握各种编程语言和框架,并了解如何优化性能和用户体验。因此,虽然这个HTML文档令人印象深刻,但它并不代表现代前端开发的水平。
展望未来
到目前为止,我看到的大部分演示都相当有限:一个简单的HTML页面,或者一个单独的JavaScript函数。这些都是一个开发人员在下午可以完成的事情。但这只是开始!如果事情继续以同样的速度加速发展,几年后就能够构建整个应用程序了,对吧?
虽然我不是像GPT-4这样的LLM专家,但我在高层次上理解它们的工作方式。从根本上讲,LLMs是超级强大的文本预测器。在给定提示的情况下,它们使用机器学习来尝试提供最有可能的字符集来跟随提示。像OpenAI这样的公司花费大量的时间和精力来调整模型,以改善输出。大量人工标注者对模型的输出进行“评分”,模型学习和演化。
如果你使用过像Chat GPT或Bing的AI搜索等工具,你可能会注意到,响应的正确率可能只有80%,但它们会带有绝对和不可动摇的自信。LLMs不能验证它们的假设或测试它们的假设。它们无法确认它们所说的是否正确。它们在玩一个概率游戏,并估计这个字符集似乎与提示中的字符集兼容。有时,响应中的某些部分是荒谬的。OpenAI团队将其称为“幻觉”。
延伸阅读:LLMs 是什么?
LLMs 指的是 Language Model with Legal Text,它是一种基于语言模型的人工智能技术,专门用于处理法律文件和文本。这种技术可以模拟人类律师的思维和行为,通过自然语言处理和机器学习算法,实现自动化的法律文件处理和分析。
随着技术的改进,我们可以期望一些粗糙的边缘被磨平,但从根本上讲,总会存在某种程度的不准确性。这些工具没有任何机制来客观地验证它们的响应。
在 GPT-4 的演示中,我们看到了 AI 可以修复自身错误的能力!只需要复制/粘贴错误信息,它就能找到并修复问题。不过,并不是所有生成的代码都是没有问题的。比如,最近我用 GPT-4 生成了一个使用 React 的 <Modal> 组件,尽管输出结果非常出色,但它还是存在一些无障碍方面的错误。这些问题可能不会被创建应用程序的人注意到,但最终用户肯定会发现!那么,代码中的安全漏洞又该如何处理呢?当出现严重问题时,责任归属于谁呢?
在举个例子,比如我的这个博客项目
再说一点:生成一份包含 50 行 HTML 代码的文档和生成一个可用于生产环境的 Web 应用程序之间存在着巨大的差异。像这个博客一样的小型 JS 应用程序有着约 65,000 行代码,分布在 900 多个文件中。这还不包括文本内容,只包括 JavaScript 和 TypeScript 代码。
即使准确率高达 95%,调试这些代码也非常困难。这就像一个开发者在数月内构建一个大型项目,却从未尝试运行任何代码,直到项目完全完成。这是噩梦般的情况。
AI 并不是神奇的存在,它的效果取决于其所训练的数据。代码片段在互联网上随处可见,而且通常都是通用的。相比之下,每个代码库都是独一无二的。大型开源代码库非常少。那么,AI 怎么能够学习如何构建真实世界的大型项目呢?
我们很快就会达到一个非开发人员可以通过聊天机器人快速构建小型自包含项目的阶段,这些项目目前需要使用类似 Webflow 的工具来构建。这很棒!但我认为,我们离主要科技公司放弃开发人员并用智能工程师替代他们的日子还有很长的路要走。
加强而非替代
从这篇文章中你可能不知道,但我实际上对 AI 很乐观。
我认为最有可能的情况是像 GPT-4 这样的工具会被整合到开发工具中,用于增强有技能的开发者所能做的事情。木匠没有被电动工具所取代,会计师没有被电子表格所取代,摄影师没有被数码相机/智能手机所取代,我不认为开发者会被 LLMs 所取代。
我想知道如果开发者的总体生产力突然提高了 2 倍会发生什么。会有更多的错误得到修复,更多的功能得到发布,更多的利润得到创造。有很多需要开发的东西,所以我们不会缺少开发者做的工作。我实际上认为这可能会增加开发者的总数。
今天,有很多公司根本不雇用软件开发人员。我曾经为 Konrad Group 工作过,这是一家为其他公司构建 Web 应用程序的机构,其中许多是家喻户晓的品牌。由于开发成本如此之高,他们更倾向于将他们的开发需求承包给外部机构,而不是在公司内部雇用开发者。
那些财富500强公司是根据当前的软件开发成本进行计算的。让我们假设他们需要4个每个15万美元的开发者,总共60万美元/年。对他们来说,支付50万美元给代理公司来管理这个需求更有意义。但是,如果 LLMs 真的能够增强开发者的生产力,他们可能能够雇用2名每人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和vanilla JS制作高质量网站、专注于可用性和可访问性的人。我认为他们不会很快被人工智能取代。)
使用LLMs来帮助你学习
使用LLMs来帮助你学习 我听说有些人说ChatGPT在学习技术技能方面非常有帮助。如果你在教程中感到困惑,你可以向人工智能提出问题并得到解释!
对我来说,这是一个非常有趣的用例。实际上,ChatGPT就像一名编程伙伴,可以帮助你理解你不理解的事情。你可以提出具体问题并得到具体答案。但是我认为你需要小心使用这样的工具来帮助你学习。使用的方法有正确的和错误的之分。
错误的方式是把它当作GPS导航。当我要开车去某个地方时,我会把地址输入我的GPS,然后不加选择地按照它的指示行驶。通常情况下我会到达目的地,但这需要我零思考。结果,我的方向感完全退化了。现在我不能去任何地方,除非有个合成的声音告诉我该怎么做。
相反,我建议把它看作你是陪审团的一员,而LLM则是被告,站在证人席上。你会听取他们的陈述,但不会接受它作为事实。你会持怀疑态度,并对每个词都进行批判性思考。
不要盲目复制/粘贴ChatGPT生成的代码,逐行阅读,并确保你理解它。请向ChatGPT要求澄清。并使用权威来源(例如官方文档)仔细检查似乎可疑的事情。请记住,LLMs是100%自信,但不是100%准确。如果你遵循这个策略,我认为LLMs可以提供很多价值。
给那些有志于成为开发者的人的建议
我写这篇博客文章的原因,是专门为那些正在学习Web开发并感到焦虑和沮丧的人发声,他们觉得在这个领域花费这么多时间/精力来建立这些技能是没有意义的,因为整个领域即将被淘汰。
我不能保证事情会保持完全一样。我确实认为AI将对我们的工作方式产生影响。我从2007年开始涉足HTML/CSS/JS,自那以后,事情发生了很大变化。开发人员一直需要适应,随着技术的发展不断进化。
但到目前为止,我所看到的没有任何迹象表明我们的工作岗位受到威胁。我试图想象一下,如果非开发人员能够在不理解Web技术的情况下构建整个Web应用程序,会是什么样子,但我想出了很多理由说明它不会奏效,即使未来的GPT版本不会出现太多幻觉。
我可能是错的。我没有水晶球。但我真的不相信我们即将见证Web开发人员被淘汰的时代。我担心许多有志于成为开发人员的人没有理由却放慢了自己的步伐。
我不希望你在未来五年里看到软件开发变得更加受欢迎,而因为你停止追求自己的梦想而后悔。我鼓励你坚持努力学习,因为我相信软件开发人员的需求将会持续增加。
结束
今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。
原文:
https://www.joshwcomeau.com/blog/the-end-of-frontend-development/作者:joshwcomeau
非直译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正