ChatWord是否会造成大范围的编程职业失业?

ChatWord是否会造成大范围的编程职业失业?,第1张

这话题最近是真的火,看了很多博主说的,什么让它考SAT可以击败60%的真人考生,让它做LeetCode 上hard难度的题目,7~8成题目都能做对,自动给你敲出代码只需要10~20秒...又看了一下知乎里,各帖子争论激烈,什么样的观点都有,但关键点几乎都没提到:

某项技术是否需要“完全取代某职业100%的工作内容”,才能说它会导致某职业失业?

我再换句话来问,下面的情景能否得出“底层程序员会失业”的假设?

如果ChatGPT使底层程序员的敲代码效率提高100%,但程序员的工作中仍有1/3是ChatGPT完全干不了的,可以得出以下任一预测吗?

任何一个程序员都不会因此失业?

只有极少数程序员会因此失业?

做过老板,扛过预算,负责过阿米巴或事业群绩效,就会明白:

以上2种预测都是错的,一定比例(≥20%)的程序员被辞退几乎是必然的!

因为虽然岗位职责没有被100%替代,但如果还用眼下这些人,去完成原定工作量的任务,人效必然严重不划算!

在2/3(1-1/3)的工作能被ChatGPT赋能后提高1倍效率的情况下,也就是每个程序员可以比原来多产出1/3的工作产出。

假设公司100个程序员,每人负责100个单位的工作量,一共就是10000个单位的工作量,其中的10000*2/3≈6667的部分中有,我用原来一半的人力不就可以完成?

虽然由于前1/3的部分与ChatGPT无关,因此于等于3333的工作量还得靠原班人马完成,但我留下个70~80个人,把这些人员原本用于后2/3工作的、被ChatGPT优化出来的时间,拼拼凑凑用来完成之前100个人做的前1/3工作,不就行了?

说到这,不用细算,我想你应该已经感觉到了,实际职场是如何看待和使用劳动力的,也基本目标了所谓技术和生产力革命是怎么“一步步”颠覆某些职业的了。

从来就不是一蹴而就,一夜之间就宣布某些技术横空出世,能100%取代某个职业,而是如上述那样,看似不过“小刀割肉”(很多楼层说的“内行完全看不上!”),实则已是“大步流星”,每年能提高工作效率15%,5年就是100%,就可能有10%~30%甚至更多人要面临失业。

也要理解,这里的很多答主其实都不是本问题提到的“底层程序员”,能说出“ChatGPT能编写的代码根本不够看的!”的基本都没从“底层程序员”角度出发。

底层程序员占到了当下整个程序员职业群体中的半数以上,从某个非全日制培训机构学习个半年大半年的,会个mysql、python就可以找到工作的!

有没有可能,这种如果5年后还100%没被影响到,或者换句话说,社会对这类底层程序员的总需求相比现在还没有明显下降?

有!可能是黑天鹅中的黑天鹅!小概率中的小概率!

其实程序员的职场就业下行趋势早就有迹象了,这是科技和生产力进步之下必然的,并不只是ChatGPT或别的什么造成的,现在国内几遍没有ChatGPT,程序员在劳动力市场的供需关系早就在持续失衡了:

之前我在写新书(书于21年8月出版)的时候已经写到过计算机程序员相关的分析,贴在这里供参考(强调一下,这是2021年3月写的,出版书籍大家都能找到,不是我说几月写的就是几月写的,不需要互联网的记忆):

现状:计算机编程人才供给与企业需求的2:1错配

差不多从十多年前开始,随着计算机硬件时代“落幕”和互联网时代的加速发展,“学编程”开始越来越多得进入大众视野。似乎学完编程,成为一名程序员,就能与进入中关村互联网大厂拿两三万的起薪,而所需付出的代价貌似也就是发量少、头冷和996。

这当然是玩笑话,但2020年底有媒体报道,据调研统计分析显示,目前全国各类教育机构每培养出一名“合格的程序员”,能匹配的市场用人需求仅有半个。什么概念?就是人才的供需关系已达2:1错配!也就是每两个应聘程序员的求职者中只有一人最终可以找到工作!

这样的调查数据到底出自何处,准确性如何其实根本不是重点,但凡询问任何一个相关行业从业多年的资深人士该对该新闻的评价,都能得到几乎一致的认同。我们根据大量访谈了解到,不扩张的说目前全国号称具备程序员工作能力的人数在5000万以上,但这其中差不多有大几百万只掌握基础的python,大几百万只写过VB,有不少仅仅在各类在线网校里学过几个月,全都号称“合格码农”,但事实上,我们不能说他们不合格,但也绝不意味着“会编程”就能找到“编程工作”!

写本节的目的不是要偏激地告诉大家,现在学编程已经很难找到工作了,而恰恰相反,事实上,只要你学些编程,更多的情况是,类似第三节第三小节提到的商业分析一样,降低要求后找个编程工作依然难度不大,问题是在“预期”上,理想与现实的落差过大,导致最终大量找不到“预期中高薪”码农工作的求职者高不成低不就,对自身的工作不满意,对个人的职业发展也很难如意。

所以说编程类职业劳动力市场的“高端紧缺、中低端过剩”才是该行业的真实写照,而2:1错配也很好理解,假设每100个“合格码农”中只有5个高端码农,95个中低端码农,但却有50个中低端码农和这5个高端码农一起去应聘只有20个名额的高端编程岗位,结果自然就是每2个里边就有1个找不到工作,而大企业却依旧在那日日招、月月招高端编程人才。

我们根据职场发展通路和能力水平,把程序员分成如下四个等级:

普通开发者

熟练开发者、高级开发工程师、技术组长

技术专家、架构师、一线经理

科学家、首席(资深)架构师、部门研发总监

今天这篇文章,我们来讨论普通开发者如何进阶为熟练开发者。

我们会先定义普通开发者应该达到的能力水平,然后再介绍他应该在哪方面提升才可能进到下一个阶段。

普通开发者的能力水平

先看我经常提到的一张图——技术成长阶段图:

普通开发者处在第一个成长阶段:专项能力提升。

专项能力提升阶段是初级阶段,你为了搞定事情,必须先具备某些基础能力,比如某种编程语言(Java / C++/ Python / JavaScript 等)、某个IDE (Visual Studio / Qt Creator / Android Studio / Eclipse / WebStorm 等)、某种技术框架(Netty / Qt / SSH / MyBatis / AngularJS 等)。

这个阶段最重要的就是提升专项能力,让自己能够迅速搞定一些别人安排给你的事情,体现出你的价值。

在这个阶段,最起码达到下列水准:

能理解并完成别人分解好的叶子任务

能自己完成一个功能模块的开发

以前端开发者为例,在这个阶段,你必须能将从 UI 过来的某个页面原型转换为可运行、可 *** 作的真实 Web 页面。比如登录页面、比如商品详情展示页面,要能做到实现可视化页面和业务逻辑跳转。

以 Android App 开发者为例,在这个阶段,你必须能搞定类似登录、支付等这类功能。以 App 的登录功能为例,你要能使用特定的布局和组件实现自适应的登录界面,还要能学习使用类似微信、微博等第三方账户的 SDK ,实现第三方账户登录。

你可能很难自己设计一套完整的登录功能(包含口令加密、单点登录、Cookie 使用、验证码、密码找回、第三方登录、多终端同步、角色鉴权、用户数据存储等),但是当熟练开发者或者高级开发者完成了设计,把某个小功能分配给你的时候,你要能够理解这个设计,并将这个设计实现出来,和整个登录系统整合在一起,能够正常运转。

当你能够搞定这些事情的时候,你的专项技术水平起码是这样的:

能熟练搭建需要的开发和测试环境

熟悉所用编程语言的基础语法,有这门语言的知识地图,熟悉该语言本身的各种基础功能,了解这门语言的高级功能

能调用已有技术框架的 API 来实现特定功能

能在实现同一功能的多组 API 之间选择合适的那一组

能熟练使用开发环境和各种辅助工具进行调试

可以解决易复现的、逻辑简单的软件 Bug

能自主学习某个新框架的基础 API ,参考 DEMO 完成某个功能的基本实现

我的总结可能不完善或存在 Bug ,请大家在留言区指正、补充。

我想到一个身边的例子,刚好和我们讨论的这个话题契合。

有一次和朋友 G 聊天,他说他部门有位做前端开发的程序员 X ,一直在用 jQuery 实现各种页面,代码冗余,结构凌乱。Vue.js 出来后,G 想在新版本中使用,就安排 X 学习 Vue.js ,让他参考公司产品某两个页面的功能和布局,简化设计,做两个带异步数据请求功能的页面出来看看效果,结果一个星期过后,X 告诉 G ,Vue.js 太复杂,开发文档看不明白,代码也搞不懂,进行不下去……

如果你像 X 这样的状态,就说明你还停留在普通开发者阶段,只能在他人指导和安排下编码实现特定的细分功能。

要想进阶,就要先在专项技术能力上达到我们前面所列清单描述的水平(那是基础要求),然后再对照熟练开发者的能力要求,有针对性的去学习提高,稳步进入下个阶段。

普通和熟练的关键区别

对照前面的技术成长阶段图,熟练开发者处在中间阶段,拥有自己的技能体系。

为了搞明白拥有自己的技能体系是什么概念,我们先来看两组概念:

知识、知识体系

技能、技能体系

简单说,知识是能引发改变的信息,技能是运用知识解决问题的一系列思维和动作的组合。但这样讲不大容易明白,我们举个软件开发领域的例子。 C++中的虚函数是一个知识点,用虚函数这个特性定义模块接口,实现模块的动态加载,就是技能。

接下来为了行文方便,我不再区分知识和技能,直接把知识等同于技能,甚至用知识一词代替技能。请在阅读时根据上下文加以区分。

知识和知识体系的关系,技能和技能体系的关系,就像树木和森林的关系,就像瑞士军刀上小刀、小剪子、小螺丝刀和瑞士军刀的关系。

这样打个比方,应该可以体会到“体系”是什么了。

所谓知识体系,就是若干相互联系的、可以用来解决特定场景问题的知识的组合。

Ok,现在回头来看普通开发者和熟练开发者的区别,就简单多了。

普通开发者因为不断完成任务,不断做项目,接触、使用了各种各样的“知识点”,于是拥有了各种离散的知识,但这个知识和那个知识很少关联,他拥有的知识,是散兵游勇,如下图所示:

当你的知识点各不关联时,你在遇到问题时,就很难进行系统思考,就很难获得解决办法。

而熟练开发者,则(被动或主动)经历了知识点的梳理、整合过程,把零散的知识点围绕着某个应用场景联系起来,形成了知识体系。就像下图:

当你有了知识体系之后,遇到和你知识体系对应的场景相关的问题,就可以快速找到相关的知识,系统的分析问题,最终解决问题。

你看,是否拥有知识体系,导致了熟练开发者和普通开发者的一个非常重要的区别:熟练开发者能够独立负责一个模块或子系统的设计和开发工作,拥有分析问题、解决问题的能力和任务分解的能力,可以分配任务给普通开发者。

进阶修炼方向

好啦,从技术水平的角度讲,普通开发者和熟练开发者的区别就在于:普通开发者的知识不成体系,而熟练开发者构建了与某个应用场景相关的知识体系。

这样看来,普通开发者要想进阶,方向就非常明确了:构建自己的知识体系。

那么,怎么构建知识体系呢?先参考我的另一篇文章:构建知识图谱,让自己更值钱。如果后续有机会,我会重构一篇新的文章,再聊聊构建知识体系这个话题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11176308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存