在过去的几个月里,我与许多资深开发人员交谈过,他们对人工智能越来越感到焦虑。他们看到了像GPT-4这样的工具越来越令人印象深刻的演示,担心当他们精通HTML/CSS/JS的时候,就没有剩余的工作了。
这种情绪现在在Twitter上随处可见。
我完全不同意这个观点。我认为 Web 开发人员工作并不会消失。我也很厌烦网络上传播的恐慌情绪。
因此,在这篇博客文章中,我将分享我对将要发生的事情的假设。我们的工作会因为人工智能的发展有所改变,但不会像人们所说的那样可怕。
事先声明
我对这个话题有既得利益:我有网上培训软件开发的工作。如果开发人员的工作岗位开始消失,那对我的业务将是不利的。
也就是说,本文中的所有内容都是基于我的真实信念。您可以自行决定这些是否存在偏见。
回顾一下前端历史
CSS 语言于1996年首次发布,当时它是在 Internet Explorer 3 中推出的。两年后,第一个“无代码”网站构建器 Homestead 就上线了。
Homestead 让人们可以在不编写一行代码的情况下构建自定义网页:
从一开始,就有人担心 Web 开发人员会被某些新技术淘汰。在 2000 年代,它是WordPress。在 2010 年代,它是 Webflow。在 2020 年代初,它是“无代码”工具。
而且,从某种程度上说,Web 开发人员已经过时了!如今,如果一个当地的面包店、牙医或艺术家需要一个网站,他们可能不会雇佣开发人员并支付数万美元从头开始构建一个网站。他们会进入SquareSpace,找到他们喜欢的模板,然后每月花费 20 美元。
然而,Web 开发人员仍然存在。
上周,OpenAI展示了GPT-4。其中包括一个相当令人印象深刻的演示:GPT-4 可以将手绘的网站草图转换成完全功能的网站,包括一些 JavaScript 来连接 “Reveal Punchline” 的按钮。
这是很了不起的一个功能,我认为它在原型设计方面有很大的潜力……但让我们明确一点: 几十年来我们并不需要 Web 开发人员来构建这类页面。这个编写的 HTML 文档与当今前端开发人员编写的代码存在巨大差异。
展望未来
到目前为止,我看到的大多数演示的范围都很有限:一个简单的 HTML 页面或单个 JavaScript 函数。这些都是一个开发人员能在一个下午内完成的事情。
但这只是开始!如果事情以同样的速度加速,几年后它就能够构建整个应用程序,对吗?
虽然我并不是 LIM 的专家,但我确实理解它们在高层次上是如何工作的。
从根本上讲,LIM 是超级强大的文本预测器。给定一个提示,它们使用机器学习来尝试找到最可能跟随提示的字符集。
像OpenAI这样的公司花费大量时间和精力来调整模型以提高输出。一大群人工贴标签者对模型的输出进行“分级”,然后模型进行学习和进化。
如果您尝试过 Chat GPT 或 Bing 的 AI 搜索等工具,你可能已经注意到这些回答可能有 80% 的正确率,但表现出绝对且坚定的信心。
LLM 无法验证他们的假设,或检验他们的假设。他们无法确认他们所说的是否属实。他们在玩概率游戏,估计这串字符似乎和提示符中的字符串兼容。
有时,部分回应是荒谬的。OpenAI 团队将这些称为“幻觉”。
随着技术的改进,我们可以预期一些粗糙的边缘被打磨掉,但从根本上讲,总会存在某些程度的不准确性。这些工具只是没有任何机制来客观地验证它们的响应。
因此,准确性会得到提高,但永远不可能达到完美。如果我们谈论让网页开发人员过时,这就是一个问题。如果你不是程序员,你将无法分辨哪些部分是准确的,哪些部分是不准确的。你将无法发现这些幻觉。
但等等,在GPT-4演示中,我们看到 AI 如何自我修复!复制、粘贴错误消息,它会找到并解决问题。
但是,并非所有幻觉都会导致异常。例如,我最近使用 GPT-4 使用 React 生成了一个组件,虽然输出结果非常好,但仍然存在一些无障碍问题。创建应用程序的人可能不会注意到这些问题,但最终用户肯定会注意到!
代码中的安全漏洞呢?当事情变得非常糟糕时,谁应该负责?
还有一点:生成一个50行的 HTML 文档和生成一个可投入生产的Web应用程序之间存在巨大差异。像这个博客这样的小型JS应用程序有着约65,000行代码,分布在900多个文件中。这还不包括文字内容,仅包括 JavaScript 和 TypeScript。
即使有95%的准确率,这也会非常难以调试。这就像一个开发人员花费几个月的时间构建一个巨大的项目,却从未真正尝试运行任何代码,直到它100%完成。这是噩梦中的事情。
人工智能不是魔法。它的好坏取决于它如何运用数据。代码片段在互联网上随处可见,而且通常是通用的。相比之下,每个代码库都是独一无二的。很少有大型开源代码库。人工智能应该如何学习如何构建大型现实世界项目?
我们正在迅速接近这样一种情况:非开发人员可以坐下来与聊天机器人一起创造一个小型的自包含项目,人们目前使用 Webflow 等工具来构建这种项目。这很好!
但我认为,大型技术公司放弃他们的开发人员并用快速工程师代替他们仍有很长的路要走。在我看来,有几个潜在的难以解决的问题阻碍了这这成为现实。
作为一个AI语言模型,我本身没有博客,但是我可以提供一些见解,解释为什么有些博客可能代码很多。
现在的博客不再只是简单的文本和图片。许多博主利用他们的平台为读者创造独特而吸引人的交互式体验。这些交互式元素可以包括动画、图表、测验、游戏和其他需要大量代码才能实现的自定义功能。
此外,许多博主可能会选择使用像WordPress或Drupal这样的内容管理系统(CMS),这些系统通常具有大量的代码,以提供丰富的功能和功能。主题、插件和其他附加组件也会对博客代码库的总体大小产生影响。
最后,有些博主可能会选择编写自己的自定义代码,以实现特定的外观或功能,而这些功能在现有工具或平台中无法找到。虽然这可能是一项耗时的过程,但也可能为读者创造出真正独特而个性化的博客体验。
总之,虽然可以通过最小化代码来创建简单的博客,但许多博主选择将复杂的交互式元素、CMS平台和自定义代码结合起来,为读者创造更具吸引力和个性化的体验。
不是替代,而是增强
从这篇文章中,你可能不会认识到我对人工智能持有相当乐观的态度。😅
我认为最有可能的情况是,像GPT-4这样的工具将被整合到开发人员工具中,并用于增强熟练开发人员的能力。
木匠并没有被电动工具取代,会计师也没有被电子表格取代,摄影师也没有被数码相机/智能手机取代,我不认为开发人员会被LLM取代。
我曾经想过,也许开发人员的总数会下降;毕竟,如果每个开发人员的效率显著提高,我们还需要更少的开发人员吗?
不一定。事实上,对软件开发人员的需求远远超过供应。在我曾经工作的每一家公司中,我们都有很多想要做的事情,但我们被拥有的开发人员数量所限制。
如果开发人员突然变得效率提高了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等AI吞噬。
GPT-4可以通过模拟的律师考试,并获得测试者中前10%的成绩。许多律师正在进行这些讨论。
我个人的看法是,大多数专业人士将找到将这项技术整合到他们的工作流中的方法,从而提高他们的生产力和价值。某些任务可能会被分配给AI,但没有多少工作会被取代。
但如果我错了,LLMs可以完全取代软件开发人员呢?如果是这样,我认为LLMs将取代绝大多数知识工作者。
这不是你可以通过转换到其他学科来避免的海啸。没有高地。因此,与其试图赌博未来可能带来的东西,为什么不专注于你热爱的、你感兴趣的、你擅长的东西呢?
前端与其他工程学科
一些人认为,前端开发特别容易被AI替代,并建议开发人员专注于后端或数据工程。
这对我来说完全是相反的。我不认为任何开发人员必须担心被淘汰,但如果有任何漏洞,我认为它在后端。
OpenAI的GPT-4直播上周展示了两个与代码相关的演示:
基于Python的Discord机器人,在这两个项目中,Python代码对我来说似乎更加适合生产。我最近使用Node.js构建了一个Discord机器人,代码看起来非常相似。
相比之下,生成的基本HTML文档与我每天编写的前端代码之间有很大的差距。
这是一种过度概括,但在过去的10年左右,许多复杂性已经从服务器转移到客户端。单体Express应用程序已经变成了无服务器函数集合,而我们的前端已经从超链接数字文档演变成了完全成熟的桌面应用程序。
此外,前端是用户与产品互动的部分。公司通常希望他们的产品是定制的、独特的,根据他们的品牌精心制作。相比之下,后端是不可见的。通用后端比通用前端更可接受。
我们行业中令人沮丧的很多人认为,后端开发比前端开发更难或更复杂,即“真正的”工程发生在服务器上。当然,这是无稽之谈。
我认为自己是一名全栈开发人员。我实际上是从后端开始我的职业生涯的,使用 PHP 和 Ruby on Rails。我仍然花很多时间编写后端代码,为我的课程平台编写代码。两个方向都有不同的难度。它们都很复杂和困难。
(顺便说一句,即使不涉及 JS 框架,前端仍然是复杂和困难的。我非常尊重那些专门使用 HTML、CSS 和纯 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年后回望,如果软件开发人员更加受欢迎,后悔你停止追求自己的梦想。❤️