I thought it was obvious that Magento 2 written in a modern like OOP style and uses Java-like approaches is unmaintainable and simply a mess. Magento 2 abuses all possible OOP principles and makes software complex and unmaintainable. Merchants have chosen Magento 2 to solve a few of your basic eCommerce problems. Now they are having 100,500 complex software problems.
“Magento 2 is supposed to make us feel like we’ve built a store on a solid, modern foundation, but from the very beginning it has left us feeling like we’ve built our store on a house of cards.
I feel like Magento 2 is so complex now that a point release can have as many regressions as a major upgrade on other platforms. Any single change can have a butterfly effect that ends up breaking something else in a totally unexpected way. That is the nature of this platform.”
Feedback from the community.
So I Googled a bit, and this is what I found (in chronological order).
The list of quotes of the greatest SE:
Pamela Zave is an American computer scientist now working at Princeton University. She is known for her work on requirements engineering,
Edsger W. Dijkstra (1989)
Born in Rotterdam, Netherlands, Edsger Dijkstra studied theoretical physics at Leiden University, but he quickly realized he was more interested in computer science. Originally employed by the Mathematisch Centrum in Amsterdam, he held a professorship at the Eindhoven University of Technology in the Netherlands, worked as a research fellow for Burroughs Corporation in the early 1970s, and later held the Schlumberger Centennial Chair in Computer Sciences at The University of Texas at Austin, in the United States. He retired in 2000.
“TUG LINES,” Issue 32, August 1989
“Object oriented programs are offered as alternatives to correct ones” and “Object-oriented programming is an exceptionally bad idea which could only have originated in California.”
Alan Kay (1997)
Alan Curtis Kay is an American computer scientist. He has been elected a Fellow of the American Academy of Arts and Sciences, the National Academy of Engineering, and the Royal Society of Arts. He is best known for his pioneering work on object-oriented programming and windowing graphical user interface design.
The Computer Revolution hasn’t happened yet
“I invented the term object-oriented, and I can tell you I did not have C++ in mind.” and “Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to happen to computing since MS-DOS.” (proof)
So following Java principles in Magento 2 will make disasters.
Paul Graham (2003)
Paul Graham is the author of On Lisp (1993), ANSI Common Lisp (1995), and Hackers & Painters (2004). In 1995, he and Robert Morris started Viaweb, the first SaaS company, which in 1998 became Yahoo Store. In 2002 he discovered a simple spam filtering algorithm that inspired the current generation of filters. He has an AB from Cornell and a PhD in Computer Science from Harvard.
The Hundred-Year Language
“Object-oriented programming offers a sustainable way to write spaghetti code.”
So true and for Magneto 2. It is 100% spaghetti code
Richard Mansfield is a best-selling author and widely recognized expert on computer programming. He holds a master’s degree in English from the University of California, Santa Barbara. He has written numerous articles and columns on computer topics, and was the editor of Compute! Magazine. In addition, he has authored or co-authored 44 books, including the best sellers Machine Language for Beginners (Compute!) and The Visual Guide to Visual Basic (Ventana).
Has OOP Failed?
“With OOP-inflected programming languages, computer software becomes more verbose, less readable, less descriptive, and harder to modify and maintain.”
OOP overwhelmed Magento 2 is just terrible to maintain.
Eric S Raymond
Eric S Raymond, one of the founders of the Open Source Initiative and its president for the first six years, has been banned from two OSI mailing lists following messages whose tone violated the code of conduct.
The Art of UNIX Programming (2005)
“The OO design concept initially proved valuable in the design of graphics systems, graphical user interfaces, and certain kinds of simulation. To the surprise and gradual disillusionment of many, it has proven difficult to demonstrate significant benefits of OO outside those areas.”
OOP was designed to build OS graphic interfaces. When I worked as a C++ developer and build a form-based app for windows OOP worked well for me but for Magento and eCommerce the only thing you need is data from the database…
Jeff Atwood is an American software developer, author, blogger, and entrepreneur. He writes the computer programming blog Coding Horror. He co-founded the computer programming question-and-answer website Stack Overflow and co-founded Stack Exchange, which extends Stack Overflow’s question-and-answer model to subjects other than programming.
Your Code: OOP or POO?
“OO seems to bring at least as many problems to the table as it solves.”
Magento 2 brings more problems to your eCommerce project than solves!
Linus Torvalds, (born December 28, 1969, Helsinki, Finland), Finnish computer scientist who was the principal force behind the development of the Linux operating system.
“C++ is a horrible language. … C++ leads to really, really bad design choices. … In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C. And limiting your project to C means that people don’t screw that up, and also means that you get a lot of programmers that do actually understand low-level issues and don’t screw things up with any idiotic “object model” crap.”
It is so true for Magento Adobe Commerce as well. To build a good efficient code for Magento 2 you should use native PHP classes and functions vs Magento obfuscated abstraction under simple things.
I will have an additional post about Magento 2 Anti module and will show why this approach is much better than native Magento Modules and best practices! Even WordPress has better architecture because it is close to PHP core with minimal abstraction. That’s why WP is so popular and reliable.
Oscar Marius Nierstrasz (born October 15, 1957) is a Professor at the Computer Science Institute (IAM) at the University of Berne, and a specialist in software engineering and programming languages.
Nierstrasz co-authored several books such as Object-Oriented Reengineering Patterns and Pharo by Example. He was editor of the Journal of Object Technology from 2010 to 2013, succeeding the founding editor, Richard Wiener. Ten Things I Hate About Object-Oriented Programming
“OOP is about taming complexity through modeling, but we have not mastered this yet, possibly because we have difficulty distinguishing real and accidental complexity.”
Rich Hickey is a computer programmer and speaker, known as the creator of the Clojure programming language. Clojure is a Lisp dialect built on top of the Java Virtual Machine. He also created or designed ClojureScript and the Extensible Data Notation (EDN) data format.
Before Clojure, he developed dotLisp, a similar project based on the .NET Framework. Hickey is an independent software developer and a consultant with over 20 years of experience in many facets of software development. He has worked on scheduling systems, broadcast automation, audio analysis and fingerprinting, database design, yield management, exit poll systems, and machine listening.
SE Radio, Episode 158
“I think that large objected-oriented programs struggle with increasing complexity as you build this large object graph of mutable objects. You know, trying to understand and keep in your mind what will happen when you call a method and what will the side effects be.”
This is the biggest issue of Magento 2. Nobody knows how it works even. Even if somebody will tell you he knows he doesn’t. OOP Magento 2 dinosaurs is so obfuscated by OOP and caches that you can’t “keep everything in your mind what will happen when you call a method and what will the side effects be.” And Certification will not help not for you not for merchants. Certification is just a marketing way to show that Magento 2 something like a mature technology. Plus it is additional income for the company.
Eric Paul Allman (born September 2, 1955) is an American computer programmer who developed sendmail and its precursor delivermail in the late 1970s and early 1980s at UC Berkeley. In 1998, Allman and Greg Olson co-founded the company Sendmail, Inc.
Programming Isn’t Fun Any More
“I used to be enamored of object-oriented programming. I’m now finding myself leaning toward believing that it is a plot designed to destroy joy. The methodology looks clean and elegant at first, but when you actually get into real programs they rapidly turn into horrid messes.”
No comments. Magento 2 and Adobe Commerce architecture is good on paper and at PowerPoint presentations however, when it comes to a real Enterprise application it is a “horrid mess”!
Joe Armstrong is best known as the creator of the programming language Erlang and the Open Telecom Platform (OTP), a framework for building Erlang applications.
In the modern language landscape, Erlang is a bit of an odd duck. It is both older and younger than many popular languages: Armstrong started work on it in 1986 — a year before Perl appeared — but it was available only as a commercial product and used primarily within Ericsson until it was released as open source in 1998, three years after Java and Ruby appeared. Its roots are in the logic programming language Prolog rather than some member of the Algol family. And it was designed for a fairly specific kind of software: highly available, highly reliable systems like telephone switches.
Why OO Sucks
“Objects bind functions and data structures together in indivisible units. I think this is a fundamental error since functions and data structures belong in totally different worlds.”
Rob Pike is a Distinguished Engineer at Google, Inc. He works on distributed systems, data mining, programming languages, and software development tools. Most recently he has been a co-designer and developer of the Go programming language. Before Google, Rob was a member of the Computing Sciences Research Center at Bell Labs, the lab that developed Unix. While there, he worked on computer graphics, user interfaces, languages, concurrent programming, and distributed systems. He was an architect of the Plan 9 and Inferno operating systems and is the co-author with Brian Kernighan of The Unix Programming Environment and The Practice of Programming. Other details of his life appear online but vary in veracity.
“Object-oriented programming, whose essence is nothing more than programming using data with associated behaviors, is a powerful idea. It truly is. But it’s not always the best idea. … Sometimes data is just data and functions are just functions.”
eCommerce app at first is data at the second it is functionality around it. To wrap your data into obfuscated complexity as Magento 2 doing is not the best idea.
All evidence points to OOP being bullshit
“What OOP introduces are abstractions that attempt to improve code sharing and security. In many ways, it is still essentially procedural code.”
Especially it is true for the Magento custom extensions. Many trusts in the Magento infrastructure but in reality, it is procedural code. Magento 2 itself has a little bit of idea behind the architecture. Extensions is just horrible written code that partially resolves some issues for 100–200$ and produces more expensive (10000$) issues to fix that. The main idea behind extensions and Magento it is to get 100$ cheap theme change the logo, add 100 different paid or free extensions $2K-5K, and sell it to a merchant for 100K+. When it comes to are bug fixes, real customization, and performance from the agency it is easy to quit the project than fix or charge an unlimited amount of money on an hourly basis to try to fix the issues.
I’ve been active creating software startups since 1999, and I’ve seen certain self-destructive patterns play out again and again. Emotions matter. We might hope that those in leadership positions possess strength and resilience, but vanity and fragile egos have sabotaged many of the businesses that I’ve worked with. Defeat is always a possibility, and not everyone finds healthy ways to deal with the stress.
Object Oriented Programming is an expensive disaster which must end
“We now know that OOP is an experiment that failed. It is time to move on. It is time that we, as a community, admit that this idea has failed us, and we must give up on it.”
Magento 2 is an expansive disaster it is so true.
Asaf Shelly has been an Intel® Black Belt Software Developer since 2010 and is also an Intel® Software Innovator. With an entrepreneurial spirit, he is a community leader in Israel driving Internet of Things (IoT) development. Asaf is working on creating Artificial Intelligence-powered IoT devices that connect to the cloud. Learn more about Asaf below.
Flaws of Object Oriented Modeling
“Reading an object oriented code you can’t see the big picture and it is often impossible to review all the small functions that call the one function that you modified.”
Fully agreed. Magento 2 code is so OOP obfuscated that it is even impossible to review.
If you have something to add to this list, please post a comment below.