Why COBOL Isn't the Problem
The article clarifies that COBOL's system failures during the pandemic stem from poor maintenance, not the language itself, emphasizing the challenges of managing technical debt in critical applications.
Read original articleThe article discusses the misconceptions surrounding COBOL, an old programming language, particularly in the context of system failures during the COVID-19 pandemic. It highlights that the real issue is not the programming language itself but the lack of proper maintenance of the systems that utilize it. The New Jersey unemployment system faced significant outages as claims surged by 1600% due to the pandemic, leading to a public outcry and media focus on COBOL. However, the authors argue that blaming COBOL is akin to blaming a car's paint color for engine failure; the underlying problem is insufficient maintenance and understanding of complex systems. The article emphasizes that while COBOL is indeed an older language, it is still widely used in critical applications like government data processing and ATM transactions. The authors aim to clarify that the challenges in maintaining such systems stem from the difficulty of refactoring and managing technical debt rather than the programming language itself. They also note that learning programming languages, including COBOL, is relatively easy for those already familiar with programming concepts, but understanding and maintaining existing programs is significantly more challenging.
- The failures of systems using COBOL are primarily due to poor maintenance, not the language itself.
- The New Jersey unemployment system experienced outages during the pandemic, highlighting systemic issues.
- COBOL remains relevant in critical applications despite being an older language.
- Refactoring and managing technical debt are key challenges in maintaining complex systems.
- Learning programming languages is easier than maintaining existing programs.
Related
The Prototype's Language
The evolution of programming languages in payments technology sector is discussed, highlighting the shift from COBOL to Java and now to Python for its speed and adaptability. Language choice impacts developers and work quality.
I Probably Hate Writing Code in Your Favorite Language
The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.
Defense of Lisp Macros
The article highlights challenges in automotive software development, emphasizing reliance on C, fragmentation from specialized tools, and advocates for powerful languages like Lisp to improve efficiency and integration.
C Isn't a Programming Language Anymore (2022)
The article examines the shift in perception of C from a programming language to a protocol, highlighting challenges it poses for interoperability with modern languages like Rust and Swift.
Programming Languages 2024
IEEE Spectrum's 2024 programming language rankings highlight Python's dominance, SQL's employer preference, and the rise of Typescript and Rust, while Apex and Solidity emerge as new contenders in technology.
Older systems have tons and tons of business logic encoded in them to handle edge cases and those functions will be in odd places, and then downstream systems have tons of logic in them to handle (and expect) bugs that your original system has.
Saying "let's rewrite a System that does X" is fine, but you also need to know all the arcane business rules and weird bugs in the system that aren't nicely spelled out in docs, or requirements, or some config file, but are nested deep deep inside in the app, hidden in unexpected places. The complex interactions of these functions generates the complexity, not just "Cobol". 50 years of rushed additions of weird rules to handle years past incidents or business logic changes.
Especially with old finance, insurance, and other systems that have this sort of longevity the original people who knew the why's have long since left. Any attempts to optimize, fix rules, fix bugs etc will produce a beautiful new clean system that's performant and simple and doesn't work at all.
> Once you know how to program, learning programming languages is easy. Understanding existing programs is hard. Maintaining existing programs (in the form of what we call refactoring) is the most difficult part, by far.
Static typing, with generics etc means that you can use more proven libraries that are well-understood and not custom/special in each instance.
Immutable data-structures means you can reason about the function being applied without hidden side-effects, accelerating understanding of a new system and limiting unintended consequences, etc.
I worked about a decade in the 90's at a company providing code generation and source analysis tools to (banking, insurance, telco, etc) companies that used Cobol. The language can do everything (I've made Windows and OS/2 GUI programs with it), as can any Turing complete language, but it's not the best. The most I could say about it is that it's like Golang, where you're sort of steered away from over-complicating a program, but with Cobol you still don't have the tools to really simplify it either.
People who don't choose and use better tools are not part of the solution.
This wouldn't be a problem if organizations that are still using COBOL code would pay high salaries for COBOL programmers because there are people who are only writing code for the money who'd be happy to work with a terrible programming language if it makes them money. But they generally also want to pay antiquated salaries from decades ago for COBOL jobs if they even offer a salary at all. Because they would have migrated their system off of COBOL decades ago if they actually cared about properly maintaining it!
Second, maintainability is absolutely not given freely. A gov't merely "purchasing software" does not necessarily get them the source code, let alone proper documentation. Seriously. Contractors have no incentive to make things easy for you, and all the incentive to make it hard. The tail often wags the dog.
"The powerpoint slides didn't say anything about lock-in" &c &c &c
I remember seeing articles that showed this specific issue was not COBOL itself, but the WEB front end(s) to that system. Seems they blamed COBOL for clicks.
> The real problem is, and always has been, the fact that the failed systems hadn't been maintained properly.
This is like Cyber Security on modern systems, cheap is always the way to go. Two different problems, same root cause. Management will always do it on the cheap.
All and all a very good article.
That’s a pity. War and Peace is a fantastically good novel, genuinely a page-turner in places.
> Southwest Airlines had a disastrous holiday season, thanks in part to a software bug that left crews out of place and grounded thousands of flights. But Southwest isn't alone in having software in the headlines lately. The New York Stock Exchange recently had a software error that caused weird pricing on stocks and the FAA had its own computer issue that grounded planes earlier this month. So what's the deal with corporate software? Why do these crashes happen? And why does the user experience typically leave something to be desired? On this episode of the podcast we speak with Patrick McKenzie, an expert on engineering and infrastructure, who writes the Bits About Money newsletter and recently left payments company Stripe after six years. We talked about the challenges of keeping any software system alive after years of upgrades and updates, the distribution of tech talent across industries, and whether non-tech companies can close the gap with Silicon Valley.
* https://omny.fm/shows/odd-lots/why-corporate-america-still-r...
* https://www.youtube.com/watch?v=v6UQaXpzwQA
"This Is What Happens When Governments Build Software" (Jun 2023):
> There's a lot of frustration about the government's ability to build things in the US. Subways. Bridges. High-speed rail. Electricity transmission. But there's another crucial area where the public sector often struggles, and that is software. We saw it with the infamous rollout of Obamacare. We see it in the UX of the Treasury Direct website. And we saw it in the way state unemployment insurance systems broke during the pandemic. So why is it so hard for the public sector to build and maintain software? On this episode we speak with Jennifer Pahlka, the founder and former executive director of Code for America and author of the new book Recoding America: Why Government Is Failing in the Digital Age and How We Can Do Better, as well as Dave Guarino, who recently left the Department of Labor after working on upgrading the unemployment insurance system. Both have a long history of working on public sector software systems and they explain why the problem is so tricky.
* https://www.youtube.com/watch?v=nMtOv6DFn1U
One large component is that a lot of business rules and policies have been encoded into the software logic, and (re-)translating that into code in a new(er) language is part of the challenge.
Related
The Prototype's Language
The evolution of programming languages in payments technology sector is discussed, highlighting the shift from COBOL to Java and now to Python for its speed and adaptability. Language choice impacts developers and work quality.
I Probably Hate Writing Code in Your Favorite Language
The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.
Defense of Lisp Macros
The article highlights challenges in automotive software development, emphasizing reliance on C, fragmentation from specialized tools, and advocates for powerful languages like Lisp to improve efficiency and integration.
C Isn't a Programming Language Anymore (2022)
The article examines the shift in perception of C from a programming language to a protocol, highlighting challenges it poses for interoperability with modern languages like Rust and Swift.
Programming Languages 2024
IEEE Spectrum's 2024 programming language rankings highlight Python's dominance, SQL's employer preference, and the rise of Typescript and Rust, while Apex and Solidity emerge as new contenders in technology.