Social Security systems contain tens of millions of lines of code written in COBOL, an archaic programming language. Safely rewriting that code would take years—DOGE wants it done in months.
“We’re going to take this perfectly efficient and functional COBOL code base and rewrite it in Java! And we’ll do it in a few months!”
So many more competent people and organizations than them have already tried this and spectacularly crashed and burned. There are literal case studies on these types of failed endeavors.
I bet they’ll do it in Waterfall too.
It’s interesting. If they use Grok, this could well be the deathknell for vibe programming (at least for now). It’s just fucking tragic that their hubris will cause grief and pain to so many Americans - and cost the lives of more than a few.
Jokes aside, nothing wrong with rewriting in Java. It is well-suited for this kind of thing.
Rewriting it in anything without fully understanding the original code (the fact they think 150yo are collecting benefits tells me they don’t) is the biggest mistake here. I own codebases much smaller than the SSA code and there are still things I don’t fully understand about it AND I’ve caused outages because of it.
Non programmer but skilled with computers type guy here: what makes Java well suited for this?
This is probably an incorrect prejudice of mine, but I always thought those old languages are simpler and thus faster. Didn’t people used to rip on Java for being inefficient and too abstracted?
Last language I had any experience with was C++ in high school programming class in the early 2000s, so I’m very ignorant of anything modern.
Java can be pretty damn efficient for long running processes because it optimizes at runtime. It also can use new hardware features (like cpu instructions) without having to compile for specific platforms so in practice it gets a boost there. Honestly, the worst thing about Java is the weird corporate ecosystem that produces factoryfactory and other overengineered esoteric weirdness. It can also do FFI with anything that can bind via c ABI so if some part of the program needed some hand optimized code like something from BLAS it could be done that way.
All that to say it doesn’t matter what language they use anyway, because rewriting from scratch with a short timeline is an insane thing to do that never works.
Why is there a need to rewrite it at all? Is it because COBOL is basically ancient hieroglyphics to modern programmers thus making it hard to maintain or update?
They want to make buttloads of money from a rewrite, and it would cost buttloads to do this. They probably also want things to run like shit and cause misery for retired Americans.
Refactoring a code base is kinda like general maintenance for the application. Over time deprecated features, temp fixes, etc. start to be a lot of the code base. By cleaning things up you can make it more maintainable, efficient, etc.
That being said, for systems this large you usually fix up parts of it and iterate over time. Trying to do the whole code base is hard cause it’s like replacing the engine while the car is in motion.
I wouldn’t necessarily agree it needs to be rewritten. Hiring programmers that are willing to work in cobol would certainly be harder than other languages though, because you’ll have a much smaller candidate pool and people would be unlikely to see learning cobol as a good career investment
The way Java is practically written, most of the overhead (read: inefficient slowdown) happens on load time, rather than in the middle of execution. The amount of speedup in hardware since the early 2000s has also definitely made programmers less worried about smaller inefficiencies.
Languages like Python or JavaScript have a lot more overhead while they’re running, and are less well-suited to running a server that needs to respond quickly, but certainly can do the job well enough, if a bit worse compared to something like Java/C++/Rust. I suspect this is basically what they meant by Java being well-suited.
Other than hardware issues, which someone else mentioned, it has a lot of enterprise-grade functionality that make it more secure and auditable than a lot of other languages. And despite, or maybe because of, its large memory footprint it’s actually faster than most languages.
I totally get any hate about writing Java though. It is a verbose language. Using Kotlin instead helps with that.
I’ve worked on these “cost saving” government rewrites before. The problem is getting decades of domain logic and behavior down to where people can be productive. It takes a lot of care and nuance to do this well.
Since these nazi pea brains can’t even secure a db properly I have my doubts they’ll do this successfully.
Not just domain logic. The implementation logic is often weird too. Cobol systems have crash/restart behaviour and other obscure semantics that often end up being used in anger; it’s like using exceptions for control flow, but exceedingly obscure and unfortunately (from what I’ve seen of production cobol) a “common trick” in lots of real-world deployments.
It’s worth noting that one of those organizations is IBM. Mostly relevant because they’re the ones that originally built a lot of that cobol, the mainframes it runs on, and even the compilers that compiled it.
They’re basically the people you would expect to be able to do it, and they pretty quickly determined that the cost of a rewrite and handling all the downstream bugs and quirks would exceed the ongoing maintenance cost of just training new cobol developers.
My dad was a cobol developer (rather, a pascal developer using a compiler that transpiled to cobol which was then linked with the cobol libraries and recompiled for the mainframe), and before he retired they decided to try to replace everything with c#. Evidently a year later their system still took a week to run the nightly reports and they had rehired his former coworkers at exorbitant contractor rates.
Ah yes, a classic tale…
“We’re going to take this perfectly efficient and functional COBOL code base and rewrite it in Java! And we’ll do it in a few months!”
So many more competent people and organizations than them have already tried this and spectacularly crashed and burned. There are literal case studies on these types of failed endeavors.
I bet they’ll do it in Waterfall too.
It’s interesting. If they use Grok, this could well be the deathknell for vibe programming (at least for now). It’s just fucking tragic that their hubris will cause grief and pain to so many Americans - and cost the lives of more than a few.
Edit: Fixed some typos.
Jokes aside, nothing wrong with rewriting in Java. It is well-suited for this kind of thing.
Rewriting it in anything without fully understanding the original code (the fact they think 150yo are collecting benefits tells me they don’t) is the biggest mistake here. I own codebases much smaller than the SSA code and there are still things I don’t fully understand about it AND I’ve caused outages because of it.
Non programmer but skilled with computers type guy here: what makes Java well suited for this?
This is probably an incorrect prejudice of mine, but I always thought those old languages are simpler and thus faster. Didn’t people used to rip on Java for being inefficient and too abstracted?
Last language I had any experience with was C++ in high school programming class in the early 2000s, so I’m very ignorant of anything modern.
Java can be pretty damn efficient for long running processes because it optimizes at runtime. It also can use new hardware features (like cpu instructions) without having to compile for specific platforms so in practice it gets a boost there. Honestly, the worst thing about Java is the weird corporate ecosystem that produces factoryfactory and other overengineered esoteric weirdness. It can also do FFI with anything that can bind via c ABI so if some part of the program needed some hand optimized code like something from BLAS it could be done that way.
All that to say it doesn’t matter what language they use anyway, because rewriting from scratch with a short timeline is an insane thing to do that never works.
Why is there a need to rewrite it at all? Is it because COBOL is basically ancient hieroglyphics to modern programmers thus making it hard to maintain or update?
They want to make buttloads of money from a rewrite, and it would cost buttloads to do this. They probably also want things to run like shit and cause misery for retired Americans.
Refactoring a code base is kinda like general maintenance for the application. Over time deprecated features, temp fixes, etc. start to be a lot of the code base. By cleaning things up you can make it more maintainable, efficient, etc.
That being said, for systems this large you usually fix up parts of it and iterate over time. Trying to do the whole code base is hard cause it’s like replacing the engine while the car is in motion.
I wouldn’t necessarily agree it needs to be rewritten. Hiring programmers that are willing to work in cobol would certainly be harder than other languages though, because you’ll have a much smaller candidate pool and people would be unlikely to see learning cobol as a good career investment
The way Java is practically written, most of the overhead (read: inefficient slowdown) happens on load time, rather than in the middle of execution. The amount of speedup in hardware since the early 2000s has also definitely made programmers less worried about smaller inefficiencies.
Languages like Python or JavaScript have a lot more overhead while they’re running, and are less well-suited to running a server that needs to respond quickly, but certainly can do the job well enough, if a bit worse compared to something like Java/C++/Rust. I suspect this is basically what they meant by Java being well-suited.
Other than hardware issues, which someone else mentioned, it has a lot of enterprise-grade functionality that make it more secure and auditable than a lot of other languages. And despite, or maybe because of, its large memory footprint it’s actually faster than most languages.
I totally get any hate about writing Java though. It is a verbose language. Using Kotlin instead helps with that.
I’ve worked on these “cost saving” government rewrites before. The problem is getting decades of domain logic and behavior down to where people can be productive. It takes a lot of care and nuance to do this well.
Since these nazi pea brains can’t even secure a db properly I have my doubts they’ll do this successfully.
Not just domain logic. The implementation logic is often weird too. Cobol systems have crash/restart behaviour and other obscure semantics that often end up being used in anger; it’s like using exceptions for control flow, but exceedingly obscure and unfortunately (from what I’ve seen of production cobol) a “common trick” in lots of real-world deployments.
Functional, yes. But rarely are these sorts of things efficient. They’re covered in decades of cruft and workarounds.
Which just makes them that much harder to port to a different language. Especially by some 19 year old who goes by “Big Balls”
It’s worth noting that one of those organizations is IBM. Mostly relevant because they’re the ones that originally built a lot of that cobol, the mainframes it runs on, and even the compilers that compiled it.
They’re basically the people you would expect to be able to do it, and they pretty quickly determined that the cost of a rewrite and handling all the downstream bugs and quirks would exceed the ongoing maintenance cost of just training new cobol developers.
My dad was a cobol developer (rather, a pascal developer using a compiler that transpiled to cobol which was then linked with the cobol libraries and recompiled for the mainframe), and before he retired they decided to try to replace everything with c#. Evidently a year later their system still took a week to run the nightly reports and they had rehired his former coworkers at exorbitant contractor rates.
Nah B. This will be Extreme Agile XP with testing exclusively in Prod. Xitter will be the code repository.
Pair programming with Grok.
Spotty DOGE intern developer: “what’s a for loop?”
Grok: “Look it up yourself, noob! Holy shit do I hate Elon Musk in every fucking way!”
What’s “vibe programming”?
It’s understanding code like chatgpt helps me understand Hungarian.