曾经的我是看不起程序员的,那时候我认为他们不过是一帮写写JavaScript,摆弄一些玩具一样的东西,好像搭积木一样的搞几个网页和app,算啥?我们这些搞真东西的工程师才是人类技术的精华,从火箭飞机到半导体精密制造,我们这些机械,电子,航空航天工程师们,设计顶尖的机器,摆弄着价值数千万美元的昂贵制造设备,操控微纳米尺度精度的精密仪器,我非常为我的专业自豪,认为那些写代码的码农不过是乘着经济泡沐起飞的猪,最后一定会重重的摔倒谷底。
果不其然,2001年和2008年两次经济危机,泡沐经济的破裂导致大量程序员下岗,我这传统行业的工程师在一边呵呵,心想果然是一帮投机分子。然而我没有想到的是,虽然整个计算机行业在不断震荡,程序员的工资却逐渐把我们这些传统行业的技术人员甩到了后面。
想到2001年那波泡沐,九十年代进入程序员行业的大多数其他行业转过去的,甚至包括很多文科生,说的不好听都是在别的专业混不下去的才去写代码。2008年的时候,泡沫破灭,程序员的工资相对我们这些传统行业工程师也没有太多优势,然而又过了十年,如今硅谷的有经验的普通工程师大多是三十到四十万美元一年的薪水,就连一些刚毕业没有任何经验的二十出头小年轻也可以拿到十几万美元一年,这个薪水已经达到或是超过很多传统行业的资深工程师和高级工程师。在所有人为此诧异的时候,我在思考,我也许错了,我到底错在哪里,导致与误判了程序员行业的发展趋势?
我逐渐意识到,程序员是有史以来人类最伟大的职业,因为他们摆脱了生产关系和阶级制度的束缚,人类历史上第一次,无产阶级工人有了和资本所有者制衡的能力,因为无产阶级工人掌握了生产资料。具体来讲怎么说呢,打个比方,我比较熟悉半导体行业,IBM和Intel的半导体工程师们,大多数有着美国博士学位,一路名校,二三十年的顶级行业工作经验,看起来是工人阶级里面精英中的精英了吧?然而在近年来的半导体产业夕阳化过程中,因为半导体制程的更新速度放慢和中国半导体技术的崛起,导致资本方在市场上的利润率也逐渐降低,半导体行业竞争开始减少,行业内部开始不断兼并,对于老工程师也开始大规模的裁员。这些工程师曾经是人类的精英,他们曾经设计制造着人类有史以来最复杂精密的机器,然而如今他们为了保住一份工作战战兢兢,如履薄冰。说到底为什么?因为他们不掌握生产资料,也不可能掌握生产资料。如今一台14nm的光刻机要卖数亿美元,对于无产阶级工人来说,他们是不可能通过资本的逐渐积累来掌握生产资料的。资本的壁垒让这些失业工人一无是处,不管他们对于半导体生产设计如何理解透彻,没有生产资料和设备,他们的知识就没有价值。一旦产业发展放慢,他们的经验一旦固化,就可以被资本家用更廉价的工人取代,这些曾经拿着较高薪水的工人会马上失业,最好的结果就是降薪降职称。我进入IBM没到一年,我司的半导体制造部门就被出售给global foundry,伴随而来的是半导体研发和生产部门大规的裁员,和资深工程师的降薪降职。我刚入职时的同事走了好几个,有的老员工被强制退休,招我入职的老板被降职降薪,最后我也走了。
去年乘着IEEE开会,我对几个大的半导体公司进行了刺探和了解,发现总体比较悲观,Qualcomm和Intel的资深工程师也都非常紧张,行业内兼并不断,随便一说就一大堆,altera,英飞凌,freescale,等等等等,普遍规律是老工程师干掉,招一些工资低的小年轻取而代之,总体雇员数量缩减,兼并就是裁员的最好时机和借口,整个行业抱团取暖,寒冬已经来临。
另一方面形成鲜明对比的是程序员的高工资。我在思考,为什么互联网行业的资本家必须要给工人开那么高的薪水?为什么程序员工作那么轻松,很多人从来不加班,每天写个几十行代码,一年几十万美元的工资就有了。这个趋势也是最近十年才越来越明显的。七八十年代计算机属于昂贵资产,只有大型的资本集团才能购买,那时候的程序员也不掌握生产资料,离开了IBM的大型机,很多程序和技术根本没有用武之地。那时候计算机专业的薪水相比别的专业没有任何优势。
然而伟大的变革发生了,有史以来第一次,工人阶级真正掌握了生产资料,拥有了和资本家议价的能力,真正的改变来自于几点,一方面在计算硬件层面是个人电脑的普及和云计算技术的发展,计算硬件变得非常便宜而且容易获取,另一方面在理论层面,互联网技术的快速发展带动了知识的快速传播,导致以前曾经很少人掌握的技术和理论被大众可以轻易访问,更重要的近年来的开源软件和技术的快速发展,以前通过软件和知识产权霸权来控制工人的方法也不奏效了。典型的例子就是LInux系统为代表的Google,Unix系统为代表的IBM,Windows系统为代表的微软。曾经的电脑技术霸权主义,比如微软,IBM,惠普等公司,逐渐失去对产业的绝对控制地位。Google和Facebook等新型的IT产业资本就代表了这种新型的生产力关系,这些新型互联网公司的领导者也是从旧体制里面脱离出来的,自己也受到了开源软件和共享硬件的好处,明白这一新的生产力模式的优势,自然对于工人阶级的看法和定位都不一样,在这些企业工作的工人也享受了资本快速发展的利润,直接获得了其他行业无法比拟的财富。
传统行业的工人属于旧经济体制下的被剥削者,自己无法掌握自己的命运,随时可能被资本抛弃。新经济下的程序员们掌握了生产资料,包括云计算资源和开源软件,一旦对雇主不满意,分分钟创业单干,所以程序员行业创业成功的特别多。而且程序员们很容易通过开源程序技术给雇主设置招聘壁垒,让自己的位置难以被新人取代。因为商业软件真正的服务对象是雇主而不是雇员,商业软件的设计目的就是分化雇员的技术优势,让企业可以用低成本取代劳动力。使用开源技术而不是闭源技术,可以保障工人的地位,让工人得到前所未有的就业优势。也正是如此,所有我认识的真正懂计算机的无一不是Linux等类似技术的拥护者,而喜欢用微软和Windows相关技术的大多不太懂电脑或是对计算机一知半解。
总而言之,程序员是一个伟大的职业,我们不管是不是程序员,都要明白他们高工资背后的社会学和经济学原理。