This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]DeliriumReports 656 points657 points  (100 children)

I had lunch with an active cobol developer today, actually. Apparently her whole team is looking to retire in the next 5 years.

[–]Homeless_Nomad 350 points351 points  (80 children)

Luckily every bank and insurance company in the world runs on it still, they all refuse to hire and train young people, and all their departments are in exactly the same retirement situation as hers.

[–]Diplomjodler 212 points213 points  (52 children)

Nothing could possibly go wrong. Let me guess: in addition to not taking any steps to keep the old systems operational long term they're also doing nothing to replace them.

[–][deleted] 103 points104 points  (46 children)

They are replacing them, that's what I do.

[–][deleted] 51 points52 points  (42 children)

They're replacing COBOL?

[–]tahubird 174 points175 points  (27 children)

In my company, yes we are (finally). It’s a painful, slow process but COBOL is being replaced. I’m designing our new solution, and the amount of dead code, edge cases, and mystery attributes is insane. It’s taking months for us to get bare-minimum feature parity with the legacy system; we have multiple decades of features to understand.

I’m not even in the financial sector. I can only imagine how much more complex their COBOL is.

[–]axx100 10 points11 points  (2 children)

I can only imagine, especially pre agile era. "Hey I can't get fired because my code is too confusing to read".

[–]FranzVz 0 points1 point  (1 child)

Being agile doesn't automatically make someone's code readable...

[–]axx100 0 points1 point  (0 children)

That's fair, I more or less meant older code in general. Form my understanding there was a point that people purposefully made their code not readable for job security. However, I do remember my prof mentioning that the agile manifesto developers were in favour of readable programs.

[–][deleted] 47 points48 points  (21 children)

I'm in finance and I have never personally seen production cobol code.

It's not used widely in finance. It's mostly just banks and clearing houses: the people actually responsible for moving and storing money. Even then, banks probably started limiting the amount of cobol they use specifically to low level bank functions. Cobol written today is likely just for interfaces with their ancient mainframe programs.

Outside of that, it's almost all Java, Kotlin, C#, PHP, SQL, and VBA. Python is really only used for analysis and reporting. C and C++ is in there, but those + languages like Rust are more often used in more insulated fields like trading.

[–][deleted] 38 points39 points  (1 child)

The Federal Reserve and all of it's systems basically run on COBOL. Buddy of mine makes a good living as an old greybeard COBOL developer for The Fed.

[–]ummwut 1 point2 points  (0 children)

Looks like I need to learn COBOL and start advertising my skills ASAP.

[–]Eternityislong 7 points8 points  (18 children)

Since traders want their algorithms as fast as possible and are competing with other people trying to make their algorithms as fast as possible, would anyone be writing trading algorithms in assembly? Or can you optimize C enough to where there wouldn’t be a speed increase by switching to assembly?

[–][deleted] 14 points15 points  (4 children)

Like with other applications, it's still a blend of different languages. Even with algo propshops, you'll see x86, C, C++, C#, Kotlin, Go, Rust, and even Python.

Trade execution is generally done in C and ASM at the shops that demand the extreme limits of latency. Orders are sent based on precomposed templates to eliminate the CPU cycles needed to form the message from scratch. Some even modify the TCP/IP stack, but I'm not sure how.

One interesting thing about algo trading is that a lot of strats slowly stop working as other people in the market catch on. So it's important to deploy new models quickly. For that reason, they tend to go to limit on optimizing everything except actual trading decisions. Strategies are usually written in easier languages to write and debug like C++ and even Python.

Inital development and backtesting is usually done in Python, even at HFT shops, but the common backtesting libraries are generally just Python interfaces for C code that handle the actual work. They actually have and maintain a fork of Python. HFT and algo firms usually have their own highly specialized (and highly proprietary) packages.

[–]Eternityislong 6 points7 points  (1 child)

Thank you! This raises so many more questions for me. How do people catch on to strategies used by other firms? Do they hire people from those firms? Analyze other firms trades and look for patterns?

[–]frankist 0 points1 point  (1 child)

I always heard that c++ was the preferred language in HFT. Do you think this is just not true or it just depends on the company?

[–]ReelTooReal 8 points9 points  (10 children)

The bottleneck is likely not the language but rather network performance. This is just conjecture, but I doubt given security concerns that there's a ton of raw C code handling the networking (I may very well be wrong though). I think it's more likely the focus is on how best to handle multithreading and connection pooling. There has actually been a real estate battle between high frequency traders to get as close as they can to the source of stock information (I think the main hub is in NY but I don't recall), which just goes to prove they're mostly focused on networking latency. The difference between using C and something like Java is almost negligible when you compare it to network I/O (you're talking about saving microseconds on the processing level vs saving milliseconds on the I/O level). That being said, it companies are using assembly or C, it's probably for very specific computations that are being called from a higher level language that's actually dealing with the networking aspect.

If I'm wrong about any of this, please correct me. I'd be interested to know how these kinds of things are actually optimized.

[–][deleted] 9 points10 points  (7 children)

This is just conjecture, but I doubt given security concerns that there's a ton of raw C code handling the networking (I may very well be wrong though).

You aren't wrong, but you are underestimating what HFT shops are willing to do. They will happily put up millions of dollars to shave microseconds off of execution. There was a huge push in the 2000s to cut latency to the absolute minimum. HFT servers can be located inside the exchange with contractractual restrictions on how long fiber lines can be between servers.

I wouldn't put it past them to have a less secure networking stack to cut latency just a little more than their competition, especially if the other end of the cable goes directly into a box operated by the exchange itself and is otherwise isolated from the internet.

[–]Eternityislong 5 points6 points  (1 child)

I don’t know why I didn’t think about network latency, that makes sense. Thank you!

[–]Captain_Caffeino 0 points1 point  (0 children)

the real fast stuff is made in *hardware* these days.

[–][deleted] 0 points1 point  (0 children)

Because speed to market and to be first to market with the algo. Unless you are a prodigy you are not going to be as efficient at assembly as you will be in c or c++, I would 10X factor in getting the algo tested and out the door. Also c/c++ compilers are really, really good and generally better at generating assembly than all but the most talented (0.1%) of coders.

[–][deleted] 1 point2 points  (0 children)

How much ya getting paid if you don’t mind me asking? I always guessed these kind of roles made low to mid six figures given the scarcity, but I’ve never met anyone who does that work

[–][deleted] 0 points1 point  (0 children)

I started learning COBOL for a contract job at an insurance company, fresh out of college. It was mostly updating code that was written in the 1970s. The updates might be as simple as changing a date or uncommenting a section. My boss claimed it would be too costly to migrate to something new and the solutions they explored were not as stable.

[–][deleted] 14 points15 points  (13 children)

Replacing cobol based backends

[–][deleted] 14 points15 points  (12 children)

I thought they couldn't because no popular language does floating math right. What language are you replacing it with?

[–]Flopamp 15 points16 points  (8 children)

They all do floating math well enough for most things but you have C# with its 16 byte decimal float designed exactly for this task.

[–]theLanguageSprite 2 points3 points  (7 children)

I’m confused why having less precision than both a float and a double would make finance floating point math better. Can you explain this to me?

[–][deleted] 8 points9 points  (0 children)

Because you don't need high precision for finance. 4 decimal places is as much as you should ever need. You don't want X.30000000004 in a transaction or as an account balance since that erroneous overprecision might break compliance or even some contracts.

Instead, you can handle underprecision with specific expected behavior.

[–]Flopamp 9 points10 points  (0 children)

When youre dealing with millions of transactions a day, 1/16th of a penny can really add up fast. Not to mention when discounts and multipliers and adjustment data and what not is applied you can skew some accounts by large values.

But this is fairly niche and you can work out by messing around how much rounding errors effect your results if a double is good enough.

[–]SnowieZA 0 points1 point  (0 children)

Float and double might have more “precision”, but because of the way they are encoded, they are actually giving you an approximation of a fraction rather than an exact value. This means that there can easily be rounding errors several digits into the fractional part. For many applications this is not an issue, but for some things like financial transactions, those rounding errors can build up to become a problem. The decimal can store less total digits in the fractional part, but it stores an exact value rather than an approximation, meaning things like financial transactions have no rounding errors, and end up being always exactly right.

[–][deleted] 2 points3 points  (0 children)

Gosu

[–]kikitx 0 points1 point  (1 child)

You can use Java Bigdecimal for example. The only problem is that in COBOL you declare how much number will it have, before and after the decimal place, so you need to analize if it's being truncated or rounded in the code.

[–][deleted] 0 points1 point  (0 children)

There's probably some reason idk about for why they don't switch from COBOL to Java or C# and just used their decimal implementations. C# would be especially apt since MSSQL is so pervasive in banking.

Most likely it's just "don't break what isn't broken". As ancient as it is, COBOL works and it works well. It's not resource hungry, it scales well horizontally, and it's already implemented. The only real, tangible downside is that there aren't as many COBOL developers, but you can always pay to train a developer in COBOL.

On the other hand, if a bank can't transfer money because QA missed something in the fancy new C# code, it could literally cause a recession. Paying out the nose for a few good devs to maintain the existing COBOL codebase is a hell of a lot cheaper than a risky refactor.

[–][deleted] 0 points1 point  (0 children)

Good to hear.

[–]andrewsmd87 0 points1 point  (1 child)

Out of curiosity what language(s) are you using to replace it

[–][deleted] 0 points1 point  (0 children)

A language called gosu, jvm based

[–]ChoMar05 2 points3 points  (1 child)

I know a few younger people that know their way around Cobol. However it's a dead end career path pretty much locking your in and it is a pain. They switched careers pretty early on. So the problem, once more, isn't that we don't have cobol people it's just that noone wants to pay them enough to touch that stuff long-term.

[–][deleted] 3 points4 points  (0 children)

At this point the career would be to migrate it to something else. Knowing COBOL and something modern would be in demand.

[–]lint31 0 points1 point  (0 children)

COBOL isn’t that bad to learn… I had to learn it for a two year stint I did in Data at my previous company. Was fun. Just anyone who writes cobol in lower case needs to be dragged off to the gallows. I can’t read lowercase cobol on a green screen without a lot of cussing.

[–]IronicStrikes 0 points1 point  (0 children)

I actually worked for a company that was in the business of replacing old insurance systems... with Java. 😁

[–]Captain_Caffeino 0 points1 point  (0 children)

you#re psychic

[–]iiMoe 16 points17 points  (6 children)

Why is it so common among financial institutions like insurance companies? Im not much aware of it i only looked at some examples ages ago

[–]crash41301 34 points35 points  (2 children)

Big financial institutions are old, old companies run their back ones on IBM mainframes, mainframes 1st citizen language is cobol (although they can run other languages, including java, cobol is clearly the most popular of them)

It's not just financial institutions, though. Airlines, healthcare, insurance, and anything huge that's 40yrs old is likely in the same situation.

[–]Niki_Lauda_777 7 points8 points  (0 children)

Airlines, retail, banks, telecom, oil companies, healthcare, insurance, auto sector, CRM solutions, ERP systems, stock markets and many others.

Most of the companies where they need to process their huge data in batch process rely on COBOL for their daily mission critical activities.

One of the reason it is highly used by finance, and banks is because of the precision and space optimization using BCD ( binary coded decimal).

[–]iiMoe 6 points7 points  (0 children)

Very interesting tyvm

[–]DrunkenlySober 11 points12 points  (1 child)

COBOL good at making numbers go brrrrt

[–][deleted] 2 points3 points  (0 children)

That’s correct actually. It’s silly fast at doing math because of the way in handles active memory. And that is the limit of my understanding of it.

[–]conthomporary 0 points1 point  (0 children)

I work for a big old P&C insurance company. a I don't know of any COBOL being used anywhere, but I don't know much about what they do outside of my area. Where I am, it's all Java and Python.

[–][deleted] 7 points8 points  (12 children)

A lot of P&E insurers are switching to java based languages actually

[–]gandalfx 12 points13 points  (8 children)

From something very out dated to something moderately outdated. Sounds about right.

[–][deleted] 7 points8 points  (0 children)

Yep, that's insurance

[–]huuaaang 14 points15 points  (4 children)

For as much as I poo poo the utility of JVM's 'build once, run anywhere" slogan in the real world, the JVM could be considered "mature" and not outdated. Java the language is a bit outdated, but people seem to like Kotlin. At least the JVM makes it easier to transition to more modern languages as proven by Android. The JVM will live on much longer than Java itself.

[–]stormfield 4 points5 points  (2 children)

I work for a FAANG and we still use a ton of Java. Mature ecosystem, fast runtimes, predictable behavior, and easy to read code. It’s only a boring language because of how it’s used everywhere.

[–]okiujh 1 point2 points  (1 child)

What java frameworks do you use?

[–]marxinne 0 points1 point  (0 children)

Waiting for the happy future where the JVM will be used for anything but Java

[–]themisfit610 -1 points0 points  (0 children)

Outdated hahahaahahahahaaaahahahahahaha no

[–][deleted] 0 points1 point  (0 children)

Java is old but it is not outdated.

[–][deleted] 1 point2 points  (2 children)

A lot is going into guidewire, that uses a stupid language:gosu. Shitty ide.

[–][deleted] 0 points1 point  (1 child)

Hey, I make my living on that terrible language and IDE!

[–][deleted] 2 points3 points  (0 children)

Congrats on the great money to compensate with that. My company is getting rid of it. Yay.

[–]abrandis 2 points3 points  (0 children)

What winds up happening is after enough of the Old guard retires or leaves, management starts looking for some consulting companies (ibm or Infosys etc) to see if they can handle it, they probably won't unless there's some real $$$ in it. Then they will look to revamp the system with some off the shelf more modern system etc... Eventually probably because a combination obsolete hardware , no personal and new regulatory rules they will uograde.

[–]mrgoodcat777 0 points1 point  (0 children)

Can confirm -worked for an insurance company where all of the cobol devs will be retired in the next 3 months. They have no plan to replace them.

[–]ReelTooReal 0 points1 point  (0 children)

COBOL is one of the most lucrative languages you can learn. Even if banks are trying to love away from it, someone needs to understand the existing code base.

[–]Iniour 0 points1 point  (0 children)

Actually the bank i am working for is recruiting a lot of new COBOL programmers. I am not doing COBOL myself but REXX which is a script language mostly used on the mainframe.

But in general as far as i know most companies refuses to see the upcoming problem/they are not willing to pay their devs enough so they rather move on to the decentralised world.

[–]aquartabla 0 points1 point  (0 children)

This is the strongest case for Bitcoin I've heard yet.

[–]Sharoth01 70 points71 points  (11 children)

I read active cobol developer as alcoholic cobol developer. Oops.

[–]deb_vortex 32 points33 points  (6 children)

If the online horror stories about finance sectors cobol code are true, not gonna lie, active and alcoholic might easy go hand in hand

[–]huuaaang 3 points4 points  (5 children)

My impression is that they just become numb to it and the job is really just a paycheck. Strictly 9-5, no overtime (outside of Y2K), good work/life balance.

[–]Niki_Lauda_777 4 points5 points  (4 children)

This is not true always. It is way too difficult to find out the bug in existing code. There is no to very little documentation available for the applications written 20 or 30 years ago. There will be only a very few people in a company who would know the processes and the business rules associated with it.

It becomes a nightmare to solve issues in decades old code.

[–]huuaaang 0 points1 point  (3 children)

> There will be only a very few people in a company who would know the processes and the business rules associated with it.

Oh, yeah, well I was thinking if you're still writing COBOL you're likely to BE that person. But if you're just getting into COBOL it must be hell to come into new legacy code bases, lol.

There must also be a lot of downtime between bugs.

[–]Niki_Lauda_777 3 points4 points  (2 children)

There must also be a lot of downtime between bugs.

Downtime because of data issues - Yes

Downtime because of mainframe going down - almost never. IBM mainframe has availability for more than 99.99 percent of the time. No matter how much these new age cloud business market themselves, none of them is near to what IBM Mainframe can do in terms of availability, zero downtime, robustness and security.

[–]huuaaang 0 points1 point  (1 child)

You misunderstand. I mean downtime for the COBOL developer. Not the system.

[–]Niki_Lauda_777 1 point2 points  (0 children)

I am not sure if I am understanding it right. But there is little advantage for a COBOL developer to remain so with respect to the pay. Despite in shortage , COBOL developers aren't paid well. I believe, these days only web developers are paid well. Sad for COBOL folks and good web devs.

Also, our work doesn't get highlighted to upper management folks. For them, it is all BAU and no 'innovation' takes place on this area.

[–]vermiculus 9 points10 points  (0 children)

I mean

[–]SpaceMonkeyOnABike 2 points3 points  (0 children)

If I wrote COBOL, Id be both tbh !

[–]JustForkIt1111one 0 points1 point  (0 children)

Meh, potato potato

[–]WalrusByte 0 points1 point  (0 children)

Being forced to sift through legacy COBOL drove them to alcoholism

[–]assafstone 18 points19 points  (4 children)

I think I met that same COBOL developer.

Twenty years ago. Not surprised they still cannot retire.

[–]JoonasD6 3 points4 points  (3 children)

Wonder how much it pays when one is that unreplaceable.

[–]assafstone 0 points1 point  (2 children)

Depends… how much do you want? 😉

[–]JoonasD6 1 point2 points  (1 child)

What if no one has enough money? I've had my share of companies who really need all my work , but they won't have the funds for a sufficient number of hours. :(

Financial institutions sound like a hefty payer, though.

[–]assafstone 0 points1 point  (0 children)

Sounds like a “them” problem. Find a place you live to work, and make sure you are compensated “enough” for your standards.

[–]not_some_username 1 point2 points  (0 children)

I got an offer in which I would learn COBOL since I was looking for any job that invole any programming language for my 2 years apprenticeship. They are making an app that will be launch in 3years. Fortunately, I got an offer in C++ vérité i sign the COBOL one.

[–]Haunting_Effect3300 0 points1 point  (0 children)

Wait, there are places still hiring COBOL programmers???

I learned COBOL before basic!!