HACKER Q&A
📣 unsupp0rted

How do I learn real-world COBOL?


COBOL devs are a specialized niche these days and they get paid accordingly.

I can learn COBOL from a book in general terms, but where would I practice with real-world legacy COBOL systems?

It's not as though I can do a COBOL side-project to learn... or can I?

How does one go about learning COBOL in 2022 (from "scratch", while already being a working dev) in order to niche down as a COBOL specialist dev?


  👤 tapland Accepted Answer ✓
> COBOL devs are a specialized niche these days and they get paid accordingly.

In my experience the well paid COBOL devs are those with 20+ years of experience, often in one specific system, often bumped by being re-hired a bunch of times for the same position. I've been doing COBOL since 2018 and younger devs my age (late 20s, early 30s) with a few years of experience make decent money, but the average is bumped by the teams having a lot of devs near retirement age.

If you want to learn:

The language isn't very complicated. I'd recommend grabbing the Visual Cobol for Windows trial just to get coding (and then shunning anything MicroFocus when you are done ;) ) https://www.microfocus.com/en-us/products/visual-cobol/overv...

If you want to/will end up tinkering with IBM systems, check out Jan Sądek's Mainframe Playground: https://mainframeplayground.neocities.org/

For running COBOL on VMS, comp.os.vms is a common place to hang out https://groups.google.com/g/comp.os.vms?pli=1 A dev named Remy documented his first steps on OpenVMS and it was a great help when starting out: https://raymii.org/s/tags/vms.html

There is some actual training material from firms specializing in COBOL training floating around, but they are mostly IBM and/or MicroFocus documentation with some suggested example programs.

I hope the resources above are useful and good luck!


👤 brakmic
Start from here: http://www.hercules-390.org/

This is Hercules, an emulator for old mainframes. They also have COBOL and other important languages like JCL, the job control language.

Here the "turnkey" distribution that installs everything for you: https://wotho.ethz.ch/tk4-/

A mainframe community from youtube: https://www.youtube.com/c/moshix

Have fun.


👤 jhugo
You think that those people are getting paid the big bucks because they know COBOL, but the reality is that they are getting paid the big bucks because they have decades of experience with all the legacy systems that surround that COBOL.

Learning COBOL, even in a "real" environment, isn't going to be the jumpstart that you're hoping for by itself.


👤 drugstorecowboy
As stated elsewhere, learning COBOL really isn't that hard. It's a different paradigm than you are likely used to but once that clicks you can be relatively proficient in basic COBOL in a few weeks.

After getting some confidence you will be ready to begin your first COBOL job where you will open up the codebase to try and get familiar and immediately realize with shock and horror what you have committed to do. The hell and chaos of real world legacy COBOL all consuming.

You then sit there, day after day, counting characters and cursing your predecessor for not having that foresight to realize that a number might grow beyond 999. Daydreaming of a time when you didn't know so much about fixed length records, a time when you were happy.


👤 guessbest
I work at a place that uses an extensive amount of JCL, COBOL, REX, MK4, VSAM, DB2, and more, and I would say that learning the language is only a small portion of learning the system, batch processing and the database. Learning COBOL without learning how the mainframe works in its entirety is leaving out the major portion of what the language is used for. It would be like using a C64 your whole life and then learning Java from a book, but not having a system to apply it to. The leap is just too great without immersing yourself in ISPF and all the associated proprietary software your shop.

👤 eatonphil
Not that salary alone should stop you, but if you look on glassdoor for the range of salaries of COBOL devs vs react or Go, the median is lower and the ceiling is also lower.

If you just want to have fun with older tech that's totally fair.


👤 mkovach
Have spent a couple years about 20 years ago dealing with a COBOL applications, I can tell you. Pick up COBOL (GNUCobol is fine) and a book. It isn't that hard of a language to pick up.

Then, learn about mainframes since most of the COBOL in the wild is running on z/OS or the like. IBM use to offer a free Mainframe course. You would also want to learn JCL, REXX, and a few other mainframe related tools.

The apps are no different then most things now (inventory, accounting, etc.) is is the legacy processes that will most people that biggest problems.

And checkout a YouTube Channel by moshix. Lots of great mainframe info there.

That would get you started on the path.


👤 Group_B
It’s honestly not worth your time to learn this for the money.

https://www.reddit.com/r/learnprogramming/comments/g5zvpa/ps...


👤 tgflynn
IBM offers a free set of courses here: https://ibmzxplore.influitive.com. I played around with it a few months ago. As far as I know it's still available.

It doesn't cover COBOL in great depth but does touch on various pieces of the zOS ecosystem and gives you some access to a real mainframe.

There's also this COBOL course: https://github.com/openmainframeproject/cobol-programming-co...

I haven't tried the later and I'm not entirely clear on how you get access to a mainframe environment for it.


👤 sulam
I think you’d have to actively seek a job somewhere that has running COBOL and then express interest in picking it up. They’d probably be happy to have you, but you wouldn’t be making the big bucks. That would have to wait until you had a decade of experience and then venture out on your own as a consultant or get hired by a specialized outsourcing firm.

👤 JohnDeHope
TL;DR; find a way to work in a mainframe environment. I think this is true of a lot of things, but starting in 2022, it's definitely true for learning cobol. The thing is, cobol is not just a programming language. Living and working in a mainframe environment is it's own whole thing. There is so much you'll have to learn. It's like the difference between linux and windows, but I'd argue is easily x2 to x5 as jarring. Just learning ebcdic instead of ascii is a thing. And navigating a green screen is as foreign to a modern pc user as, say, going from being a programmer in a high level language (like say java or c#) to using assembly language. It's not that you can't learn it, but it's that your whole brain has to be tilted to the side just to understand what's going on. A mainframe is a completely different world from modern pcs. The cobol programming language is 1/10th of it.

👤 kjs3
There are a number of schools that have mainframe oriented CS programs if you're really serious and have the time/money. Columbus State University has one created in partnership with IBM[1]. They apparently have a pretty extensive corporate outreach program and the folks I've talked to who were in the program were set up post graduation job-wise.

That said, I will N-th the caveat that knowing COBOL isn't the job/hard part; it's knowing the extensive ecosystem that COBOL orchestrates.

[1] https://catalog.columbusstate.edu/academic-units/business/co...


👤 commandlinefan
> It's not as though I can do a COBOL side-project to learn... or can I?

My first job out of college - around '94 or so - was working for an accounting software company that sold an accounting package written entirely in RM Cobol for DOS. The entire UI and the backend were all written in Cobol. Poking around a bit, it does look like GnuCobol (https://gnucobol.sourceforge.io/doc/gnucobol.html) allows for some screen I/O… so you could put something together on your own machine.


👤 nonamenoslogan
I did this a few years ago to support an HP3000 in a new job. Spent a year working with COBOL enough to get semi proficient and feel confident running and editing programs. We eventually turned the system down in favor of web+SQL and I'll likely never COBOL again, but the truth is COBOL is a pretty straightforward and fun language to work with if you're not already stuck in the C/C++ mode of thinking. Its pretty easy to read and decipher.

👤 ecshafer
I worked 5 years at a large financial services firm with several $T in assets, and as such I have worked with Cobol Developers, though I have not worked with Cobol much directly. They had it splits between Cobol developers on one hand and then the AWS/Java/Javascript developers on the other.

There are a few issues with this idea. One is that there is some new Cobol code being written where necessary, but the big firms are trying to get rid of these people. The companies still with a lot of Cobol do want to get off of it, and while this is probably a 20-40 year project, this is not a growing industry, which I think is risky. There are a lot of cobol devs being trained up by the contracting services, which are used by the types of places that still use cobol, so I don't think salaries will ever compete with just being a developer in tech. There is a ton of bureaucracy in the orgs that use cobol, and especially around mainframes in those orgs, so that drives a lot of developers away. Since Cobol devs are often supporting 1-5 systems that they are the only ones that know how they work, and cobol mainframe jobs are typically batch processes, expect to be woken up pretty often in the middle of the night as you are supporting flaky 20 year old code that breaks often, the cobol devs I work with were all doing middle of the night work 1-2 weeks a month.

Even if Cobol salary is great I don't think its worth it. The only point I could see it would be good is as a consultant that specializes in moving off of Cobol. I think a Consultant that could sell to these banks that you know how to migrate systems off of Cobol / JCL / DB2 / Sybase / Oracle -> Java / C# / Postgresql, Now that is where the money would be.


👤 atum47
I don't know if this could be considered "learning" in the sense that you mean, but I chose code that I wrote in a familiar language and re-wrote it in Cobol. It was fun and I end up learning a lot.

https://github.com/victorqribeiro/perceptronCobol


👤 defined
You could learn some mainframe stuff using the Hercules emulator[1], but you'd have to find some z/OS installation media somewhere, and I'm not sure if that might infringe copyright or something. Also, JCL is absolutely horrible IMO.

[1] http://www.hercules-390.org/


👤 ddlittle
I went to a computer conference in the mid 80’s for my first job after college - where COBOL, IBM/360 assembly language and FORTRAN were required CsC courses - and the international attendees used COBOL as a common speaking language. So conversations like IF HUNGRY PERFORM EATING were common. haha.

👤 bencollier49
Depends on your country, but I do know for a fact that if you're in the UK, there are government departments which will teach you modern development practices alongside COBOL, if you're near one of the relevant hubs.

👤 ohm
It's not real life but doing COBOL CTF was fun intro https://samsclass.info/129S/COBOL.shtml

👤 apohn
>COBOL devs are a specialized niche these days and they get paid accordingly.

Tell that to all the people in outsourcing Firms (e.g. Infosys) who end up coming to the US from India to work on COBOL Mainframes as contractors. The large companies hiring those outsourcing companies are doing that because they don't want to pay top dollar for a COBOL devs. I don't think they even want to deal with evaluating and hiring COBOL Devs.

I know somebody who was in that situation. Was paid decently, but nothing special you couldn't get from any other Dev job.


👤 dontbenebby
Check if the University of Pittsburgh School of Information Science is still offering their course, and if it's offered online if you aren't blessed enough to live in the "Paris of Appalachia".

(I regret not taking it when I was an undergraduate. That, screenwriting with the guy who wrote snakes on a plane, and a creative nonfiction class are things I'll be forever regretful I skipped to take infosec courses that simply certified things I'd known since before I had finished puberty.)


👤 pcurve
Many industries are still running on COBOL including healthcare.

We think COBOL will still be around 30 years from now, so we're training college grads.

No cobol experience? I don't think it will be a problem if you already know another language well.

https://www.indeed.com/jobs?q=Healthcare%20Mainframe%20Cobol...


👤 pixl97
The real question you want to ask is "do I want to work for a bank, Healthcare, or government".

I work with these industries, not directly for them, and seemingly the people that work in them seem more miserable than those in other industries. You are dealing with large amounts of regulations and inner organization bureaucracy. Coding, unless you're a contractor is a tiny part of the job, and process is a huge part of the job.


👤 Sudharsana
A great learning resource for COBOL is the Open Mainframe Project's COBOL Programming Course. The content is self-paced with labs and the best part is you get to do the labs on a real Mainframe.

Check it out: https://github.com/openmainframeproject/cobol-programming-co...


👤 Sudharsana
The content is also available in video format on IBM Learning platform. You get to do the labs through the video course as well and earn a badge. You can check that out here: https://learn.ibm.com/course/view.php?id=7552

👤 l0ngtimepgmr
COBOL is available on many platforms. Health care, Banking, Government and many more. There are many ways to get started with COBOL, pick an emulator/internet site to get some experience with it. If you still are interested get one of the many free accounts on actual hardware/OS and learn the environment.

👤 perakojotgenije
Do COBOL programmers really get paid that much? I have more than 10 years of experience with COBOL, and I've left it long time ago because I hated the language. But now I wonder where could I find some of those well paid COBOL jobs (and of course - remote)?

👤 michaelsbradley
The GnuCobol FAQ and How To might be helpful:

http://opencobol.add1tocobol.com/gnucobol/

Note that web page is truly massive, it may take some time to load completely.


👤 mindcrime
You might get some mileage out of posting on /r/cobol on Reddit. There's a small but somewhat active community of COBOL folks on there.

👤 tlrobinson
Related question: what's the modern COBOL, meaning the thing that will require well-paid niche programmers to maintain in 30 years?

👤 johnbellone
I'll hire you if you want to learn COBOL.

👤 prionassembly
Parallel question: what would be better to learn job market wise right now, Cobol, C# or Java?

👤 scktt
learn universe or any of its flavours (i started out on pick basic at 19, now 34) its not as obscure but niche enough that with time&skill you can find yourself in demand quite readily