Introductory-level educational COBOL materials with modern tooling
openmainframeproject.org
openmainframeproject.org
tl;dr learning COBOL as just a programming language doesn't seem to prepare you for an actual COBOL job in most cases, unless the company is willing to invest in teaching you.
Also, overnight batch processing may not be automated but require an operator initializing each job in the schedule or schedule in the schedule with runsheet instructions. I think dialogs are created with ISPF and software for moving software from test to production, but I'm no expert on the mainframe.
https://en.wikipedia.org/wiki/MARK_IV_(software)
https://en.wikipedia.org/wiki/TOPS
The mainframe has a large ecosystem that is needs maintenance and feature additions and the work doesn't pay so bad if you don't mind the system. I know Mainframe DBA's make $110k in Dallas/Austin.
These are legacy systems that need long term maintenance. If you like building cool new things and working in a laid back environment, the salary may not be worth it.
So now the chickens have come home to roost, and there's a skill shortage. You'd probably end up at Fiserv, or maybe at a big bank or some gov't agency that'll drop you at the first opportunity. You'd get a decent salary, but not a massive one.
You'd be better off working at a place that views your development effort as something that generates revenue. Rewards tend to be higher. And wherever that ends up being, they almost certainly won't be using COBOL.
That said it's largely a fake idea yes. "There's a shortage of cobol devs" sounds a lot better than "we spent decades undervaluing, outsourcing, and not supporting mentorship in this critical niche and now we're experiencing the consequences."
Also as others have insinuated, COBOL itself isn't a challenge (nor PL1 or HLASM or any other language really), it's the zOS/360 mainframe environment, understanding the nuance behind how all these disparate systems work together, being a JCL wizard, knowing all the IBM yellow books off the top of your head from 40 years of working in the industry, understanding how to use IBM IMS db efficiently, etc. Also the entire ecosystem of stuff you might take for granted, like IDEs/debuggers/deployment/etc, are all quite ancient on zOS systems and take years to get proficient in.
In fact it seems this is the case with every language, Java was the first language I picked up, I did it through school, I am familiar with syntax and how it works under the hood, yet I don't feel comfortable on Java projects, not because I have any problem with Java it's because I don't know the entire environment around it, there's DI frameworks, finding the magic Spring config to make things work the way you want, etc. As an engineer I don't really have an ability to see what is going on in an application and really trace the code start to finish because there are three or four layers wrapping, abstracting, surrounding, or smothering any code that anyone has actually written on my team.
Same thing with .Net I've tried picking it up since .Net core came out, but it just seems that figuring out how to string all the packages, and dependencies and figuring out how the build tooling works is more effort than the language itself.
Repeat for JS, you can know Node and JS and in this environment that will get you a nickle and a piping hot cup of Jack Squat because you can't just know JS, you need to know JS, and React or Angular, and in order to work with those tools you also need to use Webpack or Babel, and a transpiler and all the tutorials that go "step by step" seem to consist of "install these packages don't ask why just do it and then add 4 lines of code".
The problem isn't nor has it ever been the langauge, so far I've picked up Perl, Python, Java, C#, JS, TS, Ruby, AWK, and a handful of other languages with ease (The only one I've struggled with thus far is LISP) it is the environment that surrounds each of these things, and I only forsee it getting worse as we continue to move things to a higher and higher level, we think we are simplifying but it feels more like we are building a leaning tower on a foundation of sand, where soon coding will become more of a priesthood than anything, where the right incantations will produce a certain effect but no one will really know how or why because no one person knows or understands what the 14 layers of abstraction we are running on do. Which inevitably ends up reinventing the wheel at every layer of the stack as teams try to solve problems within the area they understand not realizing how much easier it would be to solve in another layer, and we'll just end up running around in red robes chanting prayers to the Omnissiah.
01010000 01110010 01100001 01101001 01110011 01100101 00100000 01110100 01101000 01100101 00100000 01101111 01101101 01101101 01101110 01101001 01110011 01110011 01101001 01100001 01101000
I make it a point to jump from environment to environment to learn to grow, to see the new things and the new tradeoffs, and find out what they play out like.
That being said, I don't need to find or build a better or more elegant solution. I use Emacs ;)
Changes typically require 7 figures, so they require a long lead time that coincides with the state's budget cycle.
https://www.fastenterprises.com/solutions/fastui/
Also, the cost of one of these replacement projects is about $80 million over 3 years plus 10-20 million a year maintenance. Averaged over 10 years, this about 2-5 times the cost of the old systems, depending on how you want to count.