Object oriented programming does not work

(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: lawrence@krubner.com

The most abstracted and de-coupled and object-oriented framework that I have worked with is Symfony, and it is also the framework that has broken backwards compatibility the most often, during the last 5 years. I started working with Symfony in early 2008, and it has been constantly refactored during that time, and each refactoring has broken something important.

It is difficult to explain why I dislike Symfony so much. For awhile I would have said it was their envy of Java. Fabien Potencier used to be a Java programmer, and Symfony is his first piece of PHP software. And not only is there an envy of Java, but there is an envy of the worst aspects of Java — a craving for that kind of complexity. But the problems with Symfony extend beyond Java-envy. There was also the reckless changes, the lack of stability — and what is the use of using a 3rd party framework, except that it offers stability? Now, suddenly, in 2013, Potencier has decided that stability is important. But over the years he has built a core team that dislikes stability, or rather, enjoys the freedom to break stuff. If ever there was one fact that should convince people to move away from Symfony, it would be that this essay was written in 2013 and not 2007

I know that this post won’t please everyone, but I’m convinced that this is the right thing to do now and I think that most of the Symfony community will love it. Also, I’ve tried to be subtle in choosing my words, so read carefully and don’t over-read what I’ve written.

Long story short: in the coming months, the Symfony core contributors should focus their efforts toward stabilizing the existing features instead of working on new ones. At this point, backward compatibility and stability are more important than everything else.

Symfony is one of the few PHP projects that has been promoting radical changes to the way developers work with PHP by leveraging many concepts, best practices, and design patterns from other languages and technologies. But Symfony is also one of the few to embrace true collaboration and sharing. That was not necessarily incompatible in the “early days” of Symfony2, but to continue doing both the right way, the community needs to slightly change its priorities.

I suspect that object oriented programming appeals to people who love complexity for the sake of complexity — of building a complicated toy as a kind of mental challenge, a sophisticated kind of game.

For those of us who actually want to accomplish things, OOP amounts to shackles that slow us down, and for those who want stability, OOP amounts to The Great Lie — a promise of seriousness from those who actually wanted to play a game.