This morning I came across an article that struck me as a fantastic discussion topic: Why Are So Many Developers Hating on Object-Oriented Programming? by David Cassel. "Hmm, sure it has its quirks but I couldn't imagine someone hating or outright avoiding it" I thought to myself. I read the article and had a few opinions, but I'll save that until the end.
According to Ilya Suzdalnitski, a senior full-stack engineer, Object-Oriented Programming is a "trillion-dollar disaster" and "turn out to be one big glob of global state, [which] can be mutated by anyone and anything without restrictions". Suzdalnitski's article can be found over on Medium, if anyone wants to read it.
The most controversial statement in Suzdalnitski's article is the statement "OOP is Dangerous". He claims that OOP is for cheap, inexperienced developers and "functional programmers are typically more smart, and more expensive." Suzdalnitski has received some backlash from the development community, with some even writing their own equally provocative articles: Developers Who Hate On OOP Don't Know How to Use It by Gary Willoughby.
So what do I think about these articles? First, I'd like to say Cassel took a heated topic and presented it in a very neutral way. I appreciate that I can read the article and not have had an indication of where his opinion lies in the debate. As for Suzdalnitski's article, I believe it is an excellent opinion piece and controversy can always be fun - but I do not agree that any one language, programming style, or framework is the be-all-end-all solution to every problem. I absolutely agree that OOP will not work for every need, but I disagree just as equally that functional programming will work for every need.
I also do not think that OOP is reserved for cheap, low-tier developers. There are many incredibly intelligent software engineers working with object-oriented programming and it takes a significant investment of time and practice to reach a level of mastery. That said, I have never tried functional programming, so I can't speak to the differences in use and learning curve.
What are your thoughts on the article? Do you agree with Suzdalnitski? Do you disagree? I'm curious what you have to say!