During the past 5 years I have been working on eCommerce and always with Magento. Magento “1”. Magento 1 has become the natural option to recommend to anyone who wants to implement a secure, complete, extensible ecommerce site. I have learned a lot while developing on Magento, but also when discussing functional specifications with our clients, finding out what can be done and what is not a good idea to do.
When it comes to developing, Magento 1 takes part of the old school CMS. Why? Because Magento 1 is not really ‘modular’ (nothing compared to ruby gems, for example), when we create a Magento 1 module, files related to js, css, skin and other, usually are placed around the Magento code tree, but not specifically in our module directory.
When it comes to a Magento 1 site day-by-day maintenance, we find that there are many problems that are not even related to our own custom developments, but to the Magento core itself and, in particular, the database (indexes, checkout, catalogue).
For me, Magento 1 has become something sometimes I love, sometimes I hate. I love how structured has to be the code when developing, I love how we extend its functionality, but I hate how it has become a nightmare when there was a lock in the sales_flat_order_* tables, putting my clients and myself in a very stressing situation very hard to handle and solve.
Magento 2 is different. We can’t say it adds many new ‘admin user’ features (well, it changes the way the backoffice looks), but it comes with many important structural changes:
- Modules are now ‘true modules’, where we can have all the code we develop for a module in one single folder of the project tree
- Supports composer by default. This means that developing, upgrading, delivering is now more reliable and we can have a full and clear view of our code (and we don’t even need Magento core code in our repositories)
- It has made important changes in the database structure. A highlight is the fact that we can use a different database to handle tables related to orders
- Includes full page caching by default (this is a very important feature, but it might be necessary compare it to using Varnish)
- Supports PHPUnit testing. Essential to anyone that wants to develop properly.
- The backoffice functionalities have been extended: now we can manage the columns displayed on products, orders and other grids; now we can schedule skin changes (not bad!)
Well, there is much more to mention about the new features of Magento 2, but I just wanted to share one main thought:
Magento 2 has moving to a new way of development. As developers, we can now work with composer, create our own modules and test them in the way people develops nowadays. With Magento 1 this was not possible. This change is good for developers, for quality, for stability. It’s good for all of us.