OOP bashing seems trendier these days, so I'm not really saying anything original here; the prevailing wisdom in like 2000-2010 (2010 was 16 years ago, time flies) was much more favorable to OOP, so it's interesting to see objections people raised back then. Their thoughts are also more interesting than mine because Yaron Minsky/Stephen Weeks and Joe Armstrong know much more about OCaml and Erlang respectively (for a similar understatement, Olise dribbles a bit better than me).
Caml trading – experiences with functional programming on Wall Street (Yaron Minsky and Stephen Weeks, 2008) claims
OCaml makes it possible to write code that is considerably easier to read, review, and think about than code written in more mainstream languages, due to a number of factors
including (among others) better tools for modularity:
the standard functional programming mechanisms (closures, parametric polymorphism, modules, and functors) for providing modularity in OCaml are significantly better suited to the task than the standard object-oriented mechanisms (objects, classes, and inheritance).
When we first tried switching over from VB to C#, one of the most disturbing features of the language for the partners who read the code was inheritance. They found it difficult to figure out which implementation of a given method was being invoked from a given call point, and therefore, difficult to reason about the code.
But, too honest to omit inconvenient parts of the story, they mutter
It is worth mentioning that OCaml actually does support inheritance as part of its object system. That said, objects are an obscure part of the language, and inheritance even more so.
Later in the "OCaml pitfalls" section they lament the O in OCaml
In our opinion, having an object system in OCaml (Remy & Vouillon, 1998) is a mistake. The presence of objects in OCaml is perhaps best thought of as an attractive nuisance. Things that other languages do with objects are better achieved in ML using features like parametric polymorphism, union types and functors. Unfortunately, programmers coming in from other languages where objects are the norm tend to use OCaml’s objects as a matter, of course, to their detriment. In the hundreds of thousands of lines of OCaml at Jane Street, there are only a handful of uses of objects and most of those could be eliminated without difficulty.
Regarding OCaml's pitfalls such as objects, they complain
Many of these deficiencies are further hindered by the “cathedral” development model adopted by INRIA, which slows the pace of improvement.
Of course in 2026 Jane Street has enough money (another understatement) to develop its own OCaml tools, oxidized or whatever super version they need.
Funnily enough INRIA is a French research institute, and Joe Armstrong also references the boss of IBM France pushing object oriented in Prolog (not seriously claiming OOP is a uniquely French vice or Bonaparte forced OOP upon the world; just a funny coincidence, and maybe there was a lot of language development happening in France?). From Why OO Sucks (Joe Armstrong, 2000):
When I was first introduced to the idea of OOP I was sceptical but didn't know why—it just felt “wrong”. After its introduction OOP became very popular (I will explain why later) and criticising OOP was rather like “swearing in church”. OOness became something that every respectable language just had to have.
As Erlang became popular we were often asked “Is Erlang OO”—well, of course the true answer was “No of course not”—but we didn't care to say this out loud—so we invented a serious of ingenious ways of answering the question that were designed to give the impression that Erlang was (sort of) OO (If you waved your hands a lot) but not really (if you listened to what we actually said, and read the small print carefully).
At this point I am reminded of the keynote speech of the then boss of IBM in France who addressed the audience at the 7th IEEE Logic programming conference in Paris. IBM Prolog had added a lot of OO extensions. When asked why he replied:
Our customers wanted OO Prolog so we made OO PrologI remember thinking “How simple, no qualms of conscience, no soul-searching, no asking ‘Is this the right thing to do’ …”
Don't let the clickbait title fool you, Joe sounds quite measured and friendly when talking out loud, with a lot of stammering and grins. In fact in 2010 he said Erlang is the only object oriented language, maybe, for a certain definition of object oriented
I wrote an article, a blog, thing, years ago, why object oriented programming is silly, I mainly wanted to provoke people, quite interesting response to that, managed to annoy a lot of people, part of the intention actually! (laughs) And I started wondering about what object oriented programming was, and I thought well, Erlang wasn't object oriented, it was a functional programming language. And then my supervisor, my thesis advisor Seif Haridi said "But you're wrong!" he said, "Joe", he said, "Erlang is extremely object oriented" he said, "all the other", he said, such things as, "the object oriented languages aren't object oriented". And so, I might think that, I'm not sure if I believe this or not, but Erlang might be the only object oriented language, because the 3 tenets of object oriented programming are that it's based on message passing, that you have isolation between objects, and have polymorphism. And Alan Kay himself wrote this famous thing, he said the notion has been completely misunderstand, it's not about objects and messages, sorry, it's not about objects and classes, it's all about messages.
This would be news to a lot of people, OOP is not about inheritance, it's about message passing!
Of course, inheritance and objects and classes etc. is what people typically think of as object oriented, and Joe definitely objects to that, just to give the blog outline
Objection 1. Data structure and functions should not be bound together
...Objection 2. Everything has to be an object.
...Objection 3. In an OOPL data type definitions are spread out all over the place.
...Objection 4. Objects have private state.
It sounds like Joe chewed for a while on an Erlang process sounding a lot like an object in that it has private state. The point in Erlang is letting one process halt or crash without also stopping another process, which as Joe says in the video is not the point of objects in, for instance, Java.
Obligatory waffling conciliatory disclaimer, someone could easily come along with an example of a great object oriented system they built and they would be right about their own experience with objects, even while Jane Street and Ericsson are great examples without them. You can't stack up a big pile of evidence and objectively prove Objects Considered Harmful or whatever. The "unsatisfying subjective reality of programming languages" is these are just feelings people have about their experiences.
So it's totally fine to simply assert OO sucks without a huge long post showing why, in fact writing a really long post about programming languages might smell of trying to prove more than is really possible to prove. Of course there can also be a lot of interesting and valuable lessons to glean from a long post detailing a project's use of a langauge.
It comes down to which language features make sense to you, not which langauge features make sense full stop. Except for the French plot to spread objects (FROOP), that part is objectively true.