When developing software, or giving the go-ahead for software being developed, you need to ensure the programming language is modern and fairly widely used.
If you’re wondering why this is relevant, let’s take a look at what’s going on in New Jersey.
Since the impact of Coronavirus (Covid-19), New Jersey’s unemployment insurance systems are overwhelmed with millions of new applicants for unemployment insurance. Consequently, the State Governor, Phil Murphy, put out an urgent call for developers with “Cobalt” computer skills.
Murphy and the New Jersey government meant COBOL, a computer language that’s over 60 years old. Developers with COBOL skills and experience were already rare in the 1980s, and many universities stopped teaching it, after its heyday in the 1970s. Now these systems are overwhelmed with applicants and of course, that means they're breaking. It’s rare that a legacy infrastructure is shown to have so many failings so quickly; but then no one expects a crisis, and no one anticipated Covid-19 having such a devastating impact in the first months of 2020.
Was anything done to replace these outdated systems?
In the case of New Jersey, when the Y2K bug was approaching (a computer virus everyone feared would stop all software working as the new Millennium began), developers with COBOL skills and experience were dragged out of retirement to make sure systems would survive the clocks changing from 1999 to 2000.
Y2K-related updates and repairs were essential to ensure these would keep running. And even then, there was an industry and government-wide acceptance that getting developers out of retirement to repair systems that were already out-of-date in the 1980s is clearly not acceptable. Those systems should have been replaced and overhauled soon after the turn of the century, in New Jersey and across the world. Unfortunately, despite numerous calls to replace these systems, not enough were overhauled in the 20 years when something needed to be done.
Now those systems, clearly pointed out at being inadequate and no longer fit-for-purpose 20 years ago, are crumbling under the weight of new users who need help right now. It’s unlikely that there are any or many developers with the relevant skills who've done any work in COBOL for decades. Will New Jersey find those with the skills to solve this problem?
Related read: How to Choose a Programming Language
Perhaps, or at very least, they should be able to piece together some kind of temporary solution. It’s not ideal, not when millions of people are relying on these systems to get immediate financial help from the state.
However, what this does painfully highlight is the need to replace legacy IT systems. In 2016, this call was made loud and clear, with a report to a US Congressional Committee: “Federal Agencies Need to Address Aging Legacy Systems.” Not enough was done after that, and further attempts went underfunded, or ignored.
Why outdated systems and languages are dangerous?
As we’ve seen in New Jersey, you simply can’t run essential state services using painfully antiquated software, based on a language that should be confined to the history books.
Proactive IT support means there are developers with the relevant skills to make repairs, ensure systems keep running, and that there are a series of tools that can interact with those systems. In this case of COBOL, none of that exists. Making it, effectively, a defunct and obsolete language. Obsolete languages have no place in software that millions rely on.
Here are a few of the key reasons why using modern programming language is mission-critical:
Security vulnerabilities. Every language and piece of software is vulnerable to cyberattacks, and when weaknesses are detected, developers are able to fix them.
Patches and updates ensure these systems are made secure again. Until the next attack, or vulnerability is detected; which again is more likely when a language is obsolete. That isn't possible when the language is out-of-date and there isn't anyone (or not enough people, at any rate) to fix problems and ensure updates are made regularly enough.
No user/customer support. When you’ve got an issue with Adobe, or Microsoft Teams, you can contact customer support. You know that help exists. A ticket can go in, or a call can be made, and if the issue is too difficult for a front-line agent, there are others with the relevant experience who can solve it. Every software problem is fixable with the right support in-place.
That ceases to be the case when software is outdated and no one is available to provide the relevant support at the right time. This issue is amplified to the point whereby often problems become unfixable.
Software stops working. When enough faults, bugs and flaws are present in any piece of software, it can stop working. When there aren't the developers with the right skills and experiences, and tools for the work, fixing legacy IT becomes impossible. Critical flaws can overwhelm software, causing it to stop working. In time, that can and will happen to legacy systems built and still running using obsolete coding languages.
Related read: Bugs, Fixes and Free Cheese
Conflicts and incompatibilities with new software and systems. Newer, more modern software, runs on up-to-date computer coding languages. When an outdated system tries to interact with modern software, there are often problems. New systems often interact with one another using APIs, and modular interfaces. Legacy systems rarely have those, and it’s often difficult to retrofit them.
Consequently, it can be comparable to trying to get customer support from someone who only speaks Latin or Ancient Greek. When two systems are incompatible, there are going to be errors and problems that make it impossible for them to interact. It isn’t sustainable, scaleable, or secure to have an outdated system try to work alongside modern software. Unfortunately, these legacy systems make it more challenging for everyone, especially users and organizations that rely on them.
As you can see, there are numerous reasons why companies need to keep software and the language they are developed with relevant and up-to-date. Obsolete languages serve no purpose, and shouldn't be used when systems are mission critical for businesses or any organization that depends on them.
When a computer language runs to the end of its lifespan, it’s time to review the software that is built using it and implement an overhaul. It’s a short-term investment that will have massive long-term benefits.