软件吃软件,编程工作会越来越多吗?

作者: 阮一峰

日期: 2020年5月27日

1、

最近,国外有一篇文章,标题很有趣,叫做《软件吃掉软件》

作者认为,大型软件和通用软件越来越强大,将会取代小软件和专门软件,相当于把后者都吃掉了。

他以自己的经历举例,云服务就取代了很多小软件。

"我亲眼目睹了这种情况发生的速度。我的第一份工作是在一家小型创业公司,我们拥有大量的物理服务器。现在,很难想象有任何一家 Web 创业公司会直接管理服务器,人们都是在亚马逊 AWS 控制台上点击几个按钮和链接。"

框架的发展,也使得从头编写代码的需求越来越少。

"程序员曾经需要从头开始构建东西,但是软件库的发展速度超过了我们的使用速度,甚至软件可以自己生成新的软件,这也是为什么你看到如此之多的"无代码"或"低代码"解决方案突然出现的原因。现在,自己编写代码的理由越来越少,你要做的只是将不同的产品集成在一起。"

他的结论就是,软件自动化技术的发展,可能将会减少对软件工程师的需求,未来的程序员可能会比现在少。

2、

我对这个话题很感兴趣,因为这是在预测未来的重大变化,而且跟就业趋势直接相关。如果未来软件的规模化和自动化,会抑制对程序员的需求,那么就不应该鼓励年轻人都来当程序员。

Hacker News 论坛对这篇文章进行了热烈的讨论。大部分人(都是职业程序员)的看法是, 这种观点已经说了几十年了,根本是杞人忧天,实际情况恰恰相反,程序员变得越来越多。

"10岁时,我开始用 Qbasic 编码。我告诉爸爸,长大后想成为一名程序员。他告诉我,计算机可能很快就会实现自动化,就像他的工程行业一样,那时我会不得不找另一份工作。

但是,23年过去了,市场对程序员的需求不断上升,并且似乎仍在上升。

我想说,我们离软件自动解决大部分需求的这种抽象水平,还很遥远。正如文章所说,k8s、docker、kafka、databricks、redshift 这些新工具,取代了很多程序员。但是,它们其实引发了更多对程序员的需求。

那些必须由程序员解决的问题,只是转移到了新的地方。"

就像上面引文所说,现实情况是需要编程解决的问题不是越来越少,而是越来越多,导致了程序员的增加。原文提出的两个论据,都站不住脚。

首先,云服务确实使得企业免去了服务器管理,但是你仍然需要有了解 docker、kubernetes、数据库分片和索引、故障转移、备份、消息队列等等技术的人员。即使这些东西现在更加集成,更易于组合,但要弄清楚它们如何相互作用,如何设置,仍然是很复杂的一件事。

其次,"无代码开发"只能解决一些通用的软件问题,迟早会出现需要定制的情况。那时,就需要有程序员来修改代码,用户才能继续使用。

总之,世界正在变得越来越自动化,而自动化的本质是软件,所以对程序员的需求只可能越来越多,不可能越来越少。

3、

不过,论坛上面也有少部分人赞同原作者的观点,认为程序员越来越多只是过去的情况,未来未必如此。现在可能是软件开发"突变"的一个时间点,未来的发展可能不同于此前的情况。

市场需要更多了解 docker 和 kubernetes 这样新工具的人,这个是没错。但是,主要是大公司才需要这样的人,小公司用不到 kubernetes。小公司面对的复杂性是有限的,只要使用大公司提供的简单解决方案即可,需要自己开发的部分几乎没有。

而且,如果公司的业务重点不在技术方面(你要知道大部分公司都不是互联网公司),使用"无代码方案"是最有效的。因为无需在软件工程上花费很多钱,就可以快速应用。

历史上,每当一个领域出现大量需要编程解决的问题,就会诞生一个通用的解决方案,解决掉90%的场景。然后,这个领域对程序员的需求就会快速减少。

"30年前,开发图形界面 GUI 很困难,Visual Basic 改变了这一点。

20年前,制作一个 Web 应用很困难,PHP 改变了这一点。

10年前,写一个复杂的网页布局很困难,Bootstrap 改变了这一点。

现在,机器学习很困难,PyTorch 正在改变了这一点。

每个棘手的问题最终都会产生一个有效解决方案,解决掉90%的场景。对于大多数公司而言,这个解决方案已经足够了。剩下的10%场景,其中一部分由某些公司付钱给程序员来解决,另一部分永远不会解决。"

所以,如果新的领域层出不穷,那么就会需要更多的程序员。但是,这些领域对程序员的需求都不会持久,一旦产生了解决方案,需求就会迅速降低。

4、

看完了上面的讨论,我的想法是,市场对程序员的需求,未来怎么变化,不能简单地回答增加或减少,而是取决于两个因素。

(1)人们需求增加的速度,能否超过软件自动化的进化速度。

现有的场景最终都会有通用的解决方案,需要雇佣程序员的情况,确实将越来越少。程序员的就业,主要依靠新出现的场景。而且,新场景的增加速度,必须超过软件自动化的进化速度,否则旧的解决方案也许会自己升级成新场景的解决方案。

(2)软件开发的难度,必须超过机器学习的进化速度。

程序员的数量,还跟软件开发的难度有关。难度越低,就会有越多的人从事这项工作。以前,你必须懂得计算机的底层硬件和汇编语言,才能开发软件,所以程序员很少。现在,软件开发越来越容易,已经不需要了解底层,只需要懂得某个框架即可,所以越来越多普通人变成程序员。

未来的编程肯定会变得越来越容易,但是,越来越容易的编程,也意味着机器可以轻而易举地代替人,来完成这些工作。所以,软件开发的难度必须超过机器学习的水平,否则需求的增加只会导致更多的机器自动编程,而不会导致更多的程序员雇佣。

(完)

留言(46条)

早餐还没来得及吃,就燃起淡淡的忧愁~~

软件自动化技术的发展,可能将会减少对软件工程师的需求,未来的程序员可能会比现在少。
我觉得前面是对的,软件开发越来越简单,确实会减少软件工程师的需求;
但是后面说未来程序员会变少是错的,因为软件开发更容易之后,会有更多的行业想要开发软件;
相比前者带来的为数不多软件工程师岗位的减少,后者无疑增加了无数的程序员岗位。

手里的代码突然不香了

产业升级。需求也是越来越大。简单的,容易模式化的软件可以替代人自动产生软件。但模式的识别与归纳总结还是需要人来做。所以这就是产业升级。除非到了那个奇点,即通用ai的产生。那么大家一起失业。因为通用ai产生后,人类的所有需求都可以被ai总结并生成软硬件满足需求。这时候的世界就很微妙了。因为没钱的人就是废物不如。

这言论就像机器的出现,会导致大量的人工失业一样。

也就是说,你要比机器学习得快 o(╯□╰)o

引用xianxiaobo的发言:

软件自动化技术的发展,可能将会减少对软件工程师的需求,未来的程序员可能会比现在少。
我觉得前面是对的,软件开发越来越简单,确实会减少软件工程师的需求;
但是后面说未来程序员会变少是错的,因为软件开发更容易之后,会有更多的行业想要开发软件;
相比前者带来的为数不多软件工程师岗位的减少,后者无疑增加了无数的程序员岗位。

深以为然,一个朋友开的便利店想要做一个收银系统出来,我说市面上个几百上千块就能买个很成熟的来用,而且和硬件还配合的很好,你找人做,怕是几万块都不够。而他说,他想要的功能现有的产品都没有,而且这种产品也不给外部来扩展,所以想自己找人做一个,完全按自己的定制来。

我坚信未来程序员会越来越少

在我们国家行不通 自动化是需要成本的

引用依韵的发言:

深以为然,一个朋友开的便利店想要做一个收银系统出来,我说市面上个几百上千块就能买个很成熟的来用,而且和硬件还配合的很好,你找人做,怕是几万块都不够。而他说,他想要的功能现有的产品都没有,而且这种产品也不给外部来扩展,所以想自己找人做一个,完全按自己的定制来。

我猜测你这个朋友,最后还是会购买市面上比较成熟的软件产品。因为自己找人开发,几万肯定是不够的,起码要几十万起,这还是开发成本,没有包括后续的升级和维护。除非你这个朋友开的是全国连锁便利店,数量多到能够分摊开发成本,否则完全没必要。

我觉得以后对程序与要求越来越高!现在找工作都不太好找别说未来了。

感觉未来很多公司的核心盈利/竞争力/产品服务最终都要部分或者全部软件化,或者说模型化/知识化,对制造业/服务业/金融业都是如此.因为只有这样才能不依赖具体某个专家,才可以把必须需要人工的工作重复化/简单化/低附加值化,直至机器人化,达到减少成本/提升效率的目的.而所有这些都需要有it人员来研发和维护,某种意义上,可以说未来所有的公司都是软件公司!考虑到这些公司核心软件资产的差异化/知识产权/技术更迭等因素,这些工作很难一劳永逸地使用所谓的通用解决方案,其实即便像公有云这种基础设施,对于很多企业来说都无法充分相信采纳,更不用说自身业务内部特殊的软件资产了.

这还不包括未来人类为了改善需求而发明的其他软件/自动化需求场景!

当然, 如果说到达奇点, 计算机可以自己思考, 人工智能可以进行自动化编程, 那自然程序员的工作会被取代.不过那个时候,人类将面临翻天覆地的变化! 就不仅仅是程序员考虑失业的问题了!

程序员是在奇点到达之前最后失业的几批人之一, 几十年内it也仍是最具前景的行业!

对程序员需求是越来越多还是越来越少,取决于机器取代人类进行自我编程的实现进度。从目前这个趋势看,其实还相当遥远。而即使实现了,程序员的真正意义在于创造流程来抵达目标,以人类贪婪的无穷需求,类似岗位将会大量出现,程序员只是换个title继续工作罢了。

如果真的有一天程序员这个工作都被机器取代了,那么这个世界上大部分工作应该都被机器取代了。

同意阮哥的看法。
有市场需求并且有资本,职业需求量才能大量增加,前些年外包和智能手机促成了程序员群体的爆发,如今资本撤离,明显后劲不足了。只有需求,如果没有资本进入,程序员就只能叫爱好,不叫职业,跟琴棋书画一样。

BootStrap 10年了?

引用荒原之梦的发言:

如果真的有一天程序员这个工作都被机器取代了,那么这个世界上大部分工作应该都被机器取代了。

赞同该观点,但是,优秀的程序员还是很难被替代的

未来发展,新的语言出来,出现新的职业,能产生更多的需求。

节能灯泡初衷是为了节省能源 但因为如此 节能灯泡反而使用广泛 总用电量反而变多了。
软件开发也是如此

不如转行基因程序员,对生物科学的分析方法进行变革

入门级程序员的需求会越来越少是真话。

我觉得以后对程序员的要求肯定会越来越高的,35岁的年龄限制也会慢慢改善的,因为以后会需要一批三四十岁拥有丰富知识与经验的高级工程师来应对一些难以想象的复杂问题

引用厚朴的发言:

赞同该观点,但是,优秀的程序员还是很难被替代的

赞同。如果程序员的工作都能够被取代的话,绝大部分的工作都能被取代。

只会减少一些落后技术栈的开发人员,然后他们转型学习新的技术栈了

未来的程序员会分化出大量的软件整合师,他们无法体会到代码的乐趣。

程序员是否会被替代取决于做的是重复的机械劳动还是创造性的脑力工作。

支持阮哥看法

程序员,将来学习从成本 会越来越大。低端的工作将会被淘汰。只有一小撮人,有饭吃。
然后, Android、IOS、前端、php等,这些,内卷化非常快。
但是,基础扎实,夯实基础,也不容易。
现在,重头开始复习C语言……

不断学习,提升自己

软件开发只是编码吗?需求整理、业务逻辑推演、架构理解这些不也是软件开发的工作吗?
我还是具一个具体的例子描述一下:
以面向企业管理的ERP产品为例,别看它贵,然而通用的功能根本满足不了客户的日常使用需要。
一家企业要上一套ERP的周期通常都要好几年,其中客户提的专案、定制开发所产生的实施费用可能会高过产品本身。
除此之外,面向办公的OA,面向销售的CRM系统,面向车间执行的MES系统等等,这些都要重新选择其他专业的软件,然后再二次开发以打通系统间对接。

引用荒原之梦的发言:

如果真的有一天程序员这个工作都被机器取代了,那么这个世界上大部分工作应该都被机器取代了。

何止是程序员,可能连人类都不需要了

门槛是低了 然而面试却不是那么低就能过的

农民应该会越来越多,程序员会越来越少。
能吃饱饭才是重中之重。

引用zhoulujun的发言:

程序员,将来学习从成本 会越来越大。低端的工作将会被淘汰。只有一小撮人,有饭吃。
然后, Android、IOS、前端、php等,这些,内卷化非常快。
但是,基础扎实,夯实基础,也不容易。
现在,重头开始复习C语言……

确实,内卷化的过程中。每一个进入内卷模式的人都是受害者,在竞争现有有限资源的同时,大量劳动力进入竞争必将导致整个行业竞争更加激烈。(我不敢预测说未来互联网行业是个内卷的行业,毕竟不知道是不是可以实现自动化编程取代百分之九十的人)但是我知道现阶段的我只有不断地学习不断地提升自己。才会让现阶段从事这个有可能内卷的行业在未来有点选择,不然当真的有一天被机器人取代的时候,自己不会像堤坝溃堤时,流向低处。不断地学习最起码可以让自己的未来有点保身之处。(继续学习,进行深造可能是我现阶段的唯一选择。)在每天工作的日子里,自己可以有这自己对不断梦寐以求,向往生活的憧憬和追求!!!

岗位留给那些努力终生学习的程序员,而不是留给那些等35岁退休的程序员

我觉得可能会越来越多,因为假设人类冲出太阳系,造飞船,哈哈哈,各种型号,各种探测器各种功能都要开发

或者程序员越来越少,但是程序员的薪资越来越高,甚至高到离谱的,或者程序公司都需要养一些程序员,整天没事干,因为那时候已经能自动产生软件了,但是软件总可能会出错,3年可能才出现一次,出现了就要解决,然后因为3年没有程序员,所以程序员只能学习,偶尔解决问题,一旦解决问题就是开张吃三年的那种

技术的出发点应该是提升用户体验,不难想象普通程序员的危机...

我的猜想是程序员行业也和社会环境一样会偏向两级分化,学历高经验丰富等优秀的将会接触到最新最先进的技术;而学历低,能力差的就只能在小公司从事旧框架的维护,也‘不可或缺’。然而中间的断层则被机器自动化、优秀框架、优秀服务所取代。
总的来说,我认为未来程序员会慢慢趋少,毕竟中间的断层取代了大部分的人。

我相信程序员的岗位在几十年内不会太少,但是淘汰的速度将不断变快,因为知识的更新速度很快。

有很多人一看到“自动化将会取代人们的工作”就开始杞人忧天,但是如果我们仔细想一想:

1. 欧美国家还有人在用镰刀锄头种庄稼吗?那些用镰刀锄头种庄稼的人都失业了吗?显然没有,他们只需要一小部分人驾驶机器来种植大量的庄稼,而其他的人去到了新的、更有创造力的岗位。而且因为粮食的生产力提高了,总体来说粮食价格降低了,人们生活条件变好了。

2. 如果你开一家工厂,用高效率的机器,或者难以管理的大量员工,你会怎么选择?用高效率的机器,不仅可以节省一大笔薪资、管理费用,而且产品质量也会变好,更具有竞争力。这样一来,成本下降了,产品的市场价格自然会变得亲民,人们的生活也会变好。

3. 如果自动编程软件普及,会发生什么呢?第一个,我们很多人都会拥有展示自己创意的机会,你不用聘请一个团队,不用去了解每一个技术栈,基本上很快就可以实现你的创意和想法。到那时候,市场上最火热的商品就是idea,这会大大的激发我们整个世界的创造力,难道不好吗?如果你仍然认为自动编程软件抢了你的工作,那么你根本就不明白代码是为了什么而存在,这种人最好呆在大学混职称(没有冒犯阮老师的意思)。

4. 再来看核心的问题,我们失去了工作怎么办?我想我们大多数人会有这个想法,是因为我们有超级的不安全感,住房、看病、孩子教育、父母…… 。可是这种情况什么时候不存在呢?大家都在抱怨国企下岗,可是如果继续有那么多人待在生产效率极低的国企混日子,我们大家的日子只会越来越惨!羊毛出在羊身上,如果公司继续让你呆在岗位上写软件也能写出来的代码,那么你的工资必然会降低!因为公司只会按照真实的收益给你发工资!你愿意公司把你当机器对待,你就继续待在公司吧!

5. 反省一下,为什么你会觉得前途渺茫呢?因为你懒!你以为学会写代码就一劳永逸了,当编程软件出来的时候,你就只会装可怜!你会在网络上说你幸幸苦苦学习几十年然后被取代了,博取别人的同情,就像上海的那个高学历博士,恶心死人了。你不是找不到工作,而是你舍不得放弃行业福利,然后在那里卖惨!不要跟我说你有老婆孩子,事实上很多善良诚实的人都娶不上老婆。你只会用你那种自私自利的心态来抱怨社会。

6. 如果你的岗位被取代了,这是天大的好事,至少证明,你在这个位置待着已经没有意义了。而且为了生存,你将会进入最适合自己的岗位,尽自己最大的努力奋斗维持生活。是的,很多人福利吃惯了,就忘记了我们活着是需要奋斗的。那些舍不得福利的哭惨的人们,我深深的鄙视。试问,你连代码都会敲,还有什么学不会呢?只不过就是懒罢了,你们这种心态,跟那些体制内的一部分混子差不多。而且我敢肯定,只要有剥削别人的机会,你们冲的比谁都快,因为你们及其的自私而不具有社会性。

7. 最后,我想说,我们是靠学习的乐观心态、合作精神挣钱的,而不是某一门已经到手的技术。因为前者永远找得到工作、后者随时会被淘汰。

引用血色翱翔的发言:

我相信程序员的岗位在几十年内不会太少,但是淘汰的速度将不断变快,因为知识的更新速度很快。

说到点子上了,我也是这个意见; 人类学习的速度跟不上机器的速度,必将淘汰一波人。而岗位需求不会减少,这部分岗位给刚毕业的新生力量去学习,去推动。
而我们终将成为被淘汰,被转型的一波人。

@lijunda:

---
你们这种心态,跟那些体制内的一部分混子差不多。而且我敢肯定,只要有剥削别人的机会,你们冲的比谁都快,因为你们及其的自私而不具有社会性。
----
看到你这一番长篇大论我心绪难平。
这就跟《让子弹飞》里面胡万哭小六子一样。
曾经我也是小六子,可后面我也成了胡万。但我还是要哭小六子。
~~~
年轻是真好!

引用荒原之梦的发言:

如果真的有一天程序员这个工作都被机器取代了,那么这个世界上大部分工作应该都被机器取代了。

人类被机器取代,究竟是好事还是坏事呢。。。

未来还要探索月球,火星,银河系。。。这样来看软件科技的创新和需求目前来看程序员的数量仅仅是沧海一粟

不管程序员是否增多,将来会编程的要学习编程的人会越来越多

引用荒原之梦的发言:

如果真的有一天程序员这个工作都被机器取代了,那么这个世界上大部分工作应该都被机器取代了。

深以为然

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接