Tl;dr “You kids get off my lawn! And run it all in VMs”

You can take your COBOL and JCL from 1985 and be very confident that will run on your 2020 mainframe. That’s a feature – not a bug. It’s also a language intended for use by people who were business people and not mathematicians. (There were no CS degrees in 1959). We’ve also gotten rid of the largely self-contained, low-impact, click-run tools like PowerBuilder and pre-DotNet Visual Basic. Visual Studio is still pretty much there, but the languages are now targeted at professional, full-time developers. But Microsoft owns the whole too chain and tries to make it largely click and go.

In some cases, when you pull back the curtains, most modern tool chains seem like they are stitched together like something from Etsy – each version (or even installation) is a hand-crafted, unique one-off that you’ll never be able to make again. (I’m looking at you, JavaScript). Forget about having a client call you in 5 years and ask you to add a few features to that app you built. You might go to GitHub and see the projects are there, but the last commit was four years and 11 months ago, during the 5 minutes when that was the tool everyone had to use (if they were a ‘serious’ developer.)

I came to despise Java because I felt it was a hodge-podge of layered libraries and stitched together solutions. Couple that with out of date posts on Stack Overflow and dealing with Java issues felt tedious. But now it’s looking like the responsible adult in the room. It’s like seeing your thrice-divorced, rarely employed uncle is at least sober while all your other relatives invested their retirement savings in lottery tickets, got blind-drunk, and started rolling joints. Python is kind of there, but have you ever worked through build issues on libraries that have C dependencies on Windows?

Maybe the solution is to run everything in VMs that you can back up somewhere for cold storage. That seems wasteful, but 12 TB drives are (relatively) cheap. Buy them in pairs to mirror them. Sure, that’s many terabytes of VM images but at least you could get back to a working build. Now that even low end desktops have 8 cores/16 threads, lopping off 2 cores for your dev tools, 2 cores for your test environment, and 2 cores for databases or whatever, seems reasonable. That leaves 2 cores for your machine on which you run all the tools you would have to re-license if you ran them in VMs.