When I started gathering requirements from the city's rep who was my point of contact I asked them for any documentation they had such as use cases, functional specs etc. All they could provide was the original COBOL source code bound up in those huge 17"x14" binders; the one's that have the holes along each side from the old dot matrix printers with every other line having that faint light green background.
Well I'd never seen COBOL in my entire live and I could only look at the code for about an hour before my eyes started to bleed. Fortunately I was able to get restricted access to the system and it ended up being pretty easy to just reverse engineer the thing by mapping each green screen of the app to a corresponding web page. In the end I didn't need any original code or documentation to do the job.
I worked a contract for an android app like that: only source, no requirements, no tests, no docs. A little bit of incomplete commentary in the code. I would build it, run it, see it crash and hope the fixes I made didn't eliminate some important feature. IDK. Isn't that the way everything works now?
Or did you transition to a completely new system - new storage / database everything?
Even if you had the original design documents, it is very likely that the code that runs now has widely diverged from the design documents in the past 50 years.
In addition, being risk averse for this kind of code is likely a good thing. With a rewrite, the best you can hope for is to do what you are doing now without running into bugs. At worst, you have lost a lot of money and reputation and may become bankrupt. The risk/reward tends to favor "if it ain't broke, don't fix it."
And if you've already found all the bugs, and it's performant enough, why would you ever rewrite it?
Sure, there's a maintainability issue, specifically with available developer talent.
But I feel like shepherding a mature, battle-tested codebase probably is more of an ops than a dev problem.
There’s going to be some point where you’ll be glad to have original specs and docs and source code on hand (along with a good COBOL dev) so you don’t have to decompile and reverse engineer the damn thing. (Which IIRC had to be done for a relatively large percentage of COBOL-era systems updated for Y2K.)
Is it implying that if you like doing innovative programming and learning more about new languages and your craft, you must have a short attention span?
It is also rather naive if it is believed that anything other than a tiny fraction of programming in the real world is actually innovative.