Was object-oriented programming a failure? – Quora

From the discussions in my Quora digest recently, a brilliantly simple and cheeky question:

 “Was object-oriented programming a failure?”
( free signup required to see the whole thread)

Note the use of the past tense. You gotta love trolling for Java apologists.

To be fair, you gotta love trolling for Python believers too. The difference, of course, is that the Python believers are usually right. 🙂

If you read the Answers, there are some very thoughtful critiques . The best of them seem (my favorite is by Joe Wezorek) to conclude that Object Orientation is a useful way of thinking about certain things – but maybe is a relic of the past, developed as a good response to the specific kinds of software problems that were prevalent in the 1980s, and probably gets used too abstractly and too blindly to be called good practice.

Another good response (by John Colagioia) appreciates the fact that Object Orientation provides some useful scaffolding: “You might not end with a great design, but you can have a passable design if you ‘implement every noun as an object, every verb as a method, every adjective and adverb as a condition.'” I can get behind that.

But the over-abstraction that we see in some languages–and really, this may just be because it’s being poorly understood and taught–is a real stumbling block to having more people become coders, and having our existing coders be expressive with their work.

My own opinion is that the over-abstraction may just be a natural interaction that happens when engineering meets the corporate business world. You end up with people who think a certain way about process and content and how they should work in the world, and before you know it, you’ve got a gospel that turns an otherwise creative, dynamic act (programming) into an exercise in over-architecture and bloat.

But my favorite bits are still the ones where the Java folks get teased.

Leave a Reply

Your email address will not be published. Required fields are marked *