Coming to Magento 2 from a technological point of view can seem like a lot of pain and whys addressed to the creators of this platform. Is it really that bad?
Magento 2 started its journey a long time ago, in a time where there was a vast amount of technologies fighting for developers. At this point M2 creators decided upon using key technologies in the platform in order to get the technological advantage. Little did they know that when finally M2 did come out, almost all of these technologies were made obsolete.
Looking at Magento 2 today one must be baffled by the usage of require.js and knockout.js as key elements in building a robust platform for e-commerce.
Developing around these old concepts (especially in a ti React and Vue.js) is like looking at really old website design. This is one of the reasons Magento 2 is not easy to grasp and develop on for newcomers. Once you get the idea of how Magento engineers envisioned the usage of these though, it is not that bad.
Thanks to these it is easy to override and add new functionality and even enhance it in parts of the site such as checkout which you do not want to mess with it very often, or rather at all.
When I first started to play with Magento 2 after experiencing a couple of years with M1, frankly, I was surprised how much easier it is to create a working module and change layout in XML.
The concept of dependency injection is still not as perfect as in other PHP frameworks such as Symfony. However, the overriding became a breeze with di.xml.
Having the ability to write my code using namespaces and easily structure it within a module is a definite plus in going forward. Thumbs up!
My opinion on this matter is: when there is a will there's a way. Yes, I am not fond of some of the technologies and decisions made during the development process of Magento 2 but since I do want to use the best e-commerce platform out there, I adapt.
What is your take on usage and development of Magento 2?
Tip: Magento 2.4. is coming and we sense a game changer! Find out more.