工作十七年的程序员对IT 行业感到失望
在 IT 行业工作了 17 年,经历了两段还算小有成就的职业生涯后,我决定要退休了。
不是钱的问题
我并没有中彩票。尽管我在第一段职业生涯经历了经济泡沫的后半段(大学毕业后第 4 个月经历了第一次全体大裁员;在 2008 年金融危机带来的大萧条中,又经历了 11 次大裁员),但我并没有因此发了大财而退休。
在我曾经工作过的公司中,没有一家能够像 Facebook 那样,薪酬高得能让员工买下加勒比海的岛屿,在那里种他们喜欢的荷花。我工作过的最初两家公司已经消失在历史长河中,第三家被卖掉了(后又被转售),第四家被一个愤怒的混蛋(Sun 微系统公司的 Jonathan Schwartz)以低价卖给了另一个愤怒的混蛋(甲骨文的 Larry Ellison),第五家即将以远低于市场估值的价格被私有化。
任何一个想靠科技公司的期权获得退休奖金的人,或许也可以试试买彩票,说不定也会走狗屎运,但那不是我的风格。我很庆幸自己可以成为工业化世界中为数不多的 IT 行业从业者。这个行业为我们提供了成为祖辈们所说的“中产阶级”的经济条件。除此之外,运气没有起任何作用。
我对 IT 行业感到失望
在最基本的层面上,IT 行业(我认为和大多数行业一样)满足了员工想要保住工作饭碗的愿望。很多职位的存在以及它们存在的方式是否符合股东的最大利益根本无关紧要。于是,一个非常舒适惬意的行业就这样诞生了。
真正的改变发生得非常缓慢,创造性的颠覆来得更慢。人工网络效应出现了,雇主希望员工具备当下被认为“成功”的技能,求职者希望自己的经验里包含目前被认为“成功”的技能。至于技术是否真的先进,或者是否真的适合用来处理手头的任务,以后再说。
只要能赚得到钱,不管那一年出现了什么技术或公司,供应商们都会争先恐后地排起长队。产品有明显缺陷,这些缺陷的存在只是为了与其他厂商保持“合作关系”,而这些厂商的存在就是为了弥补产品的缺陷。这一切的背后可以说是千疮百孔。
更糟糕的是,从喜欢研究底层问题并通过解决这些问题创造价值的人的角度来看,软件技术栈在上层就已经僵化了。越往底层去,考虑从事相关工作的意愿就越弱。
没有人真正对 PC 的替代品感兴趣,尽管它们的基本架构与现今最常见的用例不一样。服务器仍然配备大量的固件,专有性非常高,带有红色封面的规范手册活页夹时刻在提醒你,绝对不允许任何人以任何形式泄露其中的内容。开源革命的意义也就到此为止了。
过去 10 年被鼓吹得最厉害的底层技术是 UEFI,它用稍微现代化的 MS-DOS 版本取代了部分系统固件。很明显,UEFI 的唯一目的是让微软能够继续对售出的每台计算机收取使用费。鉴于 Windows 的不断衰弱,这对微软来说是明智之举,但在其他人看来,此举令人深感厌恶。
UEFI 并没有为运营商、客户或操作系统供应商解决任何问题。如果非要说有点什么,那就是它带来了更多的问题。虽然有解决问题的方法,但据我观察,这对供应商来说并不划算:AMI、微软和英特尔都喜欢带有专利权的机器,而且没有动力自己设计或让其他人去设计更好的东西。底层技术实际上是为供应商服务的,而不是为客户。
操作系统层的情况几乎同样糟糕。Go 语言之父 Rob Pike 坚持认为有关操作系统的研究已死。Pike 和他的同行们似乎认为,改进操作系统的方法就是扔掉它,然后根据之前的标准开发一个新的。当其他人都在使用 Unix 时,Pike 花了数年时间研究一个学术性操作系统,然后总结出了构建一个更好的系统(无论是更好的 Unix 还是另一种完全不一样的操作系统)所需的经验。但 Plan 9 是一个巨大的失败。Pike 和他的语言运行时还有很多其他问题,这些问题我已经在其他文章里讨论过了。
操作系统的发展到底怎么了?这可能比你想像的要复杂得多,但你很难找到答案。
目前占主导地位的操作系统是 GNU/Linux(服务器和移动设备)和微软的 Windows(所有不是大型机的遗留系统)。它们都没有管理大规模部署所需的任何特性,也没有人在做这方面的工作。不过,微软似乎已经找到了一棵摇钱树,而且显然打算把它榨干。这没什么可耻的,不过这并不会带来任何技术上的提升。他们的操作系统非常适合公司台式机这样的市场,不需要进一步提升。
GNU/Linux 的开发者经常想要尝试做一些大事,却从来没有做成过正确的事情。就像 systemd,即使它运行得很好,也只不过是对 SMF(Service Management Facility)的改进。要知道,SMF 已经在 illumos(一种 Unix 操作系统)上运行了 10 年。所以,我们不可能在 GNU/Linux 上看到令人眼前一亮的创新。
操作系统开发和创新的需求非常迫切。在 illumos 社区以及其他一些地方,仍在进行大量有趣的工作。但人们似乎对使用 GNU/Linux 之外的东西不感兴趣。说到底:人们只关心能不能保住工作。
GNU/Linux 就像 90 年代的微软和 70 年底的 IBM。如果你选择了它,而你的项目失败了,那一定是应用程序开发人员的错。如果你选择了 illumos,而你的项目失败了,那一定是操作系统的问题,也是你的问题。
虽然 illumos 确实更好,它提供了更好的调试、观察和改进应用程序的方式;它是为以数据中心的部署而不是桌面使用而设计的。但应用程序开发人员不会费尽心思去学习这些东西,他们反而可能讨厌更好的工具的存在。毕竟,当他们无法解释为什么自己写的程序不能正常运行时,如果可以归咎于质量低劣的工具,那对他们来说会更有利(这样就可以保住自己的工作)。考虑到如今成为一名应用程序开发人员的门槛越来越低,我也不想去责怪他们。
这一切的最终结果是,我们的数据中心占据了数公顷的土地,里面摆放的机器的架构与运行 MS-DOS 的 Packard Bell 486 和 1987 年残破而业余的 Unix 几乎一样,还有一大堆复杂的硬件和软件组件。我本想请那些认为这是一种进步的人举手表决,但有太多的人正愉快地享受着这一做法所带来的不劳而获的好处。
那些系统公司都去哪了?
我加入 Joyent 的时候,当时的 CTO Jason Hoffman 一直对我说我加入的是一家系统公司,这不失为一个志向高远的抱负。我们很容易就想到淘汰数据中心、精心挑选(甚至精心设计)的机架、使用 SDC(SmartDataCenter,https://github.com/joyent/triton)和专为数据中心定制的高级 Unix 系统 SmartOS 管理的硬件。这一愿景部分实现了,软件栈已经在商用硬件上正式运行了多年。要想实现剩余的部分,还需要做大量的系统工作:硬件、固件、操作系统和编配。
与此同时,每个人都对 OpenStack 大加赞赏。OpenStack 是由委员会设计的一款软件刨花板(a software particle-board designed by committee, consisting of floor sweepings and a lot of toxic glue),由于它不是一个很合适的系统,很少有 OpenStack 部署能超过 12 个节点。但为了 OpenStack,企业愿意“投资”数十亿美元。我们不难想象,如果一家系统公司投入哪怕十分之一的资源来建立一个连贯的端到端系统会带来什么样的结果。
我不是因为对 Joyent 失望而退休,我希望还在那里工作的朋友和同事们一切顺利,但平心而论,我对我们之前没能真正继续走完那条路感到失望。我多么希望有人这么做,但那也只是我个人的一厢情愿。谷歌为自己的系统所做的工作应该是最接近的,但它们是完全私有的。从他们所做的公开工作的质量来看,我不认为他们已经按照我所认为的那样解决了问题。也许有一天,有系统公司会解决这些问题。
结 论
每天带着痛苦和失望的心情上班,这种日子很难熬。这个行业已经崩溃了,至少在我看来,它已经崩溃了。如果我没有存款,或者如果没有其他更好的方式来打发时间,我可能会和其他大多数人一样:日复一日地上班打卡,过着行尸走肉的生活。
或许有人认为这是我吃不到葡萄反而说葡萄酸,对此我可以理解。还有一种说法是我会因为自己的失败而痛苦一辈子。这两种可能性我都愿意接受,如果你选择后者,我也不会反驳。幸运的是,至少对我来说,这两种可能性都得出了同样的结论:是时候离开了。预测未来(预测自己的未来尤其如此)总有点傲慢自大的意味,因此我不能肯定地说我就永远不会再出去工作了,但我可以很肯定地说,我没有打算这么做。或许这个行业会变得更好,或许我还是会出去工作,或许还会有其他令人兴奋的事情发生,让我也想成为其中的一员。或许,什么都不会发生。
作者介绍:
Keith Wesolowski,原 Joyent 公司高级工程师,DTrace 主要贡献者之一(编者注:DTrace 是过去数十年操作系统方面最具意义的革新之一,除了被用于 Solaris,也先后被移植到 FreeBSD、NetBSD 及 Mac OS X 等操作系统),热衷开源和操作系统(https://libraries.io/github/wesolows/contributions)。这篇博客撰写于 2014 年,但六年后的现在,文中的观点依然没有过时。