编者按:本文来自微信公众号“敲黑板”(ID:qiaoheiban8),作者:黄天然 王安忆,36氪经授权发布。
有点经验的相亲女都知道,程序员是吃青春饭的。
美国硅谷也流行着这样的传说,“如果你在一家大公司工作超过10年,那么你的技术将会落后六个时代。”
61岁的Java之父James Gosling在应聘时遭遇年龄歧视
因为计算机技术迭代太快,程序员超过四十岁,一旦失业似乎下一站就只能是做Uber司机。
然而,美国疫情导致的失业潮,正让各州在疯抢一些懂得COBOL语言的退休程序员,新泽西州州长菲尔·墨菲发出紧急招聘,开出时薪55美元至85美元的价格。
菲尔·墨菲说政府急需精通COBOL语言的程序员
这是因为,各州的政务系统几乎都是用古老的COBOL语言搭建,根本扛不住上网申请申领失业救济金的巨大人流。
过去两周,新泽西州政府已经堆积了超过36.2万份申请,其中一半尚未支付,使用了40多年的失业系统随时需要维护,而目前新泽西州招募到的程序员,最小年龄都在60岁以上。
上世纪50年代,微型计算机还没有发明,当时的编程语言只有机器和汇编语言,人们需要一种更简单的语言来为那些笨重的大型机编程,COBOL应运而生。
格蕾丝·赫柏
1959年5月,格蕾丝·赫柏(Grace Hopper),就是那位在美国海军办公室记录下第一个“BUG”,并最终成为美国第一位女性海军将军的女程序员,和41名计算机用户和制造商在五角大楼成立了数据系统语言会议(CODASYL)临时委员会。
格蕾丝·霍珀正在教学COBOL编程语言
COBOL是英文Common Business-Oriented Language的缩写,意指面向商业的通用语言,可用于统计报表、财务会计、计划编制、作业调度、情报检索和人事管理等方面的数据处理。
Cobol编程最初是手写表格
同年9月,COBOL确定基本语法,并于1960年12月开始在两家不同供应商的计算机上运行。此后的20年,COBOL成为商业语言的首选。
1960年12月6日,COBOL在RCA上运行测试程序的打印版本
随着PC时代到来,各种编程语言逐次兴起,但COBOL并未退出历史舞台。
2017年,路透社调查发现,全球目前仍有2200亿行COBOL代码,占据活跃代码的80%,大约95%的ATM交易通过COBOL程序。
Micro Focus是一家专门负责维护COBOL代码的公司,其全球产品营销总监德里克·布里顿在去年说,“任何时候,你联系政府部门,转账或查看帐户,支付贷款、买保险、运输包裹、订购一束鲜花或机票,甚至股票交易等等,都是在与COBOL互动。”
在美国,使用COBOL最多的是金融机构,包括银行、保险、金融管理和股票交易相关机构,其次才是政府服务部门。
从上世纪90年代开始,美国多个行业专家建议更换基于COBOL的系统,否则系统维护将变得越来越难。
2016年,一份“联邦机构需要更新老化系统”的报告中也提到,美国退役军人事务部还在使用COBOL编程语言的管理系统,“政府部门管理系统应该使用更现代化,可便于维护的编程语言。”
COBOL编程
确实,在编程语言排行榜上,COBOL早就没影了,比它年轻30多岁的Java和C语言为争榜首成天闹得不可开交。
而且,虽然COBOL诞生之初是以“简单”为目的,但这个简单是相对的——COBOL经典语录中有一条,“1000行代码实现一个小需求”……
对于那些学着Java、C语言长大的程序员来说,COBOL过于艰涩难懂,有人将学习COBOL的经历形容为“就像吞下了带刺的立方体状药丸”。
从20世纪80年代末开始,许多大学不再将COBOL纳入计算机科学课程。
网友在推特上晒出COBOL的书
因此,至今精通COBOL语言的程序员,年纪大都在50岁以上,甚至他们的字典里没有退休。
COBOL Cowboys公司创始人比尔·欣肖,75岁还要出门帮美国金融企业修复系统。
有32个孙辈和重孙辈的比尔,早就想关掉公司享受天伦之乐,但架不住以前的客户总找上门。COBOL Cowboys的大多数员工,早就到了退休年龄,老头子们嘴里的“年轻人”,其实也都过了五十岁。
COBOL Cowboys公司创始人比尔·欣肖
还有一位60多岁的COBOL程序员,曾在2012年遭到解雇,被年轻程序员顶替了岗位,但只过了两年,原雇主又找回来求他继续返岗工作。
还有一位70多岁的COBOL程序员,都已经用上了吸氧器,每天早上仍要搭乘政府派来的警车,前往办公室工作。
曾经年轻时的COBOL程序员正在编程
过于古老的特性,赋予COBOL语言“弹性、安全”的优点,近年来从未遭遇黑客入侵。
这恰恰符合金融机构和政府“求稳”的需求。
就在去年,美国马里兰州的巴尔的摩、还有佛罗里达州两座城市的政府系统就遭到黑客的攻击勒索,为了赎回被黑客锁死的市政系统,佛罗里达州政府向黑客支付了两笔总额超过100万美金的比特币赎金。
巴尔的摩市政厅的一扇门上贴着“电脑被黑”
既然早年用COBOL写好的系统能用,而且还足够安全,就让其继续跑着,各地政府都抱着得过且过的态度,直到突然遭遇这次失业潮的冲击。
哪怕美国经济最发达的纽约州,服务政府的计算机系统也是用COBOL语言编程,政府官员也承认,这些设备就像是“大型计算机鼎盛时代的电子古董”。
去年,纽约州才与印度孟买的塔塔咨询服务公司(Tata Consultancy Service)签订了一份5600万美元的长期合同,打算彻底翻新陈旧的政府系统。可惜的是,疫情到得比新的系统更早。
3月,45万纽约市民试图登录劳工部网站申请失业救济,系统不堪重负出现故障,劳工部的热线电话也被打爆。
纽约州州长科莫承认救济发放出了问题,因为许多市民连续几天都可能打不通热线电话。“我对此感到很抱歉,这肯定会让人感到恼火。”
更让人恼火的是,纽约州政府网站还弹出一条消息,要求救济申领人使用一种早已绝版的浏览器——网景领航者(Netscape Navigator),才能进入正常申领流程。
IE都快没人用了,政府指定的版本竟然还是它的祖先。
网景浏览器界面
纽约皇后区的网约车司机穆罕默德,耗费足足4天才打听到申领救济的流程,而且政府要他将自己的工资单传真到政府办公处。
冒着感染新冠病毒的风险,穆罕默德跑遍街头巷尾,最终在一家商场找到了传真机,他立即发送了申请资料。但直到4月4日,他还在家中等待消息,没人告诉他能领到多少救济金,以及何时才能到账。
系统老化引发的问题,正在美国各州轮番上演。
Twitter网友吐槽政府的电脑设备还是40年前的大型机
4月2日,佛罗里达州经济发展部主任对该州的失业网站出现故障做出公开道歉。州政府已开通了纸质申请渠道,可将资料邮寄到政府办公室,然后由第三方服务商录入到系统中。
康涅狄格州劳工部发言人南希·史蒂芬斯也表示,目前政府积压的工作,可能需要5个星期才能完成,跟新泽西一样,他们也在高薪寻找COBOL程序员帮助修复系统。
《纽约时报》报道美国失业率飙升
目前,美国正面临着一波失业高峰,申请失业救济人数已经达到660万人,美国国会承诺给失业者每周600美元的补贴金。然而政府系统不给力导致补助发放遥遥无期,疫情下的失业焦虑无法得到快速缓解。
随着程序员逐渐老去,COBOL语言已成为美国政府和金融系统难以解决的痼疾。
2018年,美国信息技术和创新基金会调查了全美400多个政府网站,发现几乎所有网站都未达到基本的技术标准:页面加载速度、移动端兼容性、安全性、高访问量处理能力,均不及业界标准。
2017年,美国有的地方政府还在用window XP
“政府和金融,依旧是COBOL编程语言的大客户,目前你很难在联邦政府中找到一个没有用它编写程序的机构。”Micro Focus的COBOL产品销售总监艾瑞说。
美国国土安全部办公室
据统计,COBOL编写的应用程序支持着美国80%银行以上的日常交易、管理着医疗体系中6000万名患者、每天搬运7.2万个集装箱、处理85%的港口业务……
COBOL语言加上2008年出品的 IBM z10大型机服务器,不仅用来跟踪海关执法人员人事聘用和退伍军人的抚恤金发放,甚至还支撑着美国国土安全部的边境执法业务和美国社会保障局的退休金计算业务。
IBM z10
美国大量政府服务和金融系统,都运行在这一古老的基础架构上,这些机构本身就倾向于固守标准化的陈规,毕竟更换语言和系统可能让关键数据面临风险。
只是经年累月下来,过渡到新设备需要耗费的费用和时间成本变得越来越高。
澳大利亚联邦银行
据路透社在2017年报道,澳大利亚联邦银行曾在2012年更换其核心COBOL平台,结果花了5年时间,耗资7.5亿澳元。而澳大利亚另一个政府机构,为将系统语言从COBOL过渡到Java,花了4年时间依然没有解决。
可想而知,要让美国政府彻底翻新这一套系统,需要花费多少的时间和代价。
很难想象,这就是那个拥有全球最顶尖计算机技术的超级大国。