1、为什么说 “xx si了” ?
年后的这段时间,MM
上最火的的话题莫过于 “XX已死” 了吧,今天这个岗位si,明天又轮到下一个,周而复始.....我觉得主要有以下的几个原因吧:
- 后YQ时代的大环境(监管走严以及政策的脱虚向实),导致整个行业的用工需求萎缩;
- 仍在高位的毕业生数量,导致的僧多粥少的格局;
- 以
chatGPT
为代表的人工智能的突然爆发,导致被机器取代的焦虑在逐渐蔓延; - 前端生态已趋于完善,三大框架鼎足而立,开发范式已基本稳定。而且也已多年未出现真正具有挑战三大框架地位的新玩意了,大家也卷不起来了,无非就是去卷工具了,各种
Go
、Rust
重写的前端工具;
特别是在前几天 GPT-4
那个令人印象很深刻的demo:GPT-4
可以将网站的手绘草图变成功能齐全的网站,包括用一些 JS
来写 “Reveal Punchline”
按钮。
我想大多人看了之后的第一感觉都是:WTF!!?这么NB的吗,这样都可以,那还要我一个切图仔作甚??不止国内,国外也是一片哀嚎:
问题是大家平时都是开发这种“高级”页面?这种事情早在十几年前就有工具干过了,还记得吗?就是曾经的网页开发神器 —— Dreamweaver
,只不过,它现在加了一个图像识别的玩意又吓了你一次。实际上,几乎从很早开始,就有人担心 Web 开发人员会被某些新技术淘汰。在 2000 年代,它是 WordPress。在 2010 年代,它是 Webflow。在 2020 年代初期,它是“无代码”、“低代码”工具。
2、为什么说 "xx 不会si" ?
先来看看最近两天很火的:
就这,恐怕连设计师都还取代不了!
难怪有人说,文心一言和chatGPT最大的区别是,文心一言是人工,chatGPT是智能。我真是笑不活了!
PS:哈哈,开个玩笑哈!虽然不完美,但人家 BD 有勇气扛起这面旗帜,起码架子已经搭起来了,点赞!
如果说永远不会si,绝对了点,那至少可以肯定的是短期内还si不了。为什么这么说呢?我的思考主要有以下几点:
2.1 数据的准确性
至少到目前为止,我们看到的大多数 demo
所演示的范围都很有限:一个简单的 HTML 页面,或者一个 JavaScript 函数,这些我们本来就可以通过搜索引擎去干的事情,只不过效率上比 chatGPT
慢一点而已。但实际上,如果你真的有经常使用 chatGPT
,你会发现,它其实并不是每次都能给到你想要的答案,而且偶尔还是错误的答案。所以,它本身就有一个致命的问题:准确率!
ChatGPT 是一个大规模的语言模型,不断地训练以提高响应的准确性。然而,由于这是一项全新的技术,该模型尚未经过充分的训练。因此,人工智能聊天机器人可能会提供错误的答案。正因为如此,StackOverflow 禁止了 ChatGPT,并表示:“总的来说,由于从 ChatGPT 获得正确答案的平均比率太低,发布由 ChatGPT 生成的答案对我们的网站以及询问或搜索正确答案的用户来说是非常有害的。”
其实这背后的逻辑并不难理解,chatGPT
所训练的数据来源于互联网,它目前还具备自我生成、左右手互博的能力,也就意味着,答案的最终来源仍然是网页背后千千万万的开发者。如果他们被一瞬间干掉了,chatGPT
的数据从哪来?答案的保真度、新鲜度从何而来?你敢说 2 年、3年、5年后的React写法、功能和现在一样?还有那千千万万不断迭代的 npm 包!
更有甚的可能会是一些严重的社会民生问题,比如,你司的医疗APP接入 chatGPT
,作为24小时人工智能客服机器人给病人问诊开药,你能保证机器人不会将感冒错误地诊断为XinGuan?你能保证机器人不会给病人开错药?
因此,准确性可能会逐渐提高,但永远不会完美,因为互联网上的数据本身准确性就非常有问题。在庞大的用户群面前,哪怕一两个典型的事件就足可能杀死一家公司,更别说几十上百件。
2.2 代码调试
准确率的问题必然就带来另一个更重要的问题:调试~ 没几个人敢说他的代码是不需要经过调试、测试、联调,一把搜哈就可以直接上生产的。
在你充分给足问题上下文的前提下,你让 chatGPT
生成一个几十行的代码 snippet
,它大多数情况下会给你一个不需要太多修改的答案。但是,这和吐出一个可以直接上生产的 Web 应用程序之间还是存在比较大的差异的。
特别是当我们的工程比较复杂,变得比较大之后,各种问题就来了,哪怕你 chatGPT
的准确率高达98%,在巨大的代码量和文件相互之间复杂引用关系的情况下,问题代码的数量不可小觑,依然需要经验丰富的工程师来调试。
2.3 新需求
大家日常开发中,大多数的需求应该还是可以闭着眼就能完成的,毕竟谁还不会 CV 大法
呢,你说是吧?找个类似的页面,扣过来一顿魔改,run 出去,done!
但是!某一天,产品说,市场那边反馈了,我们需要做一个新功能:做一个会根据手机壳颜色而改变主题颜色的APP!
于是,你把这一句话需求输入到 chatGPT
,满心欢喜地等待答案:
代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Change Theme Color Based on Phone Case</title> <style> :root { --color-theme: #333; /* default theme color */ } body { background-color: var(--color-theme); color: white; } .button { background-color: var(--color-theme); color: white; padding: 1rem; border-radius: 0.5rem; text-align: center; } </style> </head> <body> <h1>Change Theme Color Based on Phone Case</h1> <p>This app will change its theme color based on the color of your phone case!</p> <button class="button">Click me!</button> <script> // Detect phone case color and set it as theme color var phoneCaseColor = "red"; // Replace with code to detect phone case color document.documentElement.style.setProperty('--color-theme', phoneCaseColor); </script> </body> </html>
干!你跟我说啥呢,就这么简单?刚刚跟产品那一架白打了?!显然,这种玩具代码是上不了生产的!光就这一点,它短时间内就干不掉开发!
2.4 沟通需要人
在流程比较规范的公司待过的同学应该都知道,一个软件或者说程序的开发通常都不只有开发,大致的流程:
- 调研(需求收集)
- 项目立项
- 需求整理(出PRD)
- UI、UE
- RD、QA、UE、UI做需求评审
- RD做架构设计、技术调研,UE做交互设计、QA做测试用例
- RD、UE、UI、QA评审,排期
- 开发、联调、测试
- 产品验收
- 上线准备
- 灰度
- 上线
- ...
至少从第5点开始,就需要开发深度参与了,这些过程通常都是需要做大量的有效沟通和协调,才能保证程序可以在deadline
之前上线。而且有些时候,需要靠经验、sense、默契才能保证产品在上线后不出大问题。
coding
只是其中一小环,工程师需要深入了解业务需求和做深入的技术调研和预研,才能决定要编写什么样的代码,或者是否需要编写怎样的代码!
从 AI
获得正确的回答还需要你知道要怎么问问题,问什么问题。AI 不会深入考虑你的环境、基础设施和一些定制化的需求,因为这是人的专利。
2.5 国外网友怎么看
美版知乎 Quora 上有一个问题:Will ChatGPT replace programmers? - Quora,我看绝大多数人对此还是持保留态度的。
我截取几段比较有代表性的回复供大家参考:
3、chatGPT 会怎样改变我们?
我认为主要会在以下几个方面改变我们:
- 改进/重构/简化现有代码:使用
ChatGPT
改进、重构甚至简化现有代码。 - 将代码从一种语言翻译成另一种语言:例如,你可以要求
ChatGPT
将代码从python
翻译成javascript
或者go
。 - 写测试:让
ChatGPT
帮你测试一个功能,它会帮你写测试用例。 - 探索替代方案:
ChatGPT
非常擅长建议替代实施方案,尽管有时答案并不那么完美,改改也是能用的。 - 编写文档:
ChatGPT
可以为小块代码编写文档。 - 查找错误:如果您认为自己的代码中存在错误并且找不到它,
ChatGPT
可能会有所帮助。
3.1 赋能而不是取代
木匠没有被电动工具取代,会计师没有被Excel取代,摄影师没有被数码相机和智能手机取代,而且我认为开发人员不会被 chatGPT
们取代。
我认为最有可能的情况是像 GPT-4
这样的工具会被集成到开发者使用的工具中,并被用来赋能开发人员,让他们从一些低质量、重复性的工作者解脱出来,去做一些更有价值的工作。ChatGPT
不太可能取代程序员。虽然 ChatGPT
是一种强大的 AI 语言模型,已经在大量文本数据上进行了训练,但它不具备编程或开发软件的能力。
编程需要一套独特的技能,例如逻辑、解决问题和对编程语言的理解,而这些是 ChatGPT
所不具备的。虽然它可以帮助程序员完成代码生成等任务,但它不能完全取代人类程序员所拥有的创造力、解决问题和批判性思维的能力。程序员在软件、网站和其他技术产品的开发中发挥着关键作用,他们的专业知识对于设计和创建这些产品至关重要。
还有一种观点是,那我们可能不需要那么多程序员了。我觉得也不一定,取决于经济社会的发展情况,如果 chatGPT
真的引发一场新的科技革命,不知道有多少应用或者说服务将被重写,又有多少新的需求将被催生,替代程序员又从何谈起呢。
而且另一个问题是,随着老龄化、少子化的情况越发严重,未来一二十年,劳动力数量将逐渐摸峰然后往下掉。说不定,等你60岁的时候,还会强制让你爬起来再卷5年!!哈哈
3.2 初级程序员可能有点危险
如果你的工作是可以自动化可以做的事情,或者只是编写复杂性很小或没有复杂性的基本代码块,那么你可能比较危险了。特别是那种入行只是为了混口饭吃,工作之外的时间没啥补充和提升的开发,可能随着时间的推移就温水煮青蛙了。
如果你还停留在 “前端三板斧(html、css、js)” 的年代,我劝你去看看其他的致富之路吧。随着工具的日渐智能,低端的切图工作会被替代掉,可能这时候公司会要求你不止会前端,还要求你能写点 CRUD
,会搭 CI/CD
、DevOps
等,还有大量新兴技术、库和框架的出现,各个领域肯定会朝着新的开发规范转变,这时候如果你还只是个初级的工程师,大概率是只能喝汤了。
ChatGTP
等基于人工智能的工具还处于起步阶段,但你必须意识到,许多初级水平的技术人员可能无法与高级软件开发人员和人工智能工具的组合竞争,以前雇佣初级开发可能是拿来完成一些技术含量低、重复性的工作,现在有了人工智能这么好的辅助,也就不需要初级开发了,这可能才是我们必须要意识到的问题。
4、结语
虽然在短期内,ChatGPT
将使开发人员能够更快地完成开发工作,而不是取代他们。但技术的发展日新月异,很难想象 ChatGPT
及其他的大模型在 10 到 20 年后会是什么样子。也许在 10 到 20 年内,人工智能系统将使非程序员的人使用自然语言指令进行日常的开发,那可能就真的是一个 “人人都是全干工程师” 的世界了!
谁知道呢?哈哈,只能说尽可能提升自己吧,技多不压身,这句话放哪个时代都是至理名言!!!
我目前是这么看的,不知道大家什么看法,评论区留言!
end~