过去的几个月里,我和很多职业初期的开发者交流过,他们对人工智能越来越感到焦虑。他们看到了像GPT-4这样的工具越来越令人印象深刻的演示,担心当他们熟练掌握HTML/CSS/JS时,已经没有工作机会留给他们了。
目前,Twitter上到处都是这种情绪:
我不同意这种观点。我认为网页开发者的工作岗位并不会消失。而且,我对网络上散播的恐惧、不确定和怀疑感到非常厌烦。
事情确实会发生改变,但不是像人们说的那种可怕的方式。
利益相关
我应该指出,我对这个话题有既得利益:我在网上教授软件开发。如果开发者的工作岗位开始消失,那对我的生意来说将是不利的。
尽管如此,这篇博客文章中的所有内容都是基于我的真实观点。你可以自己判断这些观点是否带有偏见。
让我们回顾一下
重复发生的故事 CSS 语言首次发布于1996年,出现在Internet Explorer 3中。两年内,第一个“无代码”网站构建工具Homestead就发布了。
CSS语言首次发布于1996年,适用于Internet Explorer 3。两年后,第一个“无代码”网站构建器Homestead面世。
Homestead使人们可以在不编写任何代码的情况下构建自定义网页:
20多年前的网站构建软件截图 基本上从一开始,人们就担心网站开发人员会被某种新技术取代。在2000年代,它是WordPress。在2010年代,它是Webflow。在2020年代初,它是“无代码”工具。
从某种程度上说,网站开发人员确实已经被淘汰了!如今,如果一个当地的面包店、牙医或艺术家需要一个网站,他们可能不会雇佣一名开发人员并支付数万美元来从头开始构建。他们会跳到SquareSpace,找到一个他们喜欢的模板,然后花费20美元/月。
然而,网站开发人员仍然存在。
上周,OpenAI展示了GPT-4制作网页。这个展示相当令人印象深刻:GPT-4可以将手绘的网站草图转换成完全功能的网站,甚至包括一点JS来连接“显示笑话”的按钮。
显示笑话的网站草图和相应的HTML网站 这确实非常了不起,我认为它在原型设计方面具有很大的潜力……但我们要明确一点:几十年来,我们都不需要网站开发人员来构建这类页面。这个HTML文档与如今前端开发人员编写的代码有着巨大的不同。
展望未来
迄今为止,我看到的大部分演示范围都相当有限:一个简单的HTML页面或一个单独的JavaScript函数。这些是一个开发人员在一个下午就可以完成的事情。
但这还只是初期阶段!如果事情继续以相同的速度发展,几年内它就能构建整个应用程序了,对吧?
我对LLM(大型语言模型)如GPT-4了解不多,但我确实在较高层次上理解它们的工作原理。
从根本上说,LLM是超强大的文本预测器。给定一个提示,它们会使用机器学习尝试找出跟随提示最可能出现的一组字符。
像OpenAI这样的公司花费大量时间和精力调整模型以改进输出。大量的人类标注者对模型的输出进行“评分”,模型从中学习和演变。
如果你尝试过像Chat GPT或Bing的AI支持搜索这样的工具,你可能已经注意到,回应可能有80%是正确的,但它们都是带着绝对和不可动摇的信心说出来的。
LLM无法验证它们的假设或测试假设。它们无法确认所说的内容是否正确。它们在玩概率游戏,估计这一串字符似乎与提示中的字符串相符。
有时,回应的部分内容是无意义的。OpenAI团队将其称为“幻觉”。
随着技术的改进,我们可以期待一些粗糙的边缘被打磨平滑,但从根本上说,总会有一定程度的不准确性。这些工具根本没有任何客观验证回应的机制。
因此,准确性会得到改善,但永远不会完美。如果我们谈论让网站开发人员过时,这是个问题。如果你不是程序员,你无法判断哪些部分是准确的。你无法发现错误。
然而,在GPT-4演示中,我们看到AI是如何修复自己的!复制/粘贴错误消息,它会找到并修复问题。
但是,不是所有的幻觉都会导致异常。例如,我最近使用GPT-4生成了一个使用React的<Modal>组件,尽管输出令人惊讶地好,但它仍然犯了一些可访问性错误。创建应用程序的人可能不会注意到这些问题,但最终用户肯定会注意到!
关于代码中的安全漏洞,当事情变得非常糟糕时,谁应该承担责任?
生成一个50行的HTML文档与输出一个生产就绪的Web应用程序之间存在巨大的差异。像这个博客这样的小型JS应用程序大约有65k行代码,分布在900多个文件中。这还不包括编写的内容,仅包括JavaScript和TypeScript。
即使准确率达到95%,调试也将非常困难。这就像开发人员花费数月时间构建一个庞大的项目,却从未真正尝试运行任何代码,直到项目100%完成。这简直是噩梦。
AI并非魔法。它的能力仅取决于其训练数据。互联网上到处都是代码片段,通常是通用的。相比之下,每个代码库都是独一无二的。很少有大型开源代码库。AI如何学会构建大型现实世界的项目呢?
我们很快就会达到这样一个地步:非开发人员可以和聊天机器人一起完成一个小型独立项目,这是人们目前使用像Webflow这样的工具来构建的东西。这太棒了!
但是我认为,大型科技公司还需要很长时间才能放弃他们的开发人员并用提示工程师取代他们。在我看来,有几个可能无法解决的问题阻碍了这一现实的实现。
辅助而非取代
从这篇文章来看,你可能不知道我其实对AI相当乐观。😅
我认为最有可能的情况是,像GPT-4这样的工具会整合到开发者工具中,并用来提升熟练开发者的能力。
木匠没有被电动工具取代,会计师没有被电子表格取代,摄影师没有被数码相机/智能手机*取代,我也不认为开发者会被大型语言模型(LLMs)取代。
我确实曾经担忧过开发者的工作总量是否会减少;毕竟,如果每个开发者的效率大幅提高,我们是不是就需要更少的开发者呢?
不一定。现状是,软件开发者的需求远大于供应。在我工作过的每家公司,我们都有很多想做的事情,但都受到了开发者数量的限制。
如果开发者突然变得更加高效,会发生什么呢?修复的漏洞会更多,发布的功能会更多,盈利也会更多。我们需要构建的东西从来不缺,所以我们不会因为开发者们无事可做而裁员。
我实际上认为这可能会增加开发者的总工作数量。
如今,有很多公司根本不雇佣软件开发人员。我曾在一家名为Konrad Group的公司工作,这家公司为其他公司(其中很多都是家喻户晓的品牌)构建Web应用程序。由于开发成本如此之高,他们更倾向于将开发需求外包,而不是自己雇佣开发人员。
那些财富500强公司是根据当前软件开发成本进行计算的。让我们举个例子:假设他们需要4名开发者,每人年薪15万美元,总计60万美元。对他们来说,支付50万美元给代理公司帮助他们管理这些需求更合理。但是,如果大型语言模型真的能提高开发者的生产力,他们可能只需要雇佣2名开发者,每人年薪15万美元,就能完成同样的工作。突然之间,这个算法变得更有吸引力了!
请允许我澄清一下:我不是经济学家,这些都只是猜测。我并不是说我知道事情会真的以这种方式发展。我想说的是,这并不意味着对我们来说结局一定是坏的。没有人知道事情会如何发展,我有点厌倦那些把最坏情况当作既成事实的人。
我并非唯一在讨论这个问题的人
艾伦·布莱斯(Aaron Blaise)是一位资深动画师和插画师。他曾在迪士尼工作了近20年,为《美女与野兽》(1991年)、《阿拉丁》(1992年)、《风中奇缘》(1995年)等经典迪士尼电影做出了贡献。
几周前,他在YouTube上发布了一个视频:迪士尼动画师对AI动画的反应。在阅读了这篇博客文章后,你会发现他的观点与你们的类似:他并不认为这些工具是威胁,而是认为它们会提高动画师的生产力,并带来更多的动画师工作。
现在,数十个行业的艺术家和知识工作者都在进行同样的讨论。人们担心他们的工作即将被GPT-4、DALL-E 2和Midjourney等AI取代。
GPT-4可以通过模拟律师资格考试,成绩在考生前10%之列。许多律师也在进行这些完全相同的讨论。
我个人的信念是,在很大程度上,职业人士会找到将这项技术整合到他们的工作流程中的方法,从而提高他们的生产力和价值。某些任务可能会交给AI,但不会有很多工作被取代。
但是,如果我错了,事实证明大型语言模型确实可以完全取代软件开发人员呢?如果是这样的话,我怀疑大型语言模型将取代绝大多数知识工作者。
这种变革不是你通过转向不同领域就能避免的。没有更高的避难之地。因此,与其试图猜测未来可能带来什么,为什么不专注于你所热爱的、感兴趣的、擅长的事情呢?
前端与其他工程学科的对比
网上有些人认为前端开发特别容易被AI取代,并建议开发人员转向后端或数据工程领域。
在我看来,这种想法完全是颠倒的。我不认为任何开发人员需要担心被淘汰,但如果存在任何脆弱性,我认为它在后端。
上周OpenAI的GPT-4直播展示了两个与代码相关的演示:
- “笑话网站”前端
- 基于Python的Discord机器人
在这两个项目中,Python代码在我看来似乎更适合生产环境。我最近用Node.js构建了一个Discord机器人,代码看起来相当相似。
相比之下,生成的笑话网站的基本HTML文档与我每天编写的前端代码相差甚远。
这是一个过于泛化的说法,但在过去的10年左右的时间里,许多复杂性已经从服务器转移到了客户端。庞大的Express应用程序已经变成了无服务器功能的集合,而我们的前端已经从超链接的数字文档发展成为全功能的桌面质量应用程序。
另外,前端是用户与之互动的产品部分。公司通常希望他们的产品是定制的、独特的,根据他们的品牌精心打造。相比之下,后端是看不见的。一个通用的后端比通用的前端更容易被接受。
令人沮丧的是,我们行业中有很多人认为后端开发比前端开发更难、更复杂,认为“真正”的工程发生在服务器上。这当然是胡说八道。
我认为自己是一名全栈开发人员。实际上,我是从后端开始我的职业生涯的,使用PHP和Ruby on Rails。我现在还花很大一部分时间编写后端代码,为我的课程平台编写。堆栈的两边都以不同的方式具有难度。它们都很复杂,很难。
(顺便说一句,即使在不涉及JS框架的情况下,前端仍然很复杂、很难。我非常尊重那些专门用HTML、CSS和原生JS制作高质量网站的人,他们关注可用性和可访问性。而且我认为他们不会很快被AI取代。)
使用 LLMs 来帮助你学习
LLMs 是“大型语言模型”的缩写
我从一些人那里听说,ChatGPT在学习技术技能方面非常有帮助。如果你在教程中对某个部分感到困惑,你可以请AI为你解释!
这对我来说是一个非常有趣的用例。从本质上讲,ChatGPT就像一个编程伙伴,可以帮助你理解你不懂的东西。你可以向它提出具体问题并获得具体答案。
但我认为你需要小心。在使用这类工具来帮助你学习时,有正确的方法和错误的方法。
错误的方法是把它当作GPS导航。当我需要开车去某个地方时,我会把地址输入我的GPS,然后毫无选择地遵循它的指示。通常情况下,我确实会到达目的地,但这对我来说几乎不需要费任何脑力。结果,我的方向感完全消失了。现在我去任何地方都需要一个合成的声音告诉我该做什么。😬
与其把它当作GPS,我建议把它当作你是陪审团的一员,而LLM是被告,站在证人席上。
你会听取他们的陈述,但不会接受它为事实。你会保持怀疑态度,对每个词都进行批判性思考。
不要盲目地复制/粘贴ChatGPT生成的代码,而要逐行检查,确保你理解。向它要求澄清。对于看起来可疑的东西,用权威来源(例如官方文档)进行核实。请记住,LLMs是100%自信的,但不是100%准确的。
如果你遵循这个策略,我认为LLMs可以提供很多价值。😄
致有抱负的开发者们
我写这篇博客的原因是想特别针对那些正在学习web开发并感到焦虑和沮丧的人,他们觉得在整个领域即将被淘汰的时候,花费大量时间和精力去掌握这些技能是没有意义的。
我不能保证事情会保持完全不变。我确实怀疑AI会对我们的工作方式产生影响。我从2007年开始尝试使用HTML/CSS/JS,从那时起,事情发生了很大变化。开发者一直需要适应变化,与技术共同进化。
但到目前为止,我看到的一切都没有表明我们的工作岗位面临风险。我试图想象一下,如果非开发者在不了解web技术的情况下能够构建整个web应用程序,即使未来的GPT不再产生那么多的错觉,这样的情况是行不通的。
我可能是错的。我没有水晶球🔮。就我所知,太阳也许明天就会爆炸。但我真的不相信我们正处在web开发者即将被淘汰的边缘。我担心许多潜在的开发者因为没有理由而放慢了学习的脚步。
我不希望你在5年后回顾,如果软件开发者的需求更加旺盛时,后悔你放弃了追求你的梦想。❤️