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

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

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

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

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

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

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

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

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

"10岁时,我开始用 Qbasic 编码。我告诉爸爸,长大后想成为一名程序员。他告诉我,计算机可能很快就会实现自动化,就像他的工程行业一样,那时我会不得不找另一份工作。但是,23年过去了,市场对程序员的需求不断上升,并且似乎仍在上升。我想说,我们离软件自动解决大部分需求的这种抽象水平,还很遥远。正如文章所说,k8s、docker、kafka、databricks、redshift 这些新工具,取代了很多程序员。但是,它们其实引发了更多对程序员的需求。那些必须由程序员解决的问题,只是转移到了新的地方。"

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

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

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

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

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

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