Software Development Elixirs
I once was a young man writing COBOL programs at a Fortune 500 company. The company had just begun hiring "Computer Science" graduates. They were different. Smart but weird. They avoided COBOL like the plague even though that is where most of the work was at the time. I saw them as lazy and somewhat elitist. They told me that this thing called Object Oriented Programming (OOP) would be the future. It was "many times" more productive than languages like COBOL. You could inherit behaviors from other objects. Objects could have data and logic, and those members would all be inherited.
Well, it was better. But it did not live up to the hype. Many of the OOP programs were not very efficient and the hardware was not yet ready for them. And inheritance turned out to be not such a great thing. And mixing methods and data is not always a great idea. And there was often difficulty mapping the objects to relational tables. So OOP was evolutionary but NOT revolutionary. Many things still make more sense in procedural logic. And the functional style makes more sense for some other things. Objects were just another useful tool.
Ah, but the next elixir was going to be 4th generation languages. And they had some nice features. I really bought into this one. But the really good features were integrated into the best 3GLs and the 4GL elixirs died off.
Another elixir was going to be Computer Aided Software Engineering (CASE). Remember Excelerator? I do. It's dead. But some of the concepts were good and were incorporated into products that we use today.
But distributed computing would be the real revolution. Programs would run on idle desktops overnight. We would have magical databases which would distributed and consistent using a "two phase commit". Yeah, not so much.
Ah, but client-server would save the world! Until you had to roll out a new update to thousand of desktops which were all a little different. I dread those days.
I can add more to the list of failed elixirs. Thin-client computing. Object Databases. Java will rule the world. Plugins like Silverlight and Flash. Tablet computing. Just to upset some folks I'll throw in Scrum and Agile. How about Micro-services? SOA? Big Data? All contributed good things. But in my opinion, none lived up to the hype.
OK, so what did live up to the hype? Was anything really revolutionary in this field? Here are a few of my thoughts: Relational Databases; they pretty much run the world now. Source Control; if you don't use it you're crazy! Continuous Integration (maybe devops in general); just too good. The browser: really a thin client that is (now mostly) device and OS agnostic. What would you add to this list of software development technology that lived up to the hype? AI?
It's interesting to me that what I came up with as truly revolutionary was one data persistence mechanism (RDBMS), a development utility, a devops tool category, and an architecture. But we are still mostly using 3rd generation languages. Isn't it time for a revolutionary advancement in computer languages? I think so. But functional isn't it. Useful, but not revolutionary.
Perhaps one day the obtrusive Change Control revolution will begin to be scaled back,, and 10-minute changes will once again take, well... 10 minutes.