Have you seen the recent headlines? Wanted urgently: People who know a half century-old computer language so states can process unemployment claims (CNN 04/08/2020) and An Ancient Computer Language Is Slowing America’s Giant Stimulus (Bloomberg 04/13/2020). These articles include statements like “states have found themselves in need of people who know a 60-year-old programming language called COBOL to retrofit the antiquated government systems” and “The Covid-19 pandemic has exposed aging, inflexible computer systems at the heart of the U.S. economy — and a shortage of experts to fix the problem,” as well as “There’s really no good reason to learn COBOL today, and there was really no good reason to learn it 20 years ago,” says UCLA computer science professor Peter Reiher. You could summarize these thoughts as, 1) COBOL is old, and, 2) COBOL skill is in short supply.
For those who are not familiar with COBOL (COmmon Business Oriented Language), it is one of the original third generation computer languages (i.e., compiled language) developed for business applications. COBOL is a very English-like language where instructions are written in sentences and paragraphs, similar to how you would write a novel, and it is up to the “compiler” to translate these sentences into instructions that the computer can execute. COBOL is still relied upon heavily by financial institutions and government entities. A 2017 Reuters graphic, COBOL blues, shows 43 percent of banking systems are built on COBOL, 80 percent of in-person transactions use COBOL, 95 percent of ATM swipes rely on COBOL code, and 220 billion lines of COBOL in use today. A GAO report on Information Technology in 2016 noted that COBOL is used by federal agencies including:
- Department of Veterans Affairs
- Department of Justice
- Social Security Administration.
A 2019 GAO report adds:
- Department of the Treasury
- Department of Education
- Department of Housing and Urban Development.
And then there are the state agencies that needed to respond to updates for CARES for COVID-19 like:
- New Jersey
The Washington Post notes “COBOL is used to at least partially run unemployment insurance programs in all but 16 states, according to National Employment Law Project analyst Michele Evermore.”
COBOL is efficient, reliable, and self-documenting. The data would say that code that was written decades ago is still functional, and still delivering values years later. Once applications were designed, and the code was written, only minor changes were needed, and these were easily done because the code was easy to read and understand. The sheer volume of lines of code and the varying industries where it is used testifies to the versatility of the COBOL language.
A language that is still as pervasive and reliable as COBOL cannot be relegated to being outdated, antiquated or obsolete. “Old” does not necessarily mean bad, and it does not mean that it needs to be replaced. Many of these articles blame the COBOL language and COBOL applications, aging and inflexible, as impeding necessary changes, or worse yet, performance problems. The Washington Post article summarizes this succinctly: “the technology used by state and federal agencies has been left to rot.” This may be somewhat harsh, but it is clear that these organizations have underinvested in these technology areas. Rather than updating and maintaining applications that meet the majority of the requirements of the design and only require minor changes, many organizations have been trying to completely rewrite applications. Rewriting applications brings with it the inherent design and coding effort, testing and debugging, and potentially missed requirements and the introduction of unintentional errors.
So … why try to replace COBOL programs? The two potential arguments would be 1) COBOL is not a modern language, and 2) lack of skilled COBOL programmers. Modern languages are more prevalent on mobile platforms, and the integration between backend systems and available skill sets have encouraged many companies to shift applications to Java, C, and Python. But decision makers at these companies are likely reacting to the age of COBOL rather than the efficacy for the specific application. Perhaps they do not realize that COBOL has changed with the times. The COBOL of today is much different from the COBOL of the 1960’s. Today’s COBOL supports Java, JSON and XML. There are also modern tools supporting COBOL, including Eclipse IDEs (Integrated Development Environments) and debugging tools.
Large batch file and text handling using languages like Java or C would be at least challenging, and making such applications perform well would be incredibly difficult. It’s not that these modern languages are bad, they just have a different niche. COBOL is good at what it does.
Let’s talk about the skill set for developing and maintaining COBOL applications. The skill set issue has two components: 1) hiring companies, and, 2) training new programmers. Hiring companies have been reducing their investments in legacy systems and languages for years. Funding for information technology shifted from infrastructure to business lines, and business lines are focused on driving revenue and engagement—thus they are more interested in new application development and mobile platforms. Back-end systems were thought to be functional and reliable and requiring only minimal financial support. Staffing and training for the support of these infrastructure systems was reduced to bare subsistence. The result was that when a crisis like COVID-19 and the resulting updates required by the CARES act there was not enough skilled staff resources left to make the necessary changes in a timely manner.
The other skill set issue is training. Training requires trainees and trainers, and there is a relationship between the two components—if there are no trainers, there will be no trainees, AND conversely, if there are no trainees, there will be no trainers.
Looking around, there are very few places where students can learn COBOL. While COBOL used to be taught in computer science curricula in institutions of higher learning, today it is rarely taught in universities. Since there are no trainers, there are few new COBOL programmers. It would seem that the only way students would even consider trying to learn COBOL is if they already knew about the intricacies of the information technology industry. If we told students that if you learned COBOL and became proficient, when you graduated from college there would be a high paying job waiting, and that you would be able to pay off your student loan debt in just a few years, we would certainly have people interested. Recent ads for COBOL Programmers offer $50-60 per hour, and Glassdoor shows an average COBOL Programmer salary as $75K.
On the other hand, since hiring companies are not creating jobs for legacy skills, there is not a demand for learning legacy skills. Another way to look at this is that parents are not seeing skills like COBOL as being a viable career for their children, and are not seeking university programs offering these skills—no trainees, thus no trainers. It is not surprising that a university professor would say that “There’s really no good reason to learn COBOL today.” COBOL is not germane to computer science other than for history. Remember that computer science is focused on the “science” of computing, meaning advancing the future of computing, not the needs to the businesses using computing. Perhaps COBOL should be taught in the business school where students can explore the business benefits delivered by COBOL. Another possibility is to encourage companies with large numbers of COBOL applications to offer internships or apprenticeships focused on building COBOL skills.
Perhaps the attention that the media has drawn to the wealth of applications written in COBOL and the lack of skills to maintain those applications should be a wake-up call to parents, students and educators that there is still critical need for skilled COBOL programmers in a variety of companies. These opportunities are high paying jobs with reasonable job security. Note that even if these companies look for ways to convert COBOL programs to some other language, there is still the need to understand the existing COBOL code. So, regardless of whether the need is to maintain and update existing COBOL code or to convert COBOL code to another language, a working knowledge of COBOL is needed. Now is the time to LEARN COBOL. Now is the time to TEACH COBOL.