有人说,程序员不配叫工程师!
我的一个朋友最近提到:“科技界习惯把程序员称为工程师。但是我觉得,那种严格按照规定修建桥梁的人才算是工程师。”
这个说法让我心生感慨。大家都知道,硅谷经常用“工程师”这个词来形容技术工作者。不知道是出于什么缘故,如果你在初创公司工作,而且又不是销售、 营销或者设计人员,那他们就会把你称为工程师。“我们正在招聘工程师”是初创公司的口头禅,指的可能是从JavaScript程序员到机器人专家的各种岗 位。
这种“工程师”可能是“软件工程师”的简称,但这个用法暴露了天机:对于软件开发工作来说,工程师这个头衔太“硬”了一些。因为在传统上,工程师会受到监管、获得认证,经历学徒教育和继续教育。工程对于公众安全性和可靠性负有明确的责任,就算不一定每次都能实现。
科技业拉低了“工程师”头衔的含金量
最近几年,软件行业爆发了一些重大故障,导致塔吉特、家得宝、哈佛大学、LastPass等等机构和公司的海量数据遭到泄露,但这只是计算机系统带来的网络安全问题的冰山一角。大众汽车柴油排放造假案也属于“软件事件”,虽然那是对软件的故意改动。
但这仅仅是几个比较轰动的例子。如今的计算机系统给个人和社区带来的风险,如果发生在桥梁、高层建筑、电厂,或者导弹防御系统这些更有形的领域,完 全属于不可接受的范围。某些人的iPhone在更新苹果的iOS9系统之后“变成了砖”,无法使用。而像谷歌文档这样的服务也会莫名其妙地宕机,让重度用 户陷入困境。 “你的密码包含了无效字符,”Twitter上有人吐槽一个网站的提示,“不,是你的公司包含了不称职的工程师。”
和办公室大楼结构的完整性、国家核武器库的安全性相比,这些看起来都是小事。但是你买的新车很少出现不能启动的情况,你办公楼的电梯也很少会莫名其妙地卡住吧?计算已经成为了一种基础设施,但它没有其他基础设施运转的那么良好。
在摩天大楼和桥梁、发电厂和电梯这些领域,都有专业标准和监管机构对工程进行管理。但是,对软件开发进行工程化的努力已经进行了五十年,如今却离成功越来越远。
人们目前采用迭代方式开发软件,这倒也很合情理:制造业和建筑业的项目一旦实施就难以改动,但软件业和它们不一样。
软件业与世界的隔绝
软件虽然变得更加重要,但它与世界之间的隔绝加深了。早期的计算机系统涉及企业、行业、政府和社会等方面。比如汽车客户管理系统需要对经销商、供应 商、运输商、银行和贷款机构、监管机构、遗留系统和客户进行整合。但是,今天的软件大多都非常独立。比如照片共享服务Instagram去年的估值达 350亿美元,它需要的只是在服务器和应用之间上传和下载照片。
可以肯定的是,今天的云工具仍然会依靠一些基础设施(尤其是物理服务器和网络)来处理数以百万计的用户访问数以十亿计的文件。但这些活动基本上都被外包给了基础设施巨头去做。
在对通讯、金融和存储之间的整合进行了抽象之后,单个软件开发人员可以将它们当作黑盒子来使用。这种抽象有时候可以让软件更好更可靠地运行,但它也可以把开发人员与外面的“杂乱世界”隔离开来。
结果就是,软件开发已经在体制上成为了一种类似闭门造车的活动。而这和“工程”的主旨是背道而驰的。工程的主旨是与世界合作,而不是置身于一个单独的空间,一心要超越世界。
传统的工程学科——土木、机械、航空航天、化工、电子、环保——即有技术属性,又有社会属性。在工程师的协调下,桥梁和大楼修建起来。工程师设计了车辆和重型机械,又发明并实现了驱动这些设备的动力系统,设法把所有系统连接在一起。
硅谷不重视证书
其他工程学科都有证书和许可证机制。如果你想雇佣一个土木、结构或液压工程师,肯定会找拥有专业工程师(PE)证书的人。专业工程师一般需要获得4年制的学位,并通过一种或多种考试,并在注册工程师的监督下,接受4年或更多年的专业实践。
但IT行业不仅不像工程业那么重视证书,而且还越来越不把它当回事。一些硅谷大佬对正式学位并不在意,即使是谷歌那样的大公司也表示,他们看重的是能力而不是学历。
在软件开发的模式上,敏捷开发已经占据了主导地位,它侧重于快速迭代,而不是长期规划和复杂的文档。Scrum是一种流行的敏捷开发方法,其特点是朝着一系列不断变化的目标进行短暂的“冲刺”。
应用或Web服务具有暂时性,和桥梁、大楼那样的“百年基业”非常不同。但是,软件开发与我们生活的息息相关,却并不亚于桥梁和大楼。我们的汽车、 飞机、医疗设备,以及银行系统、医疗机构和保险系统,电话和通讯网络,乃至于娱乐活动都在使用计算机。像Scrum这样的方法即使可以产出像样的成果,也 无法保证基础设施级别的稳定性。
创业文化也正在改变工程教育。创业是崇高的,加速器和孵化器比比皆是,并非所有读计算机科学课程的学生认为自己会成为初创公司亿万富翁……但也不是 所有的学生都不这样认为。这些“工程师”获得的鼓励是把每一个项目都当作一门潜在的生意,做好扩大规模和兜售它的准备,而不是在这门学科中长期浸淫,把社 会福利看得至高无上。工程一向都是高薪职业,但是IT业把它视为了一种投机,而不是一种使命。
是生意,还是工程?
“工程师”这个词让人联想到头戴安全盔的高大形象,他们是设计者和缔造者,兢兢业业地开创着明天。工程的尊严来自于数十年来的严格管控、教育,以及学徒式认证制度,现在,一些人却把它看成一种宽松的速成手艺,想把它当作一门生意来做。
硅谷擅长于重新定义一些事情,比如他们把商业利益重新定义为一个“改变世界”的过程。而工程,就被他们定义成了一个建造临时性东西的过程。毕竟,像 平面设计师和对冲基金经理这样的专业人士也确实可以创建东西,但我们通常不会把他们称为工程师。他们的成果可能会成为基础设施,也可能不会,可能会符合公 共利益,也可能不会。
如果成果是基础设施,而且又符合公众利益,那么他们做的就是工程,而不仅仅是生意。
在加拿大,很多土木工程师都戴着一枚铁指环,象征着对这份职业的道德承诺。他们毕业的时候会参加一个“工程师冠名典礼”(The Ritual of the Calling of an Engineer),被告知自己在工程界工作的义务,并宣读诗人鲁德亚德·吉卜林撰写的誓言,然后才被授予这枚指环。