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