聚焦大模型浪潮下软件工程的创新洞见与实践 |QCon主题演讲大咖来袭 了解详情
写点什么

GPT-4 预示着前端开发的终结?你准备好面对无法预测的技术挑战了吗?

作者:Josh Comeau

  • 2023-04-10
    北京
  • 本文字数:4934 字

    阅读完需:约 16 分钟

GPT-4预示着前端开发的终结?你准备好面对无法预测的技术挑战了吗?

过去几个月来,我跟很多刚刚步入前端开发领域的朋友们交流过,大家都对步步紧逼的 AI 感到焦虑。他们看到 GPT-4 等工具带来的令人印象深刻的演示,担心自己学成 HTML/CSS/JS 知识之日,就是岗位消失之时。


这类情绪绝非个例,Twitter 上早已是哀鸿一片。



澄清声明我先向大家承认,这个话题跟我有切身关联:我的工作就是在网上教学员开发软件。如果开发者岗位逐渐消失,那我的饭碗也就完了。

但我向大家保证,我在本文中表达的所有观点都出于自己的真实判断。欢迎大家自行斟酌这些观点是否存在偏见。


“又”要被替代了


CSS 语言最初发布于 1996,随 IE 3 一同推出。两年之内,首款“无代码”网站构建器 Homestead 就跟大家见面了。


Homestead 能帮助人们在无需编写代码的情况下,轻松构建起自定义网页:



也就是说,从 Web 开发这类岗位刚刚出现时,就有人担心会被某些新技术所淘汰。2000 年代的威胁源头是 WordPress,2010 年代是 Webflow,2020 年代初则是“无代码”工具。


其实从某种意义上讲,Web 开发者确实已经过时了。如今,本地面包小店、牙医诊所或者艺术家如果需要一个网站,那大概率不会花几万美元聘请开发者从零开始做设计。他们可以直接前往 SquareSpace,找到自己喜欢的模板,然后每月花 20 美元来运营自己的业务门户。


但就算这样,Web 开发者也仍然存在。


上星期,OpenAI 公布了 GPT-4,期间有一段令人印象深刻的演示:GPT-4 能够将手绘的网站草图转化成功能齐全的网站,甚至包括一些 JS 来连接“Reveal Punchline”按钮。




这功能确实很酷,在原型设计方面有很大的潜力……但我们还是得明确一点:几十年来,我们的 Web 开发者负责构建的从来不是这类页面。演示中的 HTML 文档跟目前前端开发者编写的各种代码,可以说是天渊之别。


展望未来


到目前为止,我个人看到的大部分演示都非常有限:要么是一个简单的 HTML 页面,要么是 JS 函数。总之,就是那种开发者可以随手搞定的东西。


但这一切还仅仅只是开始!如果 AI 继续保持目前的发展速度,再过几年就能构建起完整的应用程序了,对吧?


我当然不是什么大语言模型专家。但对于 GPT-4,我完全能够理解它的宏观工作原理。


从本质上讲,大语言模型是一种超级强大的文本预测器。给定一个提示,它们就能使用机器学习来尝试找到最可能符合提示要求的字符集。


OpenAI 等厂商花费了大量的时间和精力来调整模型,借此改善输出质量。一大群人工标者对模型的输出进行“评级”,借此引导模型不断学习和进化。


如果大家体验过 CHatGPT 或者 Bing 的 AI 搜索等工具,就会发现这些回答大概有个 80% 的正确率,但 AI 却表现得像是有 100% 的把握。


大语言模型无法验证或者说测试自己的假设,无法确定自己的表达内容是否为真。它们还是在玩概率游戏,猜测给出的字符应该会跟用户在提示中输入的字符相匹配。


有时候,AI 甚至会给出非常荒谬的回答。OpenAI 团队将其称为“幻觉”。


随着技术进步,预计某些粗糙的问题会被一一克服。但从根本上讲,AI 或多或少还是会存在准确度问题。毕竟 AI 工具没有任何机制能够对自己的响应做出客观验证。


因此,准确率可以不断提高,但永远达不到完美。而趋于完美,正是 AI 真正取代 Web 开发者的前提。如果它本身不是程序员,那就无法判断哪些部分是对的、哪些是错的。AI 自己发现不了“幻觉”。


但大家别急,我也认真看了 GPT-4 的演示,AI 似乎能够自我纠正!只要复制 / 粘贴错误消息,它就能找到并解决问题。


但是……并不是所有幻觉都会引发异常。比如说,我最近用 GPT-4 在 React 上生成了一个〈Modal〉组件,虽然输出非常好,但还是存在一些可访问性错误。创建应用程序的人可能注意不到这些问题,不过最终用户肯定会发现!


还有代码中的安全漏洞呢?一旦引发可怕的错误,该由谁来承担责任?


还有一点:生成一个 50 行的 HTML 文档,跟输出生产就绪的 Web 应用程序之间根本就不是一回事。像博客这样的小型 JS 应用就有大约 6.5 万行代码,总计 900 多个文件。这还不包含写作文本,单是 JavaScript 和 TypeScript 的体量。


也就是说,即使准确率达到 95%,在这样的应用规模下也将很难调试。这相当于一位开发者用几个月时间构建一个巨大的项目,但却从未做过任何代码测试,直到 100% 完成后才加以验证。这不是生产力提升,而是前所未有的噩梦。


AI 不是什么神迹和魔法,它的质量直接取决于训练数据。而代码片段在互联网上随处可见,往往高度通用。相比之下,每个代码库都是独一无二的,网上鲜有大型开源代码库。那么,AI 要如何学会构建能够实际应用的大型项目?


按现在的发展速度看,很快非开发者就可以直接跟聊天机器人对接,轻松启动一个小型独立项目。也就是说,如今的 Webflow 等工具会被 AI 所替代,而且效果更好、功能更强,这绝对是件大好事!


但要让科技大厂们放弃自己的开发队伍,全面选择 AI 工程师?那还有很长的路要走,前面提到的这些潜在问题将严重阻碍这种想象在现实中落地。


增强,而非替


说了这么多,我就明确给出自己的态度吧:我其实非常看好 AI 技术 😅。


我认为最有可能的情况,是 GPT-4 这类工具被整合进开发者工具当中,用来扩大熟练开发者的生产能力。


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


我当然不确定未来的开发者职位总量会不会有所下降;毕竟如果每位开发者的效率都显著提高,那岗位方面的整体需求应该减少才对。


但也不一定。就目前来讲,软件开发者仍处于供不应求的状态。在我工作过的每家公司,大家都有太多想做的事情,只因开发者数量有限而被迫作罢。


那如果开发者的工作效率瞬间提升 2 倍,结果会如何?无疑是修复更多 bug、发布更多功能、赚取更多利润。我们可以开发的东西太多了,根本不存在开发者过剩一说。


我反倒认为,大语言模型的普及会增加开发者的职位总量。


目前,很多企业根本就不雇用软件开发者。我曾在一家名叫 Konrad Group 的公司工作,这是一家专为客户构建 Web 应用程序的企业,客户名单里不乏家喻户晓的大厂。但因为开发成本太高,他们发现与其招聘固定开发人员,还不如把这活儿外包出去。


这些财富五百强公司会根据当前的软件开发成本做核算。这里我们假定一个场景:如果他们需要 4 名开发人员,平均年薪 15 万美元,那每年就是 60 万美元。在这种情况下,他们不如向外包机构支付 50 万美元来搞定这方面需求。但如果大语言模型真能提高开发者的工作效率,他们也许只雇 2 名年薪 15 万美元的开发者就够了。突然之间,原本自己没法做的项目现在可以做了!


我要澄清一下:我不是经济学家,以上案例安全就是随口一说。我不知道未来的情况会不会朝这个方向发展。但我想提醒大家,大语言模型的爆发并不一定会摧毁我们的工作和生活。没人知道未来会向哪里去,而我实在受不了人们言之凿凿地把前景描述得愁云惨淡。


网上不乏与我相同的观点


Aaron Blaise 是一位经验丰富的动画师兼插画家。他在迪士尼工作了近 20 年,曾为《美女与野兽》(1991)、《阿拉丁》(1992)、《风中奇缘》(1995)等经典影片做出贡献。


几周之前,他在 YouTube 上发布了一段视频,题为《迪士尼动画师对 AI 动画的反应》(https://www.youtube.com/watch?v=xm7BwEsdVbQ)。他的观点跟我很像,并不觉得 AI 工具是种威胁,而认为它将提高动画师的生产力并创造出更多动画岗位。


来自几十个行业的艺术家和知识工作者们都在讨论这方面话题,毕竟很多人担心自己的工作会被 GPT-4、DALL-E 2 和 Midjourney 等 AI 工具所吞噬。


GPT-4 能通过模拟律师考试吗?可以,而且得分在人类应试者里能排进前 10%。所以律师们也慌了。


我个人认为,大多数专业人士都能找到将 AI 技术整合进工作流程的办法,借此提高自己的生产力和价值。一部分任务可能被全面委托给 AI,但只是部分任务、而非整个工作。


那如果我是错的,事实证明大语言模型可以全面取代软件开发者,又该怎么办?如果真是这样,那我觉得也不用太担心了,到那时候绝大多数知识工作者都会被“清洗”。


这样一来,我们就算是转行、转专业也没有用,AI 海啸之下将没有安全的高地。所以与其去赌未来会不会朝着最糟糕的方向去,倒不如专注于自己热衷的工作、感兴趣的问题、擅长的方向。


前端开发与其他工程学科


网上有帮家伙,一直在暗示前端开发特别容易被 AI 替代,还建议开发者再精进一步,往后端或数据工程那边努力。


但我的观点恰恰相反。我觉得开发者群体根本就不用担心被淘汰,如果非得说哪部分群体更危险,我倒认为是后端。


OpenAI 的 GPT-4 直播展示了两段与代码相关的内容:


  • “Joke website”前端;

  • 基于 Python 的 Discord 机器人。


在这两个项目中,Python 代码对我来说似乎更接近生产。我最近用 Node.js 构建了一个 Discord 机器人,跟 GPT-4 生成的代码确实差不多。


相比之下,AI 为那个笑话网站生成的基础 HTML 文档,就跟我每天编写的前端代码间相隔十万八千里。


这可能有点以偏概全,但过去十年来,我发现很多复杂性要素已经从服务器转向了客户端。


Monolithic Express 应用程序已经转化为无服务器函数的集合,而我们的前端也从超链接数字文档发展为成熟的桌面质量应用程序。


再有,前端是用户与之交互的产品部分。企业当然希望自己的产品能体现出定制化、独特性和根据品牌形象精心设计等特点。与之对应,后端则完全不可见,所以通用后端要比通用前端更让人易于接受。


用大语言模型辅助学习


我听有些人说,ChatGPT 能帮助大家快速学习技术性技能。如果各位对教程中的某些内容感到困惑,不妨问问神奇的 AI。


这对我来说是个非常有趣的用例。从本质上讲,ChatGPT 就像你的结对程序员,能帮助你了解自己不熟悉的事物。你可以向它提出具体问题,并获取具体答案。


当然,使用过程中也要当心。利用 AI 工具来学习,也有正确的方式与错误的方式之分。


所谓错误的方式,就是把 AI 当作 GPS 导航。当我们打算开车前往某地时,就会把地址输入 GPS,然后不假思索地按它的指示前进。等到了目的地附近时我会把导航关掉,整个过程不做任何思考和评判。结果就是,我的方向感完全萎缩了,现在如果没有合成语音的指示,我根本不知道该往哪里走。😬


与之相对,我们最好把大语言模型当成“被告”,而自己则扮演“陪审团成员”。


你要认真听它在说什么,但不可全盘相信。保持怀疑的态度,以批判的心态考量一字一句。


不可盲目复制 / 粘贴 ChatGPT 生成的代码,而是逐行检查并保证你理解了其中内容。有不清楚的地方要提醒它做出澄清,并配合权威来源(例如官方文档)仔细检查看似可疑的部分。请记住,大语言模型 100% 自信,但却并非 100% 准确。


通过这种方式,相信大语言模型能够创造出前所未有的价值。😄


给各位年轻开发者的忠告


我之所以要写下这篇文章,就是想鼓励各位正在学习 Web 开发、并为大语言模型的爆发式进步压得喘不过气的朋友们。很多人彻底失去了信心,认为随着 AI 技术的继续成熟,自己耗费时间和精力掌握的所有技能将被无情淘汰。


我不敢保证未来一定不会这样。但我对 AI 能够给工作方式带来的影响仍抱怀疑。早在 2007 年,我就开始研究 HTML/CSS/JS,多年以来情况已经发生了很大变化。但开发者们仍然凭借强大的适应性,与技术一同进步、携手为网络世界塑造新的样貌。


到目前为止,我还没看到有切实迹象表明前端开发的工作处于危险之中。我也想象过未受任何专业训练的非开发者,在不了解 Web 技术的情况下会开发出怎样的 Web 应用程序。太多的因素会导致其无法运行了,所以即使 GPT 未来继续保持迭代,大家也没必要过于焦虑。这,又何尝不是另一种“幻觉”。


再次强调,我的观点很可能是错的,毕竟我可没有能预见未来的水晶球🔮。但未来总有不确定性,没准明天太阳就爆炸了,谁知道呢。但我真的很难相信 Web 开发者会被迅速淘汰,反而更担心潜在开发者会因为这种莫须有的可能性而放弃学习。


总之,但愿不要五年之后软件开发者需求更旺之时,大家才感觉后悔、反思当下的自己为什么要停止追求梦想。请继续努力吧,各位同学!❤️


原文链接:


https://www.joshwcomeau.com/blog/the-end-of-frontend-development/

相关阅读:

GPT-4:不了不了,这些我还做不到

3 分钟快速了解 GPT-4

对话 OpenAI Greg Brockman:GPT-4 并不完美,但人类也一样

GPT-4 重磅发布,吊打 ChatGPT!编程能力牛到让我睡不着:10 秒做出一个网站,1 分钟开发一个游戏

2023-04-10 12:434842

评论 1 条评论

发布
用户头像
我不做后端,但我臆想后端更容易被替代。
生产力提升,程序员会做更想做的事情。新需求、能赚钱的新行业有没有不确定,但是企业竞争,旧行业一定会压成本导致失业。
2023-04-11 01:35 · 江苏
回复
没有更多了
发现更多内容

ARTS - 日常打卡 6

pjw

简单好用一键恢复丢失办公文档

淋雨

EasyRecovery 文件恢复 免费恢复软件 硬盘数据恢复

JAVA 面向对象 (十)--接口和抽象类

加百利

Java 后端 笔记 6月日更

十年一剑智能眼镜的中场战事

脑极体

【21-15】PowerShell条件判断

耳东@Erdong

PowerShell 6月日更

OpenCV-Python+Moviepy结合进行视频特效处理

老猿Python

Python 音视频 Video PPT 引航计划

Redis:我是如何与客户端进行通信的

码农参上

redis Redis 协议

网络攻防学习笔记 Day52

穿过生命散发芬芳

网络攻防 6月日更

☕【JVM技术探索】深入分析各种锁(锁膨胀)运作流程

洛神灬殇

JVM 锁升级 6月日更 锁分析

Redis入门四:数据持久化

打工人!

redis redis持久化 6月日更

线性排序

wzh

Java 排序算法 计数排序 基数排序 桶排序

微信小程序开发(七)—— 版本管理的使用

空城机

微信小程序 大前端 6月日更

Kubernetes手记(19)- 容器资源限制

雪雷

k8s 6月日更

数组与链表

wzh

Java 数组 链表 ArrayList 数据结构与算法

Linux之rmdir命令

入门小站

Linux

网络抓包实战01——互联⽹:客户端请求是如何到达服务器的

青春不可负,生活不可欺

Wireshark TCP/IP tcpdump 网络抓包 tcpcopy

批量把Excel数据自动录入系统

木头

自动录入 批量录入 自动填表

HashMap源码总结

wzh

Java map 数据结构与算法 HashMap底层原理 散列表

在线PS(PhotoShop),打开PSD文件,图像处理

入门小站

PhotoShop ps

react源码解析18事件系统

全栈潇晨

React

LinkedHashMap

wzh

Java 集合 LRU 数据结构与算法 LinkedHashMap

Reactive Spring实战 -- 响应式Kafka交互

binecy

kafka spring

业务架构训练营第 0 期模块五作业

菠萝吹雪—Code

架构实战营

微服务架构下的静态数据通用缓存机制

xcbeyond

缓存 微服务 6月日更

领域驱动设计101 - 领域服务

luojiahu

领域驱动设计 DDD

什么是OneData?阿里数据中台实施方法论解读

云祁

数据中台 数据仓库 OneData 维度建模

常见Java容器对比

wzh

Java collection hashmap set map

软件复杂度

海拉鲁

读书笔记 软件工程 软件设计

推荐算法概述(十五)

Databri_AI

算法 倒排索引 推荐系统

Elastic Job简单使用

赵镇

Elastic-job

在线HTML标签清除工具

入门小站

工具

GPT-4预示着前端开发的终结?你准备好面对无法预测的技术挑战了吗?_大前端_InfoQ精选文章