看到最近流行起来的“打工人”的梗,在哄堂大笑之后,我也开始严肃地思考程序员这个工种的本质,开始思考“为何程序员薪资那么高”。如今将思考结果写出来与各位交流,欢迎与我分享你的思考。程序员
咱们程序员在自嘲的时候,总喜欢自称“搬砖工”、“手工艺人”、“和流水线工人没什么区别”。我曾经也悲观地认为这其实就是事实。可是最近通过仔细思考之后,感受程序员这个工种其实仍是有一些不一样之处的。运维
一句话总结:程序员生产出来的是资产,通常流水线工人生产出来的是商品。设计
资产是一个不断增值的东西,资产是能源源不断产生收入的。而商品的价值在生产出来之后就基本固定了,正常的商品是不会增值的。开发
程序员的生产成果是代码。代码,只须要以很是小的代价(电费、机器运维),就能够不停运行,一直提供服务,于是不断产生收入。所以代码是一种资产。产品
而普通的工业产品是不会增值的。对于生产它的公司来讲,生产商品就是为了销售出去的。当一个商品被卖出去的时候,它的价值就被所有兑现了,后续不会再给生产者提供价值。自动化
举一个极度简化的例子,一个公司雇佣了一个程序员,用1个月的时间写出一个软件,能够为客户提供服务。这个服务最终运行了2年。软件
对于员工来讲:互联网
对于公司来讲:循环
得到了代码资产bug
第二个月,公司继续雇佣这个程序员,用1个月增长了一个feature,能够为客户提供更大的价值(所以为公司提供更多的收入)。这个feature最终也运行了2年。上面的付出收入表格再次出现。
在这里咱们忽略了代码的修bug成本。在管理得当的状况下,软件维护(仅指修bug,不包含增长feature)的成本相比初始开发,以及将来收入来讲,是极低的。
循环往复,公司积累了愈来愈多的资产。而且,公司能够招募更多的程序员,扩大生产(这里的生产指的是生产资产!),所以资产自己的积累速度也会愈来愈快。
对于传统工业品生产企业来讲,这种资产积累速度只能可望不可即。
或许这就是当下互联网公司愿意给程序员支付高薪资的缘由吧。公司雇佣程序员的时候只须要按照工做时间来支付薪酬,而程序员产生的资产可以
所以,严谨地说,将程序员类比成流水线工人的说法,既是正确的又是错误的:
更恰当的类比,应该是将程序员类比成自动化工厂流水线的设计师。他们设计出来的自动化流水线,只须要提供少许电力和人力就能运行。