This is somewhat off-topic here, pertaining as it does to software in general, not just games; though in my defense, the article that prompted it, called How Technocratic Hyper-Rationalism Has Birthed Right-Wing Extremism, does turn out to be about games in the end. But games are software, and software development has been going through a massive crisis lately. Two, actually: one of burgeoning complexity, and one of relevance. And this ties into a bigger trend — pointed out by the aforementioned article — of people focusing more and more on the shiny toys while forgetting the who, the what and the why.
I ranted against techno-utopianism before: the childish belief that more shiny toys will somehow cure all the world’s ills by their mere presence, when it’s not the toys you have, but how you use them. (Look at the hubbub surrounding clean energy and self-driving cars when the Paris Metro has been automated and nuclear-powered for decades — and yes, nuclear is cleaner than coal.) Or that computer algorithms are somehow objective and unbiased, a notion recent case studies have thoroughly dismantled, but one technocrats love, for obvious reasons: it justifies the status quo in which they rule the world.
In the software industry, this attitude took the form of successive technologies being touted as panacea. In turn, we were sold structured programming, logic and functional programming, OOP, UML, XML. More recently it was frameworks, and now everything is package managers and deployment systems.
Allow me to get philosophical for a moment.
It occurs to me that a tomato isn’t a tomato because Zeus has decreed so. We only call it a tomato because it has a particular combination of properties. Its name comes from its properties, not the other way around. So object-oriented programming has it exactly backwards…
Then again, this is the same brain bug that causes lawmakers to ban tactical knives when kitchen knives are just as dangerous, and in fact any object with a sharp edge can cut, while any object with a sharp tip can stab, regardless of what we call it or what it was built for. Think an ice pick.
On a related note, it occurs to me that a car doesn’t drive, while a triangle doesn’t draw. So writing
triangle.draw() is just nonsensical. Sure, nowadays a car can drive itself, but it’s still a transitive verb.
I sometimes make fun of Haskell, but it may well be the only programming language with a sane object system…