The code that controls our money
wealthsimple.com
wealthsimple.com
Generally, if it's crucial for the business, the lever you pull is increasing compensation until the market responds. That's how you influence willingness. People are willing to do much dirtier jobs given enough money.
"But we need someone who is not only willing but able," they say, meaning they want someone with many years of experience with the language.
These same companies did not invest the time or money to train future maintainers in the language or make it worth their while to accumulate that experience. Guess what happens when you don't invest that money up front? You pay for it dearly later on.
So it's either an impossible situation of their own making, or those elusive COBOL programmers are out there, but companies significantly underestimate how much they really need to shell out for such a specialized skill set.
Either way, I don't think the problem can be reduced to younger programmers wanting to write code in the hip newer languages.
Socialize the losses/costs (publicly-funded school), privatize the gains/profits.
That said, there's a different side to the issue, which is that smaller companies do not (and never did) have the resources to train people. There definitely is a shortage of senior management-capable technical people who can lead projects and teams at smaller organizations. This however isn't relevant to big banks and Cobol.
The only signal worth paying attention to is industry salary trends, but reporters rarely have the time or incentives to actually do real reporting.
That's the issue with self-training for mission critical systems. Sure, some people can self-train, but a company doesn't want to pay people to learn on the job, while thwey are counting the beans.
It is not what you specifically are arguing here, but I have read different iterations of the above dozens of times on HN and it is always highly upvoted and almost all comments are in support of this position. I find it interesting that you can just pay more to buy or rent in SF, so by this definition there is no housing shortage in SF.
My mom knew COBOL. She retired in the 1970s. You're going to have a tough time hiring her now.
...but that's if you have "3-5 years of Experience in Cobol, IMS, DB2, JCL".
I imagine an entry-level job might pay ₹7,00,000 or so, if you can show sufficient coursework in COBOL?
edit: I made the mistake of multiplying this by 12 originally since I didn't read carefully.
Some people are surely trying to set expectations low, while others may be exaggerating what you can make with a few years of experience.
However, I've seen quite a few different sources claim an entry level developer makes around 4-10 lakh rupees a year. This makes me think they think their audience considers that good but not unbelievable.
And then when somebody claims you can make 60 lakh or more with 5 years experience, it makes me think that their audience knows roughly what US salaries are, whether or not the figure is realistic.
As such, you will see a massive salary range, anywhere from 3-60 lakhs per year. It’s hard to calculate based on experience - tenure, tech stack, or otherwise.
The lower end is dominated by body shops that take the bulk of offshored projects, since that’s exactly what Western companies want. The higher end is dominated by FAANG and VC funded startups. Moreover, the majority of companies do not have significant yearly raises, and jumping jobs is the often the only solution.
A shock or major unforeseen event could cause a shortage for a time. But we've been hearing about the dire shortage of COBOL programmers for 30 years or more haven't we? Yet in that time apparently they haven't either migrated their systems off COBOL, started paying people more, or decided they don't need to invest as much effort into it? Doesn't seem all that credible.
There aren't any significant number of people wringing their hands over it for 30 years either.
I guess I'm on that side, for the following reasons - the companies that want Cobol are companies that are pretty rich. Yet, Cobol salaries are on the low end for Software developers.
>I find it interesting that you can just pay more to buy or rent in SF, so by this definition there is no housing shortage in SF.
there's no housing shortage in SF for billionaires who are willing to pay whatever is asked. Did I mention my perception that the companies who want Cobol programmers are really rich.
Now, it may be that there is an actual Cobol shortage, I would even agree that it is likely because at the rate offered not very many people would be interested in learning a language generally derided and not much like other languages. But we cannot know that there is an actual Cobol shortage when the rates offered are less than those for Machine Learning experts.
If you offer top rates for Cobol programmers and can't get them, then you have a shortage.
There is another definition of a shortage which basically says that supply doesn't respond to price, i.e. even if people are willing to pay more, the total amount of supply doesn't increase.
If gasoline was suddenly $50/gallon, it wouldn't stay there very long because it would immediately be profitable for new supply to come online, using production methods that aren't economical at lower prices. Supply would increase in response to higher prices.
This is also true of COBOL developers. If they were highly paid (relative to other software developers) then more people would learn COBOL and the supply of COBOL developers would increase in response to the high price.
It isn't really true of housing in SF. The price goes up and the supply remains the same because new construction is constrained by zoning. So there's a shortage.
The problem with this argument (as a native German speaker) is that in German, there do exist two different concepts that are both translated with "shortage" in English:
- [die] Knappheit
- [der] Mangel
"Knappheit" is a sign of an efficient market: if the supply decreases or the demand increases, the prices go up, so only the buyers that are willing to pay most get their share. This makes a market efficient.
"Mangel", on the other hand, means that (nearly) no matter how much you are willing to pay, you cannot get the good. This is a strong sign that the market is broken (often because of regulations).
Of course the media in its agenda loves to confuse these two concepts and writes of "Fachkräftemangel" ("shortage of professionals"; even though "Fachkraft" which I translate with "professional" here, actually literally means "field [field of study] force"), hiding the fact that there are no signs of Mangel, but of Knappheit.
So I wonder if it's something like manufacturing in China - it's not just cheaper, it's that the expertise has moved.
You can't incentivize American programmers with a lot of experience by throwing money at them, when they retired ~50 years ago.
I signed up for a COBOL course at a state university around 2000, but dropped it without ever attending a class. I think they still had line printers.
At one point I was amused that there seemed to be a standard for object oriented COBOL...
Someone writing COBOL for one such critical systems told me that there are two testers in their company whom they have never met and that no real testing happens(just some basic code review) because their company charges the client every time a bug is found to fix them.
But they did say that their client do call their retired employees to clarify some doubts just like this often shared article states.
Say that you have a pair of chickens that people really want chicks from. Pay whatever you want. You cannot really speed up chick production because of that initial bottleneck.
I know one bank who does an academy thing, where they bring in graduates, train them for up to two years (with salary) for them to be able to work on the systems. So, it’s a problem, but they have knows to get around it.
Also. This problem is not isolated to banks. I saw the same kinds of problems when I was in telecom.
Sort of. I dealt with a large smalltalk system with it's own datastore. Finding smalltalk devs was painful. Training new ones? It was a mess. The dev environments didn't seem to port correctly to modern linux systems - mac? forget it, we could never work out contracts with Cincom Systems to get proper licenses - they would demand us pay a portion of revenue with audit rights (wtf), staging environments were layers of hacks, smalltalk could work on port 80 but making it work with apache/nginx/load balancers was always a mess, smalltalk itself was covered in bugs and would crash for no apparent reason. All new devs knew learning smalltalk was a waste of their future job prospects - they also had no good mentors. Good luck finding things on stackoverflow. The smalltalk contractors that could help would just raise their price so high it turned into extortion (one of them even wanted a portion of gross revenue). These contractors would delete histories, use hand written journals, hide documentation, refused to train anyone, not use version control, quit in the middle of meetings -- and they all were friends - it was a total shakedown. "Just pay them more" never really worked out for us.
Then they behaved like Oracle, Terradata and every other "business-sensible" vendor, who manages to get his customer into a technology-based lock-in. The only way Oracle only shakes down customers for tens of millions per year and not for billions is that, if it were billions, companies would just invest into migrating off Oracle.
This depends on the culture, how honest those people are being, the greater economic situation of the people in question and many other factors.
For a general overview, the StackOverflow developer survey (n=65'000) seems to suggest that about 70% of the respondents feel like compensation indeed matters a lot, more than any other factor: https://insights.stackoverflow.com/survey/2020#work-job-hunt...
> For the first time, we asked developers what drove them to look for a new job. Better compensation was by far the most common factor for respondents with 70% of them noting that more pay was important. Wanting to work with new technologies was the second most popular factor, which is consistent with what respondents reported as one of the most important priorities when choosing between two jobs.
Curiously, they skipped that question in the 2021 survey, so it's not included at all.
I can personally understand this viewpoint, seeing as i don't receive all that much money either and it would take me about 40 years of constant work to be able to afford my own house with my current earnings and small raises here and there. Plus, with my current salary there's no way i could afford, for example, cancer treatment or to address any of the other serious health issues that can arise in people.
But that's the thing - these companies don't expect to be the ones to invest in these developers over the years, to let them upskill themselves. Neither do other companies. If you look at /r/CSCareerQuestions, you'll find that many of the younger devs are having quite a lot of trouble finding work, very few companies wanting to invest in the start of their careers, since they might as well just look for the more experienced devs out there.
But why is that? Simply because there is no actual guaranteed return on such an investment. A company might as well spend months of their experienced developers' time while making them mentor the more junior devs and invest a lot of resources in this, as well as have more overhead to their development because of needing to spend longer on QA and fixing bugs introduced by these juniors, for them to just turn around and leave when they've gotten the seniority that they desire.
In essence, all of this investment will return this company absolutely nothing and instead will benefit the next company that this developer goes to, which might as well be their direct competitor. Why should companies take this risk, instead of letting other companies do so, train the juniors for them and simply pluck skilled devs from the market when they become available?
I don't condone that approach, but it feels to me like a zero sum game, especially in a competitive market.
I don't have any solutions to offer, since in my eyes preparing devs should be the work of universities AND some other institution after getting their education, that would bring them up to speed to actual industry practices (like bootcamps, but for people with basic knowledge of academia).
Yet, even after getting my Master's, in lieu of such an organization, i simply had to get the practical skills over many evenings and weekends, as well as worked as a developer thanks to one of the companies that did take a risk on me, all while i was also studying. Having to work in the evenings and weekends seems a bit silly when compared with other industries, but with how much churn there is in regards to tech, i don't see alternatives.
There's simple solution to people leaving - just pay them above market rates. In my current company, a manager had this crazy idea, and what do you know - a lot of the key people he hired (most of them were excellent to begin with, as when you advertise above-market pay, you attract some pretty great people) are still with us 5 years later, and are being the pillars of their teams and of entire departments.
Even if a COBOL job paid a lot you wouldn't expect to hold it forever and there's a fair chance you'll have issues getting the next job if you haven't done something more common.
https://www.pcworld.com/article/249951/if-it-aint-broke-dont...
Yes. Yes it does.
EDIT: again, of all the things you could downvote... I just don't get why it would be this post
Likely because it does not add any extra info or points and is just "I agree"
The post is like one tweet in length and composed of short, common English words. I don't see how it's such a hard post to read and interpret accurately.
> “You could pick people up out of the street,” says Jon Pyke, a British coder who learned COBOL back in the 1960s, “and basically and teach them how to do it.”
Well then. This does seem to suggest a solution...
Honestly, this article kind of makes me want to learn COBOL. In my fantasy, the employers desperation somehow makes it a low-stress job, like they know they don't have time for BS, they have to prioritize the most important things and just let you do your job. And they'd be so grateful.
"HyperCard was created by Bill Atkinson following an LSD trip."
"HyperCard had a significant impact on the web as it inspired the creation of both HTTP (through its influence on Tim Berners-Lee's colleague Robert Cailliau), and JavaScript (whose creator, Brendan Eich, was inspired by HyperTalk)"
Or they'd be a bunch of entitled a-holes and constantly try to manipulate you to extract as much value as possible. As finance execs do.
But yeah, to have any chance at all, you have to wait until it's really a crisis for them (that can't be blamed on you becuase you aren't there yet), like what might happen in 10 years or so from now, and then show up as a knight in shining armor to rescue them.
but yeah, just a fantasy ha.
Yeah, some already figured out, if you do that, you don't need people from high wage countries.
OG microservices.
Clearly some aspects will be tied together, so for them it's all or nothing.
It does feel like these companies have got to bite the bullet and get started, otherwise that facade of being conservative will fall, to reveal recklessness.
> The Bank of New York Mellon in 2012 found it had 112,500 individual COBOL programs, constituting almost 350 million lines;
Could that really be true? Can anyone provide some context to make that make sense?
As a bank, you also do all this stuff internally to pay your employees, contractors, create audit trails, document things, keep track of office equipment and supplies, etc.
All the things that other companies might use commercial software for, or just use Google sheets or email or another generic solution, this company has a long-established COBOL program for.
Are all 112,500 programs used? Probably not. But are 10% of them used at least once a year? Probably.
And Cobol programs are _verbose_. Have a look at the examples on Rosetta code. C# (which isn't particularly concise) can do in 40 lines what Cobol needs 250+
Where we (modern programmers) would write a program with a large number of modules and imports, most Cobol programmers probably wouldn't. There is a lot of copying-and-pasting going on there.
That's an average program length of 3000 lines. Imagine your code base consisted of 112,500 files, each of about 500 lines (including HTML, CSS, SQL statements and "real" program code).
That's about what it is equivalent to.
Plugging that equivalent number into a Cocomo calculator, it says "20 years of 800+ programmers".
> Plugging that equivalent number into a Cocomo calculator, it says "20 years of 800+ programmers".
Of course, it's been 50+ years, but I doubt Bank of New York had 300+ programmers working for them all those years?
It would make sense if copy-paste were a lot of it.
Which makes me think if you did want (or more likely have no choice and need) to make some serious changes to the codebase, some kind of automated assist could be very helpful. I wonder what the state of COBOL tooling is. I wonder if it's going to get better as the technical debt comes due in a hard way.
Too much? Then I guess you do not need it enough...yet
EDIT: truly, truly confused by the downvotes I get these days. Does someone pay you people to follow me around and downvote my most harmless, mildly interesting posts?
> Please don't comment about the voting on comments. It never does any good, and it makes boring reading.
- most cc stuff run on cobol code
- cobol code has three buckets: cash advance, purchases, other. Hard to change
- cap1 tried to rewrite that system in c++ for distributed unix to ditch cobol and mainframes. They wanted N buckets so they could hook up with N vendors and have N incentives to build biz
- big failure ala chaos report also from 1990s. Also org dysfunction. The mainframe guys fought it much like in today's world when you have old guard fight for onprem or colo DC when somebody wants a cloud provider
- cobol won then (and I haven't been back in CC since) but not for tech reasons. In truth in abs terms cobol isn't hurt or help. There's bigger adjacent fish to consider first
Start anew without the legacy of COBOL, using tech and skills more appropriate to the present era.
Are they repeating the pattern? Maybe, but for now they get to live in the present.
Would it really be an improvement to rewrite a banks's backend processing software in the latest fad flavor of language and framework? We know those would become obsolete in a year.
Also, I wouldn't be surprised if IBM does a lot of the maintenance for you, on the hardware side.
Just to add from what I’ve read. A zmachine purchased within the last several years could run in modified S/360 binaries.
https://www.datacenterknowledge.com/design/no-cobol-not-dead...
I learned it around 1999 at university. Even back then they already told that myth.
But Old Code gets younger every year:
If there was an incentive, I’d do it.
But I agree. If some big corporation is running a Cobol training program with a big paycheck at the other end, I'll sign up. But I'm not going to spend my free time training myself, I'd rather do fun stuff.
I don't have any particularly rare or specialized skills. Only 6 years ruby experience.
Hard to fathom that the banking system in emerging markets would be running on Cobol or using it.
There are several issues at play:
1. The language is ridiculously verbose and inconsistent. It was designed in the era when people thought the only barrier to everyone learning programming was that it wasn’t “English” enough — so stdlib functions randomly introduce keywords for “readability”, and throw consistency out the window.
2. The mainframe tries to provide anything and everything you’ll ever need, rather than relying on user-supplied libraries, and does so by adding that functionality to the language itself (combined with above arbitrary inconsistencies). Wikipedia notes 300 keywords, and probably many more terminals in general (another reference: SQL standard apparently specifies some 1700 terminals)
3. The language is itself not well-defined, or well standardized (a standard exists, but like SQL, everyone extends it arbitrarily. And again, they extend the language, rather than supplying libraries utilizing the existing languages). There are many cobol dialects in the wild. A few major players (ibm, gcos, microfocus, and a lot of little & dead ones).
4. COBOL compiler implementors (notably IBM) have/had a habit of asking customers what they needed, and adding the feature to the compiler, intending it for the one customer. Eventually other people find it too. Undocumented unspecified statements used at random.
5. COBOL does not live on its own. It expects to run under the terms of the mainframe transaction processing and batch processing runtimes. These have to be replicated as well. Additionally database (eg DB2, Oracle), filesystem (eg VSAM), third party apps, etc. Additionally, different mainframe providers have different semantics, sometimes subtle, sometimes not.
6. COBOL does things differently than Java. I consider it a fork in the timeline of language design. Functions don’t necessarily have to return to the caller. Definition order in source code matters (eg PERFORM THRU). Weird artifacts from its punchcard history (notably 70-char limit, but also weird functions like REDEFINE). It loves fucking around with bit fields. Variables are basically global, always. Structured Control flow is really a shallow layer on top of GOTO.
7. Companies with mainframes have typically already tried & failed to get off the mainframe. By translation, or reimplementation, or emulation. They’re often cautious to try again (a problem for our sales team). Lots of companies offer to do it manually, and fail on any decent sized codebase, causing companies to be quite cautious
8. Mainframes are fast at what they do, and very reliable. It’s very much a don’t fix what ain’t broke situation. It’s also difficult to meet same performance expectations when you’re emulating the whole thing — though half the point in converting is that it’s much easier to simply throw more hardware at the problem. Conversion generally is “COBOL in Java” because safely rearchitecting it automatically to something more idiomatic is often quite difficult, or not even possible without violating unspoken assumptions; its also difficult for current maintainers to verify correctness, if you’ve mucked about with the logic flow significantly.
Are we talking about medical billing or software engineering here???
Cryptocurrency is not a get-rich scheme, despite everyone trying to make it into that. It's just applying math and computer science to make technically sound and trustworthy modern money.
Then post on HN and let us know how that goes.
It's really quite a lot worse.
If big banks were being stolen from at the same rate as crypto exchanges, the news would be pretty Wild West.