In it, he said that precious time and brainpower are being spent thinking about "abstractions" and "design patterns" instead of solving real-world problems.
“Object-Oriented Programming (OOP) has been created with one goal in mind -- to manage the complexity of procedural codebases. In other words, it was supposed to improve code organisation”, wrote Suzdalnitski.
He said that there was no objective and open evidence that OOP is better than plain procedural programming.
“Instead of reducing complexity, it encourages promiscuous sharing of mutable state and introduces additional complexity with its numerous design patterns. OOP makes common development practices, like refactoring and testing, needlessly hard”, he said.
Using OOP is innocent in the short-term, especially on greenfield projects. But Suzdalnitski was concerned about its long-term consequences.
“OOP is a time bomb, set to explode sometime in the future when the codebase gets big enough. Projects get delayed, deadlines get missed, developers get burned-out, adding in new features becomes next to impossible. The organisation labels the codebase as the "legacy codebase", and the development team plans a rewrite”, he said.
OOP provides developers too many tools and choices without imposing the right kinds of limitations. Even though OOP promises to address modularity and improve reusability, it fails to deliver on its promises, he added.
He said that he was not criticising Alan Kay's OOP, but he wished it was implemented the way he designed it rather than the modern Java/C# approach to OOP.
“I think that it is plain wrong that OOP is considered the de-facto standard for code organisation by many people, including those in senior technical positions. It is also wrong that many mainstream languages don't offer any other alternatives to code organisation other than OOP”, Suzdalnitski said.
He thinks that Functional Programming as a superior alternative.