The persistence of COBOL: why a 60-year old language is still in demand
idgconnect.com
idgconnect.com
Their reasoning was it would be easier to train new individuals and work them up, using senior staff as trainers and escalation points than to try and find existing COBOL programmers. They started the pay off quite well and were able to pull in some highly talented people. They approached it almost like an apprenticeship, only with programming as the trade.
If you bring in someone who is smart, pragmatic, and interested in a nice indoor job with good pay, they're more interested in the specialized job training and position that comes with it.
Someone I knew made the tongue in cheek retirement joke that "where else could I learn COBOL and mainframe in university, and never learn anything else until I retired?"
The jokes I heard were about ADD 1 TO COBOL GIVING COBOL, following the convention established by C++.
Recent versions of the COBOL standard, like Fortran and Ada, include object-oriented extensions.
I always assumed it'd be `POST-INCREMENT COBOL BY 1`
If your skill is in demand, get training in that domain.
If your skill belongs to a niche, be careful, consider how you can reuse the knowledge you are aquiring.
> It's important to recognise that the skills crisis is not simply about a shortage of people who understand how to code in the COBOL language. The deeper issue is the lack of application knowledge. Being able to code in COBOL is the first step. The really hard part is understanding what an application does.
We techies - programmers as well as business folks in tech - love to think that a programmer's most valuable skills are their knowledge of programming languages. It isn't, and never was. You can learn a programming language from a book, and practice it virtually anywhere. Domain knowledge, such as understanding the rules of a bureaucracy or a regulatory regime, can usually only be acquired through years of on-the-job training.
If there's a COBOL angle to this, it's what they highlight in the next paragraph: Tight coupling within COBOL monoliths, which is probably more a result of their age than their implementation language, has made it impossible for someone with less-than-extensive knowledge of the system they're working in to be able to work efficiently and effectively. I'm not sure what the solution to that problem is, but I don't think it's ever going to be a programming language.
Until recently, this wasn't a common thought beyond the beginner stage.
I think the mindset comes from the demand to grind out websites. A short ramp up has become way more important than ability to learn on the job.
Programming isn't magic, one of our not-software disciplines has a tradition of learning python so they can make business logic changes to internal tooling we maintain for them. Not that it's hard for them to get on our schedule (they usually preempt our other work), it's just that it's so damn easy for someone smart to pick up python.
How many programmers does it take to screw in a light bulb?
One. They hold the light bulb still, and the entire office revolves around them.
As per the Peter Drucker terminology, if you use COBOL then programming is likely a cost center in your organization.
True, it is a prejudice. Disregard for programmers is also common among organizations that adopt "cool" technologies. And quite often they also suffer from other specific problems (e.g.: ageism, obsession for the hype "du jour"). But prejudices are like that, they just happen.
After working for a couple organizations that had extremely old code infrastructure, there’s world of difference between “we maintain it because it’s the right technological risk” vs “we’re too lazy/scared/incompetent to move away from it”
Governments use to have extremely large databases of extremely critical data that has to be collected and processed in a secure, correct, and timely basis or the agency will be in breach of some law that governs it. It's not surprising they were early adopters of large computers.
Traditionally, everything that's not forbidden is implicitly permitted in private initiative. In government, it's usually the reverse: anything that's not explicitly allowed by law is forbidden. And sometimes a crime.
This selects for very risk-averse organizations. The environments where these COBOL programs run are also remarkably stable. If it's running now, it'll most likely continue to run for the next 20 years of software and hardware updates. A lot of systems still think they are reading and writing tapes.
However, I have worked in some of those environments where programmers refused to change, admittedly due to their unwillingness to learn despite their customer wanting the change. Even at organizations with large risk-adverse datasets, there's a desire to change but an inability to execute. The VA for example, has struggled for decades to modernize their system despite sinking millions and millions of dollars into it.
>If it's running now, it'll most likely continue to run for the next 20 years of software and hardware updates.
This is fine if the system is expected to remain static. Problems often arise when hardware or software are expected to change and still run the same legacy code.
One of the selling points of IBM mainframes is the pretty flawless backwards compatibility. I wouldn't be surprised if you could run unmodified binaries compiled for the 360 model 20 on a z15.
Governments are often the organizations needing COBOL programmers, but government salaries are not commensurate with the tech industry (often due to bureaucratic limits), especially when compared to the consumer tech industry. In that context, pay caps out at around $170k no matter how in demand the skill is
The moment you stop maintaining your code your system will grow old very fast.
Cobol has just a different stink than the language you are familiar with.
Highly vital demoscene and even new games released on both platforms.
Well guess what, it most likely will outlive every other language and framework created in the last 10 years by a large margin.
I just wish it would pay better to attract senior developers. The language is easy, but it has to be a real challenge understanding all of the interconnected processes and that requires a lot of experience. Surely there are many who would choose a COBOL job over learning a new framework every 2 years.
I think it's very naive to think that COBOL will outlive Java or C#. Their presence is so huge. I bet that even Rust and Go will outlive COBOL, but I'm not so sure about Go.
A lot of those migrations failed miserably. Others failed spectacularly.
I remember seeing a lot of fixes for the Y2K bug that looked like this, too:
if (year > 50) {
year += 1900;
} else {
year += 2000;
}
So expect another Y2K crisis in about 30 years.This was, in fact, how most of it was done.
I don’t want to migrate 70.000 programs to a new language that will become a fad in 5 years. You cannot rewrite some systems (banking, aerospace, defence, energy,...) from zero every 5-10 years.
You don't need to jump on flavour of the month stack just because you are doing a rewrite.
It was intended to be that, but ended up being a DSL for machine code. The same happened to SQL.
[1] Though, to be honest, the claim that you should learn COBOL because there's a shortage of programmers and it pays well is not particularly true. Nobody I know of is making big money with COBOL. It's mostly an average-paying, uninteresting programming job. You'll probably make money by climbing through the ranks within the bank organization, where your COBOL skills will become slowly irrelevant.
Yes, there are frames that go on top of COBOL. But a lot of the reasons to actually use COBOL come down to:
- there are 300+ applications on your mainframe, and each has an interface, associated queues, code table, and calling conventions which are specified in COBOL
- correctness of solution, and proving it correct
- the field twiddling decisions based on data are low level, "inspect field A, do X, else do Y, afterwards save A2 and send message B", that doesn't appear to leverage well into a higher language
- tooling on the mainframe supports COBOL quite well, there is a lot of infrastructure which very very smart people have put in place over the last several decades
So there's a lot reasons why COBOL "fits" in the current space. It's not cool though. And that inertia is worth multiples of billions of dollars in invested time, and replacement costs for like-with-somewhat-better can easily hit trillions of dollars. I don't really want to do the envelope math, because some applications are ~1 million, and some are 100-250 million to replace.
The HR issue is clearly something that organizations know about, and have been trying to address for literally decades. COBOL was passe in 1995, and 2000, and still is, but as an industry we're still addressing this issue in 2020.
The other aspect of your question that I'd like to address is: why not program in COBOL? What does a code generator give you? what are you gaining? I'm trying to ask a question about mentality towards COBOL. COBOL can be compiled just like any other language down to efficient byte code. If we had a supposed "10x DevOps program engineer", what makes COBOL something that they couldn't master and leverage in a month? The experiences gained wouldn't simple be "COBOL programming", it would be an entire development and run environment, release and CI approaches, etc.
All that said, I had the opportunity to work in COBOL, and I passed on it, so I can understand as an average programmer why not to work in it.
Doesn't look like it's in demand compared to current hotness (React/Angular/ML). It's still a dead end for anyone wanting to pursue a career in software engineering.
Find a list of:
- consumer and commercial insurance companies
- healthcare insurance companies
- retail banks
- any industry that has been doing high thoroughput, large value, and large volume sales in a very constrained environment for more than 30 years: oil and gas, ocean and rail cargo shipping, commodity sales brokers
- every major government with a digital infrastructure older than 30 years (this brings us back to pre-1990, mainframe was the only real option back then)
I would posit that in each of these areas you will find very well paying jobs, very demanding and interesting work that's critical, and some extremely smart coworkers.
I would go further to say that if you showed up unannounced with a security clearance, history, resume, and credible reference checks, that you could have a letter of offer (as quickly as the wheels of bureaucracy spin) and salary you could negotiate on.
Not even remotely true. COBOL programming is very, very badly paid.