How AI Can Solve the COBOL Challenge
COBOL, also known as the common business-oriented language, appears to be making a comeback. But truthfully, it never went away.
COBOL is not a well-known language among modern developers, and very few universities still teach it as part of their computer science curriculum, but the over-60-year-old programming language is quickly becoming one of the most in-demand skills for future software developers.
At the onset of the pandemic, for example, state government systems struggled to handle unemployment benefits due to their outdated software. Plus legacy mainframe systems are still used by 71 percent of Fortune 500 companies and by 92 percent of the 25 largest retailers in the U.S. And globally, they’re used by 96 percent of the 100 largest banks and 90 percent of the 10 largest insurance companies.
As a result, so many of those organizations are scrambling to find and train more COBOL programmers to maintain, support and attempt to modernize their systems.
What is COBOL?
The COBOL Challenge
As COBOL-skilled developers retire or move on, some organizations try to solve the problem by either building on top of (or around) existing code or moving the code onto another platform. Unfortunately, these short-sighted solutions often result in cumbersome applications that are impossible for even the most proficient developers to understand or in systems that break when being moved in flight.
With a dwindling number of developers able to understand COBOL, the mainframe community and organizations that use COBOL are investing a boatload of time and energy into hiring young people out of college, teaching them how to write COBOL and then putting them on the frontlines to change enterprise systems.
But the COBOL challenge cannot simply be chalked up to a skills shortage. Understanding how to write COBOL is not enough — developers have to comprehend what an application actually does and how code changes can impact the system as a whole to avoid critical missteps.
This involves making new programmers read the millions of lines of code in a system and using static and dynamic analysis tools that essentially draw pictures illustrating what the code does. Or, sometimes, it requires working with the subject-matter experts who are still available to answer questions about the areas of code in question. Unfortunately, approaches for transferring knowledge therefore mischaracterize the problem space.
That’s where AI comes in, but popular contemporary approaches to AI will be insufficient in solving the problem.
AI to the Rescue
From requirement gathering to automated testing and troubleshooting, contemporary AI can assist with software development. And while some modern AI tools can help with the syntax of writing code — think Gmail’s Smart Compose feature, which is powered by machine learning to offer suggestions as you type — such fixes only provide incremental value.
Today, developers spend roughly 75 percent of their time on the first step: trying to find the area in the source code in which they need to make a change. Understanding code in these complex systems is time consuming for new developers because the systems have either become unwieldy, are not well documented, organized or structured or their functionality is vastly spread out.
While static and dynamic analysis tools illustrate what the code does, they are limited because you have to know where to look first. For example, variables can have meaningless names or different characters, and, as such, the developer may not even know what they need to be searching for.
Fortunately, using an old-school approach to AI and applying that to a different scope of the problem can save developers time in finding code by automating the process of precisely identifying the code that requires attention — regardless of how spread out it might be. Much like how contemporary AI tools cannot comprehend a book in a way a human does, human developers struggle to comprehend the intent of previous developers encoded in the software.
By describing behaviors that need to change to AI tools, developers no longer have to labor searching through and understanding code to get to the specific lines implementing that behavior. Instead, developers can quickly and efficiently find potential bugs. Rather than dealing with a deluge of code and spending weeks searching for functionality, developers can collaborate with the AI tool to rapidly get to the code on which they need to work.
This approach requires a different kind of AI: one that doesn’t focus on assisting the developer with syntax. Instead, AI that focuses on understanding the intent of the code is able to “reimagine” what computation represents into concepts, thereby doing what a developer does when they code — but at machine speed.
This greatly improves the speed at which functionality that needs to be changed can be identified in the absence of subject matter expertise. For instance, the code that controlled and managed data surrounding stimulus checks in the Internal Revenue Service’s mainframe system could’ve been rapidly and precisely identified using AI and changed with confidence.
From Concept to Creative Solutions
Developing software and writing code is itself a creative process. Much like writing a paragraph, software developers engage in cognitive activity to put together a conceptual reflection of what they’re trying to create.
Consequently, creativity is required to construct the right set of algorithms and instructions that tell a computer what to do and how to do it. That creativity, combined with specialized domain knowledge of the industry and institution, means no AI can currently combine the general knowledge of the business world with the specialized expertise of a COBOL developer.
However, AI can reduce the laborious cognitive effort that is required to confidently understand where in the code to make a change. This enables developers to use their creativity — rather than brute force — when coding, ultimately accelerating development productivity and making their jobs more fun and satisfying in the process.