【译文】采访我的母亲,一位 COBOL 大型机程序员

在我出生之前,我母亲就一直在欧盟最大的银行之一工作,我一直对她的工作非常着迷,尤其是最近几年我自己成为程序员之后。我曾多次受邀采访她,最终决定采访她。

一些说明

银行业的编程世界与我们大多数人习惯的编程世界完全不同,在发布此文后的几个小时内,我将接受您向她提出的任何问题,但请记住,出于安全考虑,有些问题可能无法回答。我将把这篇文章发布到 HN 和 Reddit,并在那里回答问题。
我不会把这写成问答,而更像是在向大家讲述她的故事。

更新:我在文章底部添加了一些常见问题的问答!

1991

这一年,她开始在北欧联合银行(Nordea)接受内部培训,该银行当时名为 Nordbanken(北方银行),2001 年更名为 Nordea。在培训期间,她必须参加各种测试,其中最主要的是智商测试,以确定她是否具备在这一领域工作的智力。其他测试还包括心理测试,以确保她的心理素质能够胜任该领域的工作,以及多任务处理测试。她在其他测试中的表现非常好,在 16 个可用职位中,她成功获得了一个。

这个职位是 IBM 大型机 COBOL 程序员,25 年后的今天,她仍然在同一家银行工作。

至少从技术角度来看,这个职位是银行里最重要的职位。比方说,如果我母亲和她团队里的每个人都辞职不干,幸运的话,银行会在几周内倒闭。她团队里的人都是全天候轮流值班。我记得在我年轻的时候,她不得不在周日的半夜打车去上班,以解决一个死锁问题。

COBOL……并不是像函数式 Haskell 或并发 Golang 那样的花哨编程语言,它是一种命令式、过程式语言,自 2002 年起开始面向对象。这种语言本身并没有什么问题,问题是几乎没有人懂它–至少在大型机编程方面。我母亲是她所在团队中第二年轻的人,她出生于 1964 年,而最年轻的人比她小两岁。由于世界上几乎所有的大型银行都使用 IBM 大型机,并以 COBOL 作为主要编程语言,因此这是一个全球性的问题。不过,小型银行的情况要好一些,它们通常不使用大型机,而是运行 Java 等语言。

我母亲经常问我想不想学,但自从接触过 Postgres、Redis、Node、Crystal、PHP 等更高级的东西后,我总是回答 “永远也不想学!”。我仍然对她的工作非常感兴趣,但这类系统给人的感觉可能是你能想象到的最糟糕的企业感觉,我想避免这种感觉。
我只能想象一个 20 岁的大型机程序员能拿到多少丰厚的薪水,因为在这种情况下,你的年龄是无价之宝。

数据库

他们的主要数据库名为 IMS,是 IBM 为阿波罗计划建立的分层数据库。他们内部称之为 DL/1,是 Database Language One 的缩写。他们正试图迁移到 DB2,这是一种使用普通 SQL 的关系数据库,但考虑到 Nordea 存储的数据量巨大,这项任务将耗时数年。这不仅仅是将数据从 IMS 迁移到 DB2 那么简单,他们还必须更新模块,以便从 DB2 而不是 IMS 加载和保存数据,而且他们有数千个模块,其中许多都是由已经去世或退休的程序员开发的。

每个事务都存储在 DB2 中。他们尽可能避免向 IMS 写入数据,只从 IMS 读取数据,直到他们新购买的系统完全集成,可以开始在 IMS 中存储数据。

IMS 非常老旧,速度非常慢(对于某些任务而言)。
搜索数据可能需要几个小时。哈,我们在这里争论 MySQL 的查询速度比 Postgres 快 2 毫秒。这有点讽刺。

他们还在很多任务中使用平面文件(flat-file)结构,而 IMS 支持不同的平面文件结构。其中一个例子就是 GSAM,它曾多次迫使我母亲打车上班,因为模块同时在同一个 GSAM-file 上工作,造成了死锁。

让我们先谈谈它们数据库的大小。DB2 只存储有关事务的数据,而每个事务的大小都不一样,这取决于事务往来的账户类型。私人账户(如我的个人银行账户)要比企业使用的银行账户简单得多。每笔交易的大小介于 2KB 到 500 字节之间,平均为 1KB。

目前,他们的 DB2 数据库拥有 110 亿个事务,法律要求他们将每个事务保存 10 年,并在 11 年后结算。目前,事务的历史只有 7 年,而且据估计,事务数量每年大约会增长 5%-8%,直到达到 11 年大关,他们就可以将超过 11 年的事务处理掉。

因此,目前 DB2 数据库拥有约 10TB 的数据,而这些数据只是事务。4 年后,数据量将达到 13-14TB 左右。
IMS 保存着大部分其他信息。这类数据的大小差别很大,因此很难估计它有多大,但我猜应该比 DB2 数据库大得多。

他们还将一些数据存储在磁带上,他们的程序会告诉机器从特定磁带加载/保存数据,这非常酷!

IDE

每个人都有某种形式的集成开发环境或文本编辑器,对吗?是的,每个人都有。集成开发环境被称为 ISPF,它就像一个完整的操作系统。ISPF 可以扩展,而我们称之为 IDE 的部分就是 ISPF 的扩展,它被称为 Endevor。

ISPF 直接连接到大型主机,这里没有所谓的本地开发环境。

批处理

大约 80% 的系统都是批处理工作。这些工作在一定的时间或时间间隔内运行,对数据进行处理或向其他银行/机构等发送数据。例如,当我买了一罐可乐,钱就会从我的账户余额中提取出来,但这笔钱实际上并没有被转移到任何地方,直到他们的批处理工作完成。这些工作通常在夜间执行,这就是为什么银行之间的交易通常需要一天时间才能完成。同一家银行之间的交易通常是即时的,因为它是立即执行的。

批处理任务处理的数据集是千兆字节级的,有时甚至是太字节级的,在某些情况下可能需要几个小时才能完成。我很想看看 IBM 的大型机是如何在数据中心的时钟转到 00:00 的那一秒突然开始满负荷工作的,那一定很酷!

银行面临的问题

使用大型机的银行有很多问题需要解决,但遗憾的是,时间非常宝贵。
程序员的年龄越来越大,没有多少人愿意学习,而新员工自力更生的时间需要 2-3 年,即便如此,对他们来说也有很多灰色地带。
有些程序已经有几十年的历史,甚至没人知道它们是做什么的,编写它的人也早已不在人世。

许多银行正试图购买闪亮的新系统来取代现有的系统,而几乎所有的程序员都在说:”这行不通,你无法取代我们这里的这个怪物”。
他们的系统之所以变得如此庞大,部分原因是他们在早期犯了一个错误,那就是为其他系统量身定制自己的系统。我们如何构建 RESTful 服务就是一个很好的例子,在这种情况下,希望从我们这里获取数据的程序必须调整自己的系统以匹配我们的系统。有些银行的情况并非如此,相反,他们正在向其他系统(如税务机构)发送数据,而其他系统随时可能更新自己的系统,这反过来又会破坏银行用来发送数据的当前系统。

银行系统也极为先进。个人银行账户与企业银行账户差别很大,每个账户至少有 50 种不同的银行账户。北欧国家还有瑞典政府账户,与个人和企业账户都不同。我想他们还有芬兰政府账户,也许丹麦也有一部分,也是不同的。

最后的话

北欧联合银行和其他银行在接下来的几年里会做些什么,会采用什么新技术,我们拭目以待。
我可能忘了问一些问题,如果您有任何问题,请继续提问,我会把问题转发给她,并在接下来的几个小时里写下她的回答。

Q&A

您为什么选择 IBM 大型机 COBOL 编程工作?

– 我一直想 “与计算机打交道”,但我的目标并不是这份工作。我在报纸上看到一则广告,就去应聘了,并得到了这份工作。不过在申请之前,我已经有了一些计算机背景。

你见过的最糟糕的事情是什么?

– 我的同事忘了在我们系统中最关键的部分(我们称之为 “收银机”)的一个模块的报表末尾添加一个点。它是处理所有资金的部分。结果,整个银行连续瘫痪了 16 个小时,原因是该模块继续执行报表,而实际上它本应在该报表之后停止执行。它基本上使我们的系统超负荷运转,就像一个自我 DOS。

您认为与北欧联合银行采用相同基础架构的银行未来会怎样?

– 大多数银行都承认,我们需要用更现代化的设备来取代老旧的主机。北欧联合银行已经购买了一套新系统,并承诺在 4 年内取代现有系统,但北欧联合银行负责多个国家的业务,更合理的数字是每个国家 4 年,因此总共需要 16 年。
没有认识到这一点的银行和金融业将面临一段非常艰难的时期。不过,我仍然认为我们将依靠 IBM 基础设施生存。

作为一名起步于 90 年代的女程序员,您遇到过哪些挑战?

– 完全没有问题。我有几个女同事,但大多数都是男性。这并没有给我带来多大困扰。

你已经为同一个实体工作了 20 多年,可能还是同一个代码库。这样的工作会不会让你感到厌倦?

– 是的,工作一段时间后肯定会觉得累,就像其他大多数工作一样。但在这里工作期间,我为金融领域的各种事情建立了许多全新的系统,这一直都很有趣。遗憾的是,从现在开始,我们再也不会建立任何新系统了,只能维护好现有系统,等待我们购买的新系统取代现有系统。

为银行编写代码有多可怕?

– 非常可怕,尤其是当我们将变更推送到生产系统时,这在周日会发生。每当我们向生产系统推送新变更时,系统的大部分都必须下线。整个 IMS 就是其中之一。在此期间,任何事情都可能发生,但我们有一个非常强大的测试环境,所以通常都能顺利完成。

您有没有给银行造成过重大失误?

– 当然有,1997 年我犯了一个很大的错误,当时我的小儿子(就是我,作者)刚上学前班,我的育儿假也结束了。我们有一个为退休存钱的系统。当时这类银行账户还没有上锁,法律规定在 55 岁之前不能从账户中取钱。由于账户没有上锁,只要有银行账号就可以取钱,所以解决办法很简单,就是不给客户银行账号。
我修改了一个模块,将客户的银行账号添加到发送给客户的邮件中,结果把事情搞砸了。于是,客户开始在允许取款之前从他们的退休储蓄账户中取款(还没有纳税!)。
这引发了一场声势浩大的检查,瑞典政府插手其中,金融检查和媒体都对此事进行了报道。这就是我。

您的工作环境如何?

– 我们最近搬到了一个更 “时髦 “的地方。以前我们都有个人办公桌,但现在我们有了这种 “随处可选 “的开放区域。我很不喜欢这样。

本文文字及图片出自 Interviewing my mother, a mainframe COBOL programmer

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注