Why is OOP Such a Waste?

Ilya Suzdalnitskiy
9 min readMar 15, 2021

Object-Oriented Programming is considered by many to be the gold standard. Yet, ironically, it is the major source of resource waste — a waste of time and money.

Photo by OSPAN ALI on Unsplash

The False Object-Oriented Programming

I’m going to start this article with a bold claim. What is widely known today as OOP is nothing but a terrible mistake.

Now that I have your attention, let’s turn to the supreme authority on the topic of object-orientation, Alan Kay, the genius who has invented OOP:

I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.

- Alan Kay, the inventor of Object-Oriented programming.

It all started with C++

Yes, the modern OOP started with C++. Yet C++ was never a well-designed language. Mainly because it was designed in 1979, and at that time language designers lacked the experience, and didn’t know what to focus on. C++ attempted to cram in as many features as possible. OOP simply happened to be a “cool new thing” back then.

C++ has implemented the very superficial features of OOP such as inheritance and encapsulation, while completely missing Alan Kay’s key ideas. What exactly has C++ (and consequently other modern OOP languages) missed?

Here’s another quote from Alan Kay:

I’m sorry that I long ago coined the term “objects” for this topic because it gets many people to focus on the lesser idea. The big idea is messaging.
- Alan Kay, the inventor of OOP

What the designers of C++ have completely missed was the very core idea of OOP — messaging. Yes, C++ has methods. But methods are not messages.

It was all about cells

Alan Kay had a background in biology, and had an idea of designing programs in a way that resembles biological cells. The biological cells are completely independent, and can’t access each other’s internal state. The cells can only communicate via messages (e.g. neurotransmitters).

And Alan Kay has successfully implemented the “proper OOP” in Simula and later in Smalltalk.