I’ve hitched a ride on a few technological bandwagons over the years. Some of those have lasted and some haven’t. In particular I remember CORBA, SOAP and EJBs. Once upon a time they were The Next Big Thing, and I sometimes think about how they got overtaken by other frameworks and technologies.
They had their positives: They allowed developers some kind of “plug and play” or integration capabilities, which was particularly useful in ecosystems of incompatibilities—particularly common in big organisations. CORBA allowed object-oriented code to interact with other object-oriented code across the network, even if the two sets of code were written in different languages. Similarly for SOAP and web services. EJBs promised to create a marketplace of Java components. Today, for the most part, they are historical.
Of course, they didn’t have the anticipated longevity because they were too complicated, but also because better alternatives arose. Network interoperability was mostly beaten by REST, and Java’s comprehensive systems have mostly taken second place to less managed languages (and their ecosystems) such as Node.js. With those successor technologies, generally people accept the overhead that sometimes, to get different systems working together, you need to apply a bit of extra work and talk to another team or do a bit more coding. But that’s accepted as a reasonable trade-off for ease of development.
Those earlier technologies offered an elegance and completeness of vision, but those things came at the cost of complexity to others. CORBA might allow two departments to integrate two object-oriented systems seamlessly, but only if both, or a third department, learned and maintained a complicated object broker system.
The frameworks and technologies that have won out are those that offer speed and simplicity. Or, to put it another way, working software today beats clever architecture tomorrow.
Of course, that’s not universally true. Many businesses have been hurt by releasing a hacked-together system too quickly, struggling to handle customer complaints and over-tired engineers as errors and failures pile up. Architecture does matter but—again—a system that went into operation 12 months ago and is struggling to handle the workload today is probably still better for business than one that cost more money and was delivered much later.
When it comes to making decisions that will impact our business for the very long term, it seems speed and simplicity tend to win.