Movatterモバイル変換


[0]ホーム

URL:


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
 
It seems that you've previously unsubscribed from our newsletterin the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to ourTerms of Use andPrivacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
 
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become aTNS follower on LinkedIn.

Check outthe latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
 
NEW! Try Stackie AI
PODCASTSEBOOKSEVENTSWEBINARSNEWSLETTERCONTRIBUTE
ARCHITECTUREENGINEERINGOPERATIONSPROGRAMMING
Throwing AI at Developers Won’t Fix Their Problems
Jul 11th 2025 4:00am, byChris Westerhold and Ankit Jain
Will LLMs and Vibe Coding Fuel a Developer Renaissance?
Jul 9th 2025 1:52pm, bySylvain Kalache
Introduction to Large Language Models (LLMs)
Jun 30th 2025 11:00am, byTNS Staff
How To Build an AI Health Care Agent on Amazon Bedrock
Jul 17th 2025 8:00am, byHafiz Hassan
Harnessing AI To Elevate Automated Software Testing
Jul 9th 2025 9:00am, byLindsay Farny
Driving Platform Adoption: The Missed Opportunity of Marketing
Jul 7th 2025 9:00am, byMichael Coté and Rita Manachi
MCP Vulnerability Exposes the AI Untrusted Code Crisis
Jul 7th 2025 6:00am, byDan Fernandez
Hypercloud Players Reveal Their Latest AI FinOps Products
Jun 9th 2025 11:28am, bySteven J. Vaughan-Nichols
Why Everyone Hates Your DevOps Stack
Jul 16th 2025 7:30am, byVicki Walker
Driving Platform Adoption, Part 2: Yes, Create T-Shirts To Tout Your Brand
Jul 15th 2025 8:00am, byMichael Coté and Rita Manachi
Let AI Hustle So Employees Can Lead
Jul 7th 2025 10:00am, byMike Szilagyi
Driving Platform Adoption: The Missed Opportunity of Marketing
Jul 7th 2025 9:00am, byMichael Coté and Rita Manachi
Kubernetes Finally Solves Its Biggest Problem: Managing Databases
Jul 14th 2025 1:00pm, byRotem Tamir and Gabriele Bartolini
6 Design Principles for Edge Computing Systems
Jul 17th 2025 7:00am, byJoab Jackson
Smarter AI for Critical Operations: Why Data Matters 
Jul 15th 2025 10:00am, byScott Bastek
The Grep Command in Linux
Jul 13th 2025 7:00am, byJack Wallen
Driving Platform Adoption, Part 2: Yes, Create T-Shirts To Tout Your Brand
Jul 15th 2025 8:00am, byMichael Coté and Rita Manachi
Enterprise Platform Teams Are Stuck in Day 2 Hell
Jul 14th 2025 12:03pm, byJennifer Riggins
Throwing AI at Developers Won’t Fix Their Problems
Jul 11th 2025 4:00am, byChris Westerhold and Ankit Jain
How AI Can Help You Learn the Art of Programming
Jun 20th 2025 9:00am, byJack Wallen
How to Build Multistep Forms in React
May 22nd 2025 12:00pm, byVinod Pal
Bjarne Stroustrup on How He Sees C++ Evolving
Mar 7th 2025 6:00am, byDavid Cassel
Enterprise Platform Teams Are Stuck in Day 2 Hell
Jul 14th 2025 12:03pm, byJennifer Riggins
Warp Goes Agentic: A Developer Walk-Through of Warp 2.0
Jul 12th 2025 6:05am, byDavid Eastman
10 Insights from Integrating AI into My Coding Workflow
Jul 11th 2025 5:05am, byDieter Randolph
Prepare Your Mac for Go Development
Apr 12th 2025 7:00am, byDamon M. Garn
Pagoda: A Web Development Starter Kit for Go Programmers
Mar 19th 2025 6:10am, byLoraine Lawson
Go Power: Microsoft's Bold Bet on Faster TypeScript Tools
Mar 12th 2025 1:00pm, byDarryl K. Taft and Loraine Lawson
Using Java for Developing Agentic AI Apps
Jul 1st 2025 8:00am, byDaniel Oh
Inside Java's Language Renaissance
Jun 26th 2025 10:00am, byChad Arimura
Async Programming in Java Repositories
Jun 13th 2025 1:00pm, bySimon Ritter
Java at 30: Java Pioneers Look Back, Forward
Jun 5th 2025 4:00pm, byDarryl K. Taft
Web Dev Kent Dodds on Remix and His Frontend Secret Weapon
Jul 15th 2025 12:30pm, byLoraine Lawson
Introduction to JavaScript
Jul 14th 2025 2:00pm, byTNS Staff
Hono Shows the Way for Microframeworks in a Post-React World
Jul 12th 2025 10:20am, byRichard MacManus
Creators of Nuxt.js and Nitro Join Vercel
Jul 11th 2025 10:05am, byLoraine Lawson
5 Underappreciated JavaScript Libraries To Try in 2025
Jul 10th 2025 12:00pm, byAlexander T. Williams
Python `apply()` vs. `apply_async()`: Which Should You Use?
Jul 16th 2025 10:00am, byJessica Wachtel
Convert Timestamps To Strings Like a Python Pro
Jul 14th 2025 11:00am, byJessica Wachtel
Python Indexing vs. For Loops: What’s Really Faster?
Jul 10th 2025 10:00am, byJessica Wachtel
How to Write Rust Code Like a Rustacean
Jul 9th 2025 6:05am, byZziwa Raymond Ian
Decode Any Python Code With This 5-Step Method
Jul 7th 2025 11:00am, byJessica Wachtel
Python `apply()` vs. `apply_async()`: Which Should You Use?
Jul 16th 2025 10:00am, byJessica Wachtel
Convert Timestamps To Strings Like a Python Pro
Jul 14th 2025 11:00am, byJessica Wachtel
Python Indexing vs. For Loops: What’s Really Faster?
Jul 10th 2025 10:00am, byJessica Wachtel
Decode Any Python Code With This 5-Step Method
Jul 7th 2025 11:00am, byJessica Wachtel
Build Your Own AI Terminal Chatbot in Minutes
Jul 3rd 2025 12:00pm, byJessica Wachtel
How to Write Rust Code Like a Rustacean
Jul 9th 2025 6:05am, byZziwa Raymond Ian
Do Frontend Frameworks Still Matter? A Thread
Jun 28th 2025 6:00am, byLoraine Lawson
Rust Eats Python's, Java’s Lunch in Data Engineering
Jun 19th 2025 1:00pm, byDarryl K. Taft
InfluxDB v3: Why Rust Beat Go for Time Series Database
Jun 5th 2025 10:00am, byB. Cameron Gain
2019-08-21 12:00:42
Why Are So Many Developers Hating on Object-Oriented Programming?
feature,
Software Development /Tech Culture

Why Are So Many Developers Hating on Object-Oriented Programming?

Does Object Oriented Programming really make it easier for programmers to develop? Of is an alternatve like functional programming a better way to go?
Aug 21st, 2019 12:00pm by
Featued image for: Why Are So Many Developers Hating on Object-Oriented Programming?
Feature image: “Vrubel Demon” by Mikhail Vrubel (via Wikipedia).

Object-oriented programming: Some developers love it — but somehate it.

Object-Oriented Programming (OOP) is that long-standing programming paradigm — a coding style, a school of thought, a practice taught in schools — that preaches the importance of organizing your code into larger meaningful “objects” that model the parts of your problem. These handy objects bundle together all the necessary variables for describing each possible “state” of your model’s components — as well as all of the methods (subroutines or functions) necessary for changing each variable’s data.

This is supposed to match the way people actually think in the real world, arranging their code into meaningful chunks with relationships that are obvious and intuitive. You end up with different families of objects, all discretely interacting with each other and swapping messages about the state of their data or whatever changes should be made next.

But in practice, detractors claim, OOP doesn’t always work out this way.

The “haters” camp includesIlya Suzdalnitski, a senior full-stack engineer who last month posted a 6,000-word essay dubbing OOP a “trillion-dollar disaster.” And it turns out he’s not the only one with strong feelings. After writing a follow-up essay, he found that “The two articles combined have been readabout half a million times in about a month!”

So what’s the big beef? By making things more complex, “OOPfails at the only task it was intended to address,” Suzdalnitski argues. Object-oriented programs instead end up with variables and their mutable states “shared promiscuously between various objects.”

“In most cases, OOP programs turn out to be one big blob of global state, [which] can be mutated by anyone and anything without restrictions,” he tells me in an email.

Suzdalnitski also believes that object-oriented code is harder to refactor and harder to unit test, and his essay builds up to a bold pronouncement that “It is impossible to write good and maintainable object-oriented code…”

And pity the poor developers. “Precious time and brainpower are being spent thinking about ‘abstractions’ and ‘design patterns’ instead of solving real-world problems, ” he wrote.

Suzdalnitski sees another major issue: concurrency. “OOP started it the era when our CPUs had one single core, and programmers hadn’t had to worry much about things like concurrency…” he tells me in his email. “One of the primary reasons for the rise in popularity of functional programming (as well as languages like Go and Rust) is their ability to effectively tackle concurrency.”

In fact, his essay ends by toutingfunctional programming as the superior alternative — a competing paradigm in which problems are modeled not with objects but with pure mathematical functions and an emphasis on avoiding changes in state. Suzdalnitski sang its praises three weeks later with a satirical essay that appeared to dabble in reverse psychology. (“Functional Programming? Don’t Even Bother, It’s a Silly Toy.”)

It argues, for example, that functional programming “makes refactoring and unit testing unnecessarily easy,” and that it’s a misguided programming paradigm “based on mathematics (which obviously is inferior and has no applications in the real world apart from academia).”

Getting a Reaction

After Suzdalnitski dared to challenge this long-standing programming paradigm, it’s been interesting to read the heated reactions from other developers. Suzdalnitski’s first essay attracted 174 responses on Medium, including onefrom Texas-based software engineer Jesse Dickey, who argues that the name itself is a misnomer. “You are not really programming in objects, you are programming in classes. So you could almost want to call it class-oriented programming…” (He adds later that classes are more properly thought of as “custom types.”)

And a link to Suzdalnitski’s first essay also turned upin 10 different forums on Reddit, sharply dividing other real-world developers over which paradigm was ultimately superior — functional or object-oriented programming:

“I use oop languages, but write all my code (mostly typescript) in a more fp way. Its ridiculously simpler. Functions (pure as possible) and data live separately.Refactoring a messy oop codebase is such a nightmare, compared to a more pipelineish fp solution…”

“I looked at ‘pure functional programming’, but this was a disaster to work with.It is like working with a spreadsheet, without a spreadsheet…”

And soon commenters were debating whether to blame the paradigm or the programmers.

“Software has to be built by average [programmers], not elite programmers. If your grand paradigm or stack requires elite programmers, it will likely fail over time, aselite programmers are harder to keep around…”

OOP as a paradigm incentivizes code obfuscation (which is for some reason confused with abstraction), while [functional programming] tends to make things as explicit as possible…”

Eventually and inevitably, this controversy spread to another essay online, arguing back with an equally provocative title: “Developers who hate on OOP don’t know how to use it.” It was written byGary Willoughby, a UK-based software engineer whose profile says he indulges “in the craft of software development as a creative endeavor.”

Passing Messages

In the middle of this back-and-forth, I wondered how Suzdalnitski felt about all the reactions his essays were getting. So I decided to reach out and ask him about his own long journey through the world of computer programming paradigms — and where this passion for functional programming really came from.

“I’ve been programming for most of my life, and the more experience I got under my belt, the more I started realizing that my code was bad, really bad,” Suzdalnitski told me in an email. It had been hard to figure outwhy the code was bad — but it wasn’t for a lack of trying. “I’ve invested a ridiculous amount of time over the years into my OOP education. It’s ironic that the return-on-investment was rather minuscule…”

But even simple features were taking an “unreasonably large amount of time” to implement — and the bigger the codebase, the harder it got. “Things started breaking more, and more often.”

But then in 2014, Suzdalnitski discoveredF#, the multi-paradigm programming language released by Microsoft in 2010. “The language seemed weird, and elegant at the same time… But the idea of functional programming stuck with me.”

‘OOP Is Dangerous’

Over the years he began applying the ideas of functional programming to the C# code he was writing — and then the company where he was working completed their migration to JavaScript. And ever since that day, “I’ve tried really hard to find use cases for OOP and could never find any.”

“In non-OOP languages, like JavaScript, functions can exist separately from objects. It was such a relief to no longer have to invent weird concepts (SomethingManager) just to contain the functions.”

And today this has all convinced him that “OOP is dangerous. Nondeterminism inherent in OOP programs makes the code unreliable.” As the program executes, its flow can take many, many different paths — thanks to all of those different objects, with new objects sometimes even created on-the-fly. “The devastating effects that this seemingly innocent programming paradigm is having on the world economy is hard to comprehend.”

He thinks his strong opinions made some people angry. But a half-million page views later, I had to ask: had he heard anything that made him change his mind, or see things in a different light?

“There was one comment that really made me pause to think,” Suzdalnitski says — the idea that there’s an almost institutional undercurrent that keeps producing a glut of OOP programmers. “It makes sense for the managers to keep using OOP because the cheap OOP developers are easy to hire, and many fresh graduates are familiar with OOP.” But unfortunately, Suzdalnitski believes that they’ll end up paying for it down the line. Or, to put it another way, “OOP is prevalent because cheap OOP developers are readily available, while functional programmers are typically more smart, and more expensive…”

“The final product of course typically takes longer to deliver, is hard to maintain, and is often buggy due to OOP non-determinism.”

So Suzdalnitski began writing his online essays, because “If I can inspire a thousand people to question the benefits of OOP and give functional programming a try, then they will start writing better and more reliable code.” And with 500,000 views, he thinks he’s succeeded, setting the world on a path to happier developers, happier users, and companies saving money…

But he also says he had a more selfish goal.

“To make OOP companies think twice before contacting me for consulting.”

TRENDING STORIES
GroupCreated with Sketch.
David Cassel is a proud resident of the San Francisco Bay Area, where he's been covering technology news for more than two decades. Over the years his articles have appeared everywhere from CNN, MSNBC, and the Wall Street Journal Interactive...
Read more from David Cassel
SHARE THIS STORY
TRENDING STORIES
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTERReceive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to ourTerms of Use andPrivacy Policy.

[8]ページ先頭

©2009-2025 Movatter.jp