Goodbye, Object Oriented Programming. Goodbye, Object Oriented Programming I’ve been programming in Object Oriented languages for decades.
The first OO language I used was C++ and then Smalltalk and finally .NET and Java. I was gung-ho to leverage the benefits of Inheritance, Encapsulation, and Polymorphism. The Wrong Abstraction — Sandi Metz. I originally wrote the following for my Chainline Newsletter, but I continue to get tweets about this idea, so I'm re-publishing the article here on my blog.
This version has been lightly edited. I've been thinking about the consequences of the "wrong abstraction. " My RailsConf 2014 "all the little things" talk included a section where I asserted: duplication is far cheaper than the wrong abstraction And in the summary, I went on to advise: prefer duplication over the wrong abstraction This small section of a much bigger talk invoked a surprisingly strong reaction. Why I wouldn’t use rails for a new company.
We built Scribd into the #3 largest rails site by traffic and it worked for us, but these days I see a lot of new companies using rails and it feels like a mistake.
I started using rails in 2006 right after DHH’s screencast which introduced rails to the world with a bang. We wrote the first version of Scribd in rails 0.7, when they hadn’t yet invented fancy things like migrations. At the time, rails had buzz but was far from a safe choice. Most new sites were still being written in PHP or Java, and there were huge numbers of engineers for those platforms. We were making a bet that rails would continue to gain mindshare, creating a deep set of open-source libraries and, most importantly, a pool of developers interested in working in it.
Simple > complex > complicated. Complicated: involves in too many affairs I once wrote a musical score file parsing routine that goes through all the headers and events at once, all while keeping track the timing information, and generates an image from it.
Ted, among other things, famously coined the phrase "Object-Relational mapping is the Vietnam of our industry" in late 2004. It's a scary analogy, but an apt one. I've seen developers struggle for years with the huge mismatch between relational database models and traditional object models. And all the solutions they come up with seem to make the problem worse. I agree with Ted completely; there is no good solution to the object/relational mapping problem. To Be Future Friendly Is To Be Device Agnostic by Joe McCann. Whoami @joemccann joemccann Github Creator of Dillinger.io Partner at The Node Firm I Blog Here on subPrint.com Open Source Advocate & Contributor Mobile & Platform Architect at Bazaarvoice Client Sends Request → Full Response Comes Back ← MVC Frameworks à la Ruby on Rails Realtime Frameworks via WebSockets.
Inheritance is evil, and must be destroyed. When I built Animator.js, I got some flack for suggesting that inheritance is not a Good Thing.