赞
踩
【导读】GPT 让编程的门槛更进一步地降低,甚至非专业人士也能快速开发应用,这引发了关于程序员职业未来的广泛讨论。本文作者网易副总裁兼杭州研究院执行院长汪源博士作为资深程序员,又有着多年的研发管理经验,深入分析 GPT 对于程序员职业的影响,并提出了程序员可以如何适应这一巨变的解决之策。
本文精选自《新程序员 007:大模型时代的开发者》,《新程序员 007》聚焦开发者成长,其间既有图灵奖得主 Joseph Sifakis、前 OpenAI 科学家 Joel Lehman 等高瞻远瞩,又有对于开发者们至关重要的成长路径、工程实践及趟坑经验等,欢迎大家点击订阅年卡。
作者 | 汪源
责编 | 唐小引
GPT 出来后,关于 AI 将终结编程,代替程序员的言论就不断出现,如哈佛大学计算机教授、Google 工程总监 Matt Welsh 宣称 AI 三年内将终结编程,类似的文章还有“ChatGPT Will Replace Programmers Within 10 Years”[1]、GPT-4 程序员毁灭路线图[2]等,其中虽然有一些深度讨论,但更多的是口水战,也缺乏发展建议。
我做过约十年的一线编程,又做了近二十年的研发管理,希望基于这两方面的经验和视角对这个话题做一些更切实的讨论,尤其是期望能为程序员群体提供一些应对策略。
GPT 对程序员工作内容的影响
首先我们要比较全面地了解 GPT 对程序员工作内容的影响。
一方面,我觉得应该对 GPT 的编程能力有很大的敬畏。我们可以看到很多 GPT 让完全不懂编程的人也能快速做出一些应用的案例,如爬取和处理数据、小游戏、浏览器插件等,甚至 20,000 行代码的 CRM 软件[3]。我们还可以看到,借助 GPT 原本做某个技术栈的程序员可以很方便地跨界到另一个技术领域,比如后端工程师开发安卓上的计算器应用[4]。我还在一个群里看到有个原来没做过游戏,完全不懂 Unity 的人不到一周时间做了一个非常类似羊了个羊的游戏。以往这样的切换至少得花一两天去学习才能写下第一行代码,然后接下来一两周也基本没有有效产出。但现在在 GPT 的帮助下,程序员切换到另一个技术栈基本上可以马上开干,边干边学。
另一方面,我们也应该认识到 GPT 并不能独立解决完整的真实编程任务,近期 SWE-bench 使用多个流行开源项目的真实 Pull Request 需求测试表明即便 GPT-4 的正确率也是 0。此外,程序员并不是像外行想象的那样只是埋头写代码,更多的时间是要去了解、理解和分析需求,程序员之间也需要交流和协作,如定义接口、数据结构、任务时间表,还需要一起完成测试,分析和修 bug。所以程序员更多的时间是花在沟通和协作上。
有些人看到完全没有编程经验的人也能编程,就惊呼程序员很快就会被 AI 取代;又有很多人因为编程只占程序员工作的一小部分,就认为 GPT 对程序员的职业几乎没有任何影响。
这两种观点都是不对的。
GPT 不会导致程序员群体消亡
技术进步导致一个职业消亡的案例当然是有不少。大学时我选修过电影赏析课,记得有一次课上我们观赏一部描绘众多女士竞相应聘打字员职位的电影《罗马十一时》。影片中,她们因为争夺这个岗位而发生激烈冲突,最终导致楼梯因超负荷而坍塌, 很多人受伤,其中还有一个不治身亡。由此可见,在几十年前打字员曾经是一个非常令人羡慕的职业。然而如今,我们再也找不到打字员了,唯一仍留存的一点点高端打字员,也就是速记员。但在这几年,我发现速记员也少了。
但我认为,GPT 并不会让程序员这个职业消亡,甚至程序员的数量还会进一步增加,这有两方面原因:
首先,编程只是程序员工作的一小部分,程序员是比较综合的职业。虽然就编程而言 GPT 可能带来显著的效率提升,但人与人之间的沟通、协作和交流方面 GPT 能够提供的帮助并不十分显著。综合来看,GPT 可能会明显提升程序员的工作效率,但基本不可能会出现有了 GPT 的帮助之后一个程序员抵现在三五个的局面。
其次,软件研发的需求还会继续增长。基于数字中国的布局,数实融合的趋势下各行各业的数字化都在加速,现在很多场景并没有软件可用,许多软件的体验和质量并不理想(典型的如政府应用和企业内部应用),需要翻新。与此同时,对话式交互和 Agent 技术将带来全新的软件交互范式,大量的软件都需要重造。
所以我们可以看到技术可望带来显著的效率提升,同时也可以看到大量新的软件研发需求,综合这两个因素,社会对程序员群体的数量需求很可能不会下降,甚至还会继续增加。
程序员个体并不安全
但这并不意味着现有的程序员的岗位都是安全的,与此相反,风险很大。
程序员的人力成本很高,而企业永远有降低成本的动力。大家可以看到近两年来无论中美,即便最头部的企业很多也开始大规模裁员(大家可以看看财报中的研发费用占比就知道为什么要裁员了),中小企业则因为成本高做不起软件项目。
现在,GPT 这种看似无所不能的新技术提供了降低成本的新的可能性。比如现在大多数程序员都是按照所掌握的技术栈来划分的,如 Web 端、服务端、iOS、Android、算法开发和数据开发等,导致一个不大的软件都需要几个人,既然 GPT 让切换技术栈变得如此简单,那为什么不让一个程序员把全栈都做了?再比如既然 GPT 让不懂编程经验的人都可以编程,那为什么不招一些更低成本的人力稍加培训来代替现有的资深程序员?
何况现在大量的毕业生需要就业。中国每年 1000 万毕业生涌入劳动力市场,程序员又是一个相对高薪和体面的工作,肯定很多人是想干的。之前觉得至少还需要先花上几千块钱上个几个月的培训班,现在有了 GPT,何妨自己试试?
CodeWave 这样的低代码开发平台也是另一个冲击。以我们的经验,高职非计算机专业的工科类学生超过 80%都能在一个月之内顺利上岗。他们的薪资远比现在的专业程序员低,一样能做开发,对很多典型应用来说开发效率还更高,那企业为什么不换一批低代码程序员来干呢。其实现在很多长尾应用已经用低无代码来做了,后续能满足复杂应用开发需求的低代码技术也会快速成熟。
还要考虑地域分布因素,当前数字人才和实体人才严重脱节,很多实体企业在三四线城市,软件研发中心需要到省会城市才能招到程序员,将来因为低代码和智能编程的发展,进入编程行业的门槛降低,肯定会有更多的程序员会贴近实体产业来自于三四线城市。
这几个因素叠加,还能说现有程序员的岗位还安全吗?
转型全栈或低代码是基础
程序员通常不会轻易切换技术领域,形成现在这种按技术栈划分的程序员岗位模式主要有以下两个方面的原因:
一是进行技术领域的切换有很大的学习成本。在公司内,一到两周的培训和学习时间和两三个月的效能爬坡已经足以阻止这样的切换发生。程序员个体方面,一两千块钱的课程费足以让绝大多数人失去跨界的兴趣。这是供给侧方面的原因。
二是大规模软件开发需要分工,如后端以服务的形式提供共享能力,供多个前端调用和复用。即使一个程序员能做全栈开发,也会因为任务分工而仅被安排在前端或后端。这是需求侧方面的原因。
但从上个世纪走过来的程序员都应该非常清楚地知道软件开发过去并不是这样的。上个世纪的 C/S 架构下一般都是由一个程序员完成用户界面、数据处理和处理逻辑等当时软件开发所有的工作。这个世纪最初几年做 Web 也还是很多一个人做完全栈的。
所以,程序员按技术栈分工还是全栈,都曾经大规模出现过,未来会如何发展,取决于需求和学习成本。
先说需求,当前软件开发需求主要集中在互联网、金融以及数字化程度最高的大型企业等领域(包括为他们服务的外包公司),但这些企业对程序员的需求从近两年的情况来看已经开始下降,至少是没有太大的增长空间。增长更多地来自于大量传统行业的数字化转型,这些行业的需求很多都不算复杂,这些领域对全栈程序员的需求就会更迫切。
学习成本方面,正如之前的例子所示,借助 GPT,现在从一个技术领域切换到另一个技术领域的中断时间接近于零。虽然在切换到另一个技术领域的前期,与那个领域的熟练程序员相比,效率和质量还是会存在一定差异,但一个人能够负责全栈工作所带来的成本降低也是非常显著的。
还要考虑低代码开发的因素,如 CodeWave、OutSystems 这样的低代码平台天然就具备全栈开发能力,低代码程序员天然就是全栈程序员。
在我们研究院过去不到一年因为 GPT 和 CodeWave,全栈程序员的比例已经超过 1/4 了。我认为在典型的应用开发领域,现有按技术领域划分的程序员岗位模式将会有很大比例转向全栈程序员模式。现有的程序员应该积极地跨界学习,争取早日成为具备全栈开发能力的程序员或低代码程序员。
全栈非终点
但转型全栈并不是对程序员群体最大和最后的冲击。大家可能会想,原来我有十个程序员,前端两个、iOS 两个、Android 两个、服务端四个,现在这十个程序员都变成了全栈程序员,可能因为效率有所提升,所以只需要八个,但大多数人的工作还保得住。甚至还会乐观地去想,因为现在每个人都能做全栈,比之前只能做单一技术栈时的待遇应该会好一些。
如果这么想的话,我觉得大概率又是错的。较早转型成为全栈程序员的人应该会享有一段红利期,但从长远看全栈并非终点。
这是因为技术的发展马上会极大的降低程序员职业的入门门槛,一个 GPT,一个低代码,GPT 和低代码还会迅速结合在一起,在微软 PowerApps 平台上我们已经看到了这样的结合,其他低代码平台(如 OutSystems 和我们的 CodeWave)也会很快实现类似的结合。
大家不要听有些专家说的低代码没什么新东西,GPT 也不是什么技术革命。我们不用去关心底层是不是有什么技术革命,我们只需要观察有没有出现学习及使用体验和以前差别很大的产品,低代码和 GPT 绝对符合这个标准。
简单地做个计算就可以大致看到 AI 对程序员的影响。假设现在一位优秀程序员的工作 40%是编程,60%是其他,假设这位程序员编程的效率是那种培训班或高职院校培养的初级程序员的 10 倍(确实会有这么多),其他工作的效率是 2 倍,那么综合来说是 5.2 倍(0.6 * 2 + 0.4 * 10),所以优秀程序员可以拿到初级程序员 5 倍的薪酬。有了对话式 AI 编程,这位优秀的程序员的工作中编程的部分会降到 30%,其他工作会增加到 70%。假设优秀程序员的编程效率仍然远高于初级程序员,但很可能不会有 10 倍这么多了,假设会降到 3 倍,其他工作的效率仍然是 2 倍,那么综合来讲优秀程序员和初级程序员的效率差异就变成只有 2.3 倍了(0.7 * 2 + 0.3 * 3)。
打个比方。现在的编程是手工劳动,专家和初级之间的差异就如同精英选手和普通人比赛跑马拉松,绝对是数倍的差异(普通人甚至需要两天才能走完),后续的编程会变成半自动的劳动,就如同骑自行车,这时精英选手和普通人之间还是会有差异,但没有长跑这么大了。
现有程序员群体总体来说能够享受较高的薪酬,并不是因为创造了巨大的商业价值(反之,研发始终是成本中心),而是由供需关系和技术门槛决定的,而这两方面的因素都在快速发生变化,程序员群体的整体就业状况也会随之发生巨大变化,只掌握单一技术栈的程序员当然最危险,全栈也不完全安全。
转型为复合型人才是关键
那现有的程序员何去何从,当然是有去处的,而且因为现有程序员群体很多拥有很好的教育背景和基础素质,能力强,当然还是会有很多机会,但需要进一步拓展新技能。
第一步是之前说的转型为全栈程序员,这不但可以增加更多职场机会,更大的价值在于可以更好的理解业务。后端程序员转型全栈可以更好地培养交互、需求和用户体验方面的经验,而前端程序员转型全栈可以更好地培养对业务核心流程、领域设计等方面的经验。
但全栈程序员并非终点,还需要以软件开发能力为基础,往管理、架构、业务、营销、技术型产品等方向发展,成为复合型高端人才。
往管理和架构发展是最典型的想法,但这两条路提供的机会并不多,管理大概只有 10-15%的机会,架构的机会就更少了,大概只有 5-10%,而且研发的管理和架构职能还经常重叠,所以这两条路加起来不会超过 20%的机会。
最主要的路径是往业务发展,成为既能做业务分析和产品设计,又能做开发工作的人才,成为绝大多数不算特别复杂的软件项目骨干。各行各业的数字化对这类软件项目的需求会是最普遍的,市场上有行业和业务经验的业务分析师(BA)远比程序员稀缺。从典型项目的人员配比看,这个途径应该可以提供 30-40%的机会。
2B 行业的程序员也可以往营销端发展。程序员最了解自己的产品和技术,所以往往能成为很好的售前和解决方案架构师,在华为这样的转型非常普遍。但很多程序员比较排斥转营销,不愿意好好学习怎么做营销,不知道怎么面向非技术背景的客户人员沟通,这样的心态需要改变。这条路也可以提供 15-20%的机会。
此外,云计算、大数据、中间件等技术型产品的研发很可能还是需要最优秀的程序员才能做得很好。也愿意花很大的成本招最优秀的程序员,如果一定想一直做程序员的话也得要找这样的雇主。
总结
总结一下,虽然 GPT 技术大概率不会导致程序员群体的消亡和萎缩,但仍会对现有程序员的岗位带来巨大冲击。现有的程序员首先应该发展为开发能力全面的全栈程序员(包括低代码),并继续拓展编程之外的能力,往业务、营销、管理、架构、技术型产品等方向发展。其中往业务发展,成为既懂业务又能做研发的复合型人才很可能是最主要的发展途径。
将来只是做开发的纯程序员大部分都会以初级为主,要往高级职位发展,很可能都需要拓展程序员之外的技能,纯程序员可能会变成薪资待遇很普通的职业。将来也很可能出现一种情况是大量的人都有软件开发能力,但不以此为生。
这就是我关于 GPT 对程序员职业影响的分析,虽然面对 GPT 这样突破性的新技术,预测它的影响非常难,但还是希望更多的程序员能够看到,因为程序员们真的是要好好思考自己的未来。
相关资料:
[1] https://levelup.gitconnected.com/chatgpt-will-replace-programmers-within-10-years-91e5b3bd3676
[2] https://mp.weixin.qq.com/s/TULorg64rkH46sIXIrCI5w
[3] https://aista.hashnode.dev/will-chatgpt-replace-human-software-developers
[4] https://www.youtube.com/watch?v=fzjsUOszYf4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。