One of these days I was thinking about why OOP has become so popular and why do people have emotional attachment to it. What does it give them that other disciplines cannot provide? Then I realized I should really ask myself since I was a believer myself. What did I enjoy most about working with OOP?

The first thing that came into my mind was that it was so obvious. By the time I went to college there was basically nothing else out there. Of course, there were all these esoteric approaches like functional and logic programming, but everyone knew that you couldn’t use those outside the university walls. How could someone who is just trying to fit in the world of software development question the most widely accepted programming concept? But did I even have any doubts about it?

No. The truth is: I was totally convinced. OOP is the best way to describe and solve real world problems, since the world itself is made of objects. I was eager to jump on my next project and begin to define new classes, create objects and make them interact. Why? Because it’s so much fun.

Yeah, programming is fun. But even before OOP, you could create functions to sort a set of random numbers. You could tweak it to perform better. That’s kind of fun, but OOP has something that grabs you and doesn’t let you go. You see with functions you can process data, but your function doesn’t work without data, it doesn’t have a state, it doesn’t live. An object though has state and methods to change that state, so it’s much more alive than a function. And you know what? I can create as many as I want …

I just use this tiny “new” keyword and I can create life. And that’s just the beginning. I can create all kinds of different objects with different behaviors and I can make them interact. I can even create objects that create other objects and I can call them factories. I can build entire worlds where I make the rules and other developers will respect me for building huge and complex worlds. I’m as powerful as a god, the god of objects …

No wonder a lot of developers are willing to ignore some major flaws of OOP. How could they even question the principle that gives them such tremendous powers?