Department of Homeland Security Still Uses COBOL (softpedia.com)
The Department of Defense has promised to finally stop managing the U.S. nuclear arsenal with floppy disks "by the end of 2017". But an anonymous reader shares Softpedia's report about another startling revelation this week from the Government Accountability Office: Another agency that plans to upgrade is the US Department of Veterans Affairs, which uses COBOL, a programming language from the '50s to manage a system for employee time and attendance. Unfortunately for the VA, there were funds only to upgrade that COBOL system, because the agency still uses the antiquated programming language to run another system that tracks claims filed by veterans for benefits, eligibility, and dates of death. This latter system won't be updated this year. Another serious COBOL user is the Department of Homeland Security, who employs it to track hiring operations, alongside a 2008 IBM z10 mainframe and a Web component that uses a Windows 2012 server running Java.
Personnel files are serious business. A 2015 leak of the secret service's confidential personnel files for a Utah Congressman (who was leading a probe into high-profile security breaches and other missteps) led the Department of Homeland Security to discipline 41 secret service agents.
Personnel files are serious business. A 2015 leak of the secret service's confidential personnel files for a Utah Congressman (who was leading a probe into high-profile security breaches and other missteps) led the Department of Homeland Security to discipline 41 secret service agents.
That's all I have to say.
Many of the stories about this say their systems "are about 56 years old and use an outdated computer language". That's actually a pretty good description of me! Well, I'm 58 and I use several outdated computer languages, but anyway...
Have you read my blog lately?
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. RM-COBOL.
OBJECT-COMPUTER. RM-COBOL.
DATA DIVISION.
FILE SECTION.
PROCEDURE DIVISION.
MAIN-LOGIC SECTION.
BEGIN.
DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
DISPLAY "What's wrong with COBOL?".
DISPLAY "Frosty piss!!!!!! ".
STOP RUN.
MAIN-LOGIC-EXIT.
EXIT.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Department of Homeland Security $18B over budget and 5 years late on a software designed to update personnel files. "(Big software consultancy) was supposed to have finished the new project based on (popular technology in 2016) in 8 months for $6M. Six years later the system is not functioning correctly, is full of security holes and is already obsolete."
(Big software consultancy) noted that there were minor changes in the specification but that they expect money to be thrown at the project more or less indefinitely. "We pay our campaign contribution requirements regularly and so see no reason why we should be held accountable for any delays".
Your bank, your insurance company, and any large corporation likely has COBOL programs running in their environment.
What it the issue with using COBOL? Is it the age of the language or the fact that all your professors in college choose not to teach it?
Using a proven tool to solve a problem is called being practical.
Ken
Who cares that they use COBOL? It's still a maintained language. The most recent standard is from 2014, just like C++. There are compilers for the language targeting virtually every platform that exists, including the JVM and .NET CLR, still under active development and support. The language supports object-oriented programming, although admittedly the verbosity certainly skyrockets there. Many of the largest financial institutions in the US rely on COBOL. Many government standardized file formats are very obviously driven by the nature of COBOL's structured I/O.
The bigger question is whether or not these organizations still retain staff that are capable of maintaining these programs. It doesn't matter if the code was originally written 60 years ago or last year if nobody knows how it works or how to fix it.
So first of all, there isn't anything wrong with COBOL at a fundamental level. It was designed for helping people with a certain sort of problem solving.
So if that's the case, why is it the case that anytime COBOL is mentioned, people will mock it? Why do people associate it with horribly unmaintainable code? The primary answer is that it was a victim of its own success. As COBOL programmers realized they could solve complex solutions without changing languages, they went ahead and wrote a lot of stuff in COBOL that COBOL wasn't really designed to handle. At the end they would frequently have something that would somehow manage to work, despite being horribly convoluted and unmaintainable. As such COBOL earned a bad reputation, though the language itself bears relatively little of the blame.
The language that really should take note of this history is Javascript. As people start writing more and more ugly code in Javascript, it actually worsens the language reputation, despite it being relatively serviceable for the intended problem domain. Contrast with something like LISP which most people won't bat an eye at being used, as it never came to be popular outside of the sorts of problems it works well to solve.
XML is like violence. If it doesn't solve the problem, use more.
The real issue is that younger engineers think that all software needs to be new, shiny and preferably, in their pet language.
I once worked in a shop where a group of very young engineers spent several years trying to re-write an old and fairly complex build system that was written in perl. They weren't re-writing it because it was slow or buggy or anything like that. They were re-writing it because they didn't like perl. And their reason for not liking perl was that it wasn't spelled "ruby". Years of work by several engineers to replace the perl program and they never got it to the state where it was as fast and reliable as the perl. Eventually the project was cancelled and they just found someone who knew perl and he adds a new feature every once in a while.
I've also seen scientific shops decide that they need to replace all their fortran code with python for vacuous reasons like "modernization". This is frequently paid for by our tax money and, after years of development, if the python even becomes robust enough to deploy, they are shocked to find that the new code runs an order of magnitude slower than the old code and sometimes gives incorrect answers.
This is the nature of the modern software industry. If something is written in COBOL/Fortran/perl, it needs to be re-written in python or ruby or whatever the pet language of the week is. Not because the old stuff doesn't work, because the old stuff is old. Younger engineers love to re-invent the wheel as long as they can use their pet language.
For the record -- IANACP -- I've never written or compiled a line of COBOL in my life..
But I did help migrate an old mainframe based system to a new "client-server based three tier architecture system based on Linux and a Java thin client" back in the very early 00's. The old system was near perfect and did the job, even though it ran on the (then alien to me) mainframe.
The new system was written by 20-somethings like myself and would (even with WAY more computational resources) conk out at the worst times. This, I believe, is the story of EVERY migration. It's not necessarily that older is better, or "they don't make them like they used to", but that software development is a bug-prone and arduous process that you will not get right the first time.
So if you're the VA administrator with an established career, you might be forgiven for not taking the risk of jeopardizing employee and patient data and services to satisfy some vague desire for "modernization", especially if you know that the project will be full of errors and WAY over budget.
What's the solution? I don't know. Start teaching COBOL and commission Google to create "Google Mainframe Migration"???
It's even easier than that:
1. Put aside your age biases
2. Hire one of the multitude of experienced COBOL developers who cannot find jobs because they're over 50
As a hiring manager, I see too many of my peers pass over older professionals in favor of some young hotshot they think is "cheap" and will work long hours. They don't recognize that this hotshot is padding his resume and biding his time until he finds the cool job he really wants, usually within 2-4 years. Meanwhile, those "old" pros would crank out far more quality code in their 40-45 hour weeks than hotshot would in 60, and they'll be happy to stick around for the long haul.
(And no, I'm not suggesting that all older developers are better than all younger ones. People are people. But rampant age discrimination is one reason this industry struggles to find good people.)