As the coronavirus crisis in the United States continues, practically every piece of public infrastructure will undergo unprecedented stress. Hospitals in various states have begun exceeding capacity, the White House is aiming for a “best-case” scenario of 100,000 deaths, and unemployment is skyrocketing.
While states dealing with virus outbreaks, such as New York, plea for any and all qualified medical professionals to offer assistance, other support systems also require specialized expertise. Over the weekend, New Jersey governor Phil Murphy put out an open call for tech experts to help balance the load placed on the state’s unemployment system, which runs on a legacy programming language called COBOL.
“We have systems that are 40-plus years old,” the governor said at a press conference. “There’ll be lots of postmortems, and one of them will be how the heck did we get here?, when we literally needed COBOL programmers.” As an unintentional testament to the language’s highly niche status, Murphy pronounced it as “cobalt” (it’s unclear if this was an error or a speech quirk).
COBOL, which stands for “Common Business-Oriented Language,” debuted more than 60 years ago and is still used in business, administrative, and financial databases. According to a 2017 article from Reuters, an “estimated $3 trillion in daily commerce flows through COBOL systems. The language underpins deposit accounts, check-clearing services, card networks, ATMs, mortgage servicing, loan ledgers, and other services.” Bill Hinshaw, who has used the language pretty much since its inception and who now runs the consulting firm Cobol Cowboys with his wife, Eileen, said that 95 percent of credit- or debit-card swipes run through COBOL systems. The advantage of COBOL, and a reason for its early and widespread adoption, is that it is human-readable. “If you want to say ‘perform,’ you write PERFORM.’ If you want to say ‘add,’ you write, ADD.’”
The problem is that COBOL is rarely taught to computer-science students these days, and despite its status as a mainstay of important database systems, the number of people who can effectively program and manage a COBOL system is dwindling. “COBOL was one of the few languages I was introduced to in college back in [the] 90s along with C, BASIC, and FORTRAN. Even back then people used to say that COBOL is a dying language,” a commenter on the popular tech forum Hacker News wrote over the weekend. The Hinshaws’ company, Cobol Cowboys, takes its name from the film Space Cowboys, which is about former astronauts who come out of retirement to complete one last mission (I don’t anticipate any COBOL programmers dying on the moon, however).
Many of the problems arising from COBOL systems often have less to do with the language itself and more to do with poor documentation. “The issues we run into are on the front end,” Hinshaw said. “Either they don’t have documentation or haven’t kept it current, or they don’t have how-to procedures.” A programmer designs something, implements it, and leaves little or no instruction for their colleagues on how it actually works. Consultants like Hinshaw then have to come in and figure out what exactly is happening inside the program.
Compounding the declining number of experts, a state government like New Jersey isn’t going to pay the same rate for maintenance or perform it as regularly as a private tech or financial institution might. To illustrate this point: Chris Rein, the state’s chief technology officer, has an annual salary of $175,000, according to public records. Facebook’s median salary in 2019 was $228,651; Google’s was $246,804. And those workers don’t even have to maintain an entire state’s social safety net. “When you’re dealing with state and federal government, they really have no competition. The banks and insurance companies, they have competition, so they keep things up to speed,” Hinshaw said, referring to how well maintained certain COBOL systems are.
Oftentimes, the sheer cost of replacing these systems often isn’t worth the effort. “It was one of those systems they kept saying they were going to upgrade to newer systems and then they would look at a cost analysis,” recalled Caren Caplan, a retired COBOL programmer who used to work for the insurance company John Hancock. “There were so many customers, and they were such a large database, and they needed so much processing power that they always went back to thinking the [COBOL] mainframe was the best way to handle the system.” Even if an organization did decide to transition their systems, there is the looming risk of a failed deployment or migration. Remember a couple of years ago when Myspace lost nearly all of the music that users had uploaded? Now imagine a similar glitch happening at the bank that holds your life savings or the insurance company that holds your policy.
New Jersey’s unemployment system has other possible failure points besides the COBOL system. Some of the problem might have to do with handling the load on the front end. New Jerseyans trying to make unemployment claims have been met with jammed phone lines and unresponsive web pages. COBOL isn’t necessarily to blame for those problems. (Similarly, financial institutions like JPMorgan Chase warned that their infrastructure was not ready to offer emergency loans last week, despite the program’s official launch this past Friday.)
Still, the current crisis has once again laid bare how many governments and financial institutions have technical infrastructure that runs on legacy systems, often guided by an “if it ain’t broke” philosophy. The result is an unemployment system like New Jersey’s that runs on older code, might not have its inner workings thoroughly documented, and has few contingencies for a doomsday scenario like, hypothetically, mass unemployment catalyzed by a pandemic.