机器之心报道
参与:张倩、蛋酱
廉颇老矣,尚能码否?
随着失业人数不断飙升,美国的失业系统已经不堪重负。上周,新泽西州州长发布了一份「紧急召集令」,急聘精通「上古语言」COBOL 的程序员,帮助修复已经使用了 40 多年的失业保险系统。
COBOL 是一门非常古老的编程语言,诞生于上世纪五六十年代,鼎盛时期是七十年代,现在多数学校都不再开设相关课程,所以很多年轻码农都不具备此技能。有个段子写道,美国旧金山湾区的一家科技公司,为了与银行客户进行业务衔接需要招聘 COBOL 程序员,谁知道来面试的程序员,最年轻的也已经 63 岁了。
在这用人之际,众多码农「前辈」们站了出来,包括一些退休人员。
一家位于得克萨斯州的职业介绍机构 Cobol Cowboys 也在积极牵线搭桥。该公司有一位成员还是 COBOL 语言开发者之一 Grace Hopper 的同事,年龄已经有 80 多岁了。
除此之外,大公司也有所行动,表示将开放 COBOL 免费课程,解决人手不足的困境。
上古语言迎来第二春?
这个「上古语言」的称号,COBOL 当之无愧。对于 80 后程序员来说,你刚出生它就已经过时了。但由于存在稳定性好等优点,COBOL 一直是美国政府、商业和银行业务的支柱。
参与维护基于 COBOL 的系统工作的公司表示,95%的 ATM 交易通过 COBOL 程序,80%的现场交易依赖于它们,超过 40%的银行仍然使用 COBOL 作为其系统的基础。
作为一门古老的语言,COBOL 似乎越来越缺人,从 Cobol Cowboys 近几年的发展就可以看出来。这家公司的创始人 Bill Hinshaw 也已经 70 多岁了,从 60 年代开始就从事编程行业。近几年,他一直想关闭公司享受天伦之乐,但无奈客户仍不断找上门。过去三年里,该公司的程序员库已经从 50 个增长到了接近 350 个,平均年龄在 45 到 60 岁之间。
Bill Hinshaw 表示,为了避免严重故障,客户愿意不惜一切代价,甚至愿意提供全职工作。一位 60 多岁的 COBOL 程序员在 2012 年遭到解雇,被年轻程序员替代,但 2014 年原雇主又找到了他,去修复管理层没有预料的问题。一位 70 多岁的 COBOL 程序员都已经用上了吸氧器,每天早上仍要搭乘政府派来的警车,前往办公室工作。
由于年轻人懂 COBOL 的比较少,美国康涅狄格州劳工部正在召回经验丰富的退休 COBOL 人员。该部门的一位沟通人士表示,这些系统并不是全自动的,运行过程中的多个点都需要手动调整。此外,马萨诸塞州也部署了 500 多名远程工作的新员工,来处理短时间内激增的失业援助申请。
疫情导致的失业问题似乎让 COBOL 重新火了一把。据招聘网站 Indeed 统计,自从今年一月份以来,提到「COBOL」的工作岗位数量,每百万之中的比例增加了 6.47%。
不过,因为这种短期需求而去专门从事 COBOL 的开发似乎并不明智。自上世纪 90 年代以来,美国的许多专家便建议更换基于 COBOL 的系统,否则系统维护将变得越来越难。但由于替换成本较高,这一建议一直未能实施。在国内,只会 COBOL 语言的程序员也存在就业面窄等问题。比较常见的操作是,许多程序员在进入特定行业之后才开始学 COBOL,以满足实际工作需要。
中老年程序员积极响应
面对各个州的困境,美国的程序员们也正在积极相应,希望能贡献自己的一份力量。Cobol Cowboys 正在充当「桥梁」的角色,为个体程序员与其技能相符合的公共或私营机构项目进行匹配。最近几周,有很多资深程序员向 Cobol Cowboys 咨询,如何将自己的 COBOL 技能付诸实践。
随着编程语言的迭代,像 Cobol Cowboys 这样的公司或许会越来越「炙手可热」。眼下,Cobol Cowboys 正在与新泽西州方面取得联系,希望能提供帮助。
除此之外,也有一些程序员志愿者尝试贡献自己的 COBOL 技能。
北伊利诺伊大学的学生 Attarwala 在学校里的研究项目正是大型机,他看到州长在新闻发布会上的发言之后就联系了新泽西州方面。Attarwala 也是学校计算机协会分会的学生主席,他也在收集其他志愿提供技能的同学姓名。
上个月,一群公益技术人员组建了 US Digital Response,旨在为需要帮助的联邦和州机构对接具备相应技能的志愿者,目前已经有 3500 多人应召加入了。
作为 COBOL 语言的重要企业用户之一,IBM 决定在下周发布一系列免费的培训课程,面向程序员培训这门超过 60 年历史的 COBOL 语言。下个月,课程将在 Coursera 等在线学习平台陆续上线。
同时 IBM 正在搭建一个论坛网站,以便人们可以在上面互通有无。
但一位网友指出,各州失业保险系统崩溃的修复关键,倒不在于会不会 COBOL 语言,而是工程实践问题。
「缺少注释、变量命名问题、结构问题(缺少可读性等)之类的问题,才是关键所在呀。」