专栏首页阮一峰的网络日志软件吃软件,编程工作会越来越多吗?

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

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)软件开发的难度,必须超过机器学习的进化速度。

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

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

(完)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 我为什么喜欢编程

    这个周末,我在家核对More Joel on Software的最后定稿。 此书已经在申请书号了,一拿到书号,就可以印刷和销售了。所以,不出意外的话,年底之前就...

    ruanyf
  • 关于战略问题的通信之六

    《Joel谈软件》一书的翻译,我好久没提了。 合同规定今年1月交稿。假定我没有违约的话,此书现在应该上市了。可是,实际上......就算到下个月,我恐怕都翻译不...

    ruanyf
  • 每周分享第 28 期

    欢迎投稿,请前往 GitHub 的 ruanyf/weekly 提交 issue。

    ruanyf
  • 老程序员都去哪儿了?

    摆在老程序员们面前有三条路,一是转行,二是继续钻研成为技术大牛,三是转型为管理人员。 我最近采访了十五位30岁以上的老程序员们,在此我想发表下我的观点。 网络上...

    架构师小秘圈
  • 让程序员带孩子是怎样一种体验?

    是不是感觉对程序员没爱了,但我可以很负责的告诉你,这都是假的,这都是我猜想的,而现实呢,确是这样,当程序员有了孩子,直接就把代码忘得一干二净了。

    秃头哥编程
  • Java程序员的五个职业发展方向

    其实很多程序员走到这个阶段已经在做软件设计师工作了。这是绝大多数程序员发展的必经之路。因为,程序员在编程序的时候,一方面会实现设计的功能,另一方 面 也在对设计...

    java架构师
  • 编程能力与编程年龄

    程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型,就像《程序员技术练级攻略》(http://coolshell....

    Crossin先生
  • 程序员要为降薪做好准备!

    也许很多人都意识到了程序员的高工资很有可能是暂时的......因此有必要对未来的工作做出明确的计划,以防失业后无法找到可与先前匹敌的高薪工作。

    止术
  • 为何程序员鲜少炫富?

    如此看来,程序员的物质基础该是能通过丈母娘的这一关了,问题就来了:程序员这么有钱,为什么没看过他们炫富呢?怎么看到的程序员都是格子衫、黑框眼镜、运动鞋的模样呢?

    雪雁-心莱科技
  • 这份高考卷,只有程序员能得满分...

    你是不是还在怀念曾经逝去的高三,遗憾自己没有超常发挥,或者遗憾自己志愿表没有填好。其实,只要志愿选的好,年年期末像高考。

    Java帮帮

扫码关注云+社区

领取腾讯云代金券