The Lure of Magento

Posted by Paul on April 10, 2015

Magento. The name conjures up the image of a big, successful ecommerce operation, full of features and doing a lot of business - or at least it does for me. But it also evokes the spectre of an incredibly complex, bloated system that causes webservers to creak and groan under its gargantuan weight and eventually to stop responding to user input like an old PC attempting to open a 100 Megabyte spreadsheet.

Now there are plenty of situations where Magento is the right tool to use because it has these advantages:

  • It's the most popular and most widely used ecommerce platform meaning that it has a very big community of users and developers who can help each other on forums it has a very large selection of extensions and themes and you'll find a lot of answers on Google to any given issue.

  • It's backed by a very big company who were bought by eBay, meaning on-going development is relatively assured and it integrates well with eBay, which are both pretty important.

  • Features. It has loads of them! Even relatively complex ecommerce business rules can be configured out of the box - if you know how.

  • Similar to the first point - because it's so popular, there are a large number of people who call themselves "Magento Developers", but of course because web development is an unregulated industry, it's easy for anyone to claim this prestigious job title.

Now before we go on to discuss some of the disadvantages of Magento when compared to other open source shopping carts, we need to touch on the topic of complexity. Unsurprisingly, complexity is a complex subject but essentially, for developers, and business owners, it's usually the enemy, and an incredibly formidable one at that. Often a doubling in complexity, as defined by a doubling in the number of moving parts in a system, will make it exponentially (i.e. number of parts squared) more difficult to work with and prone to failure.

This principle was recognised as long ago as 1960 by the U.S. Navy who coined the acronym KISS standing for "Keep It Simple, Stupid". It simply means that "most systems work best if they are kept simple rather than made complicated; therefore simplicity should be a key goal in design and unnecessary complexity should be avoided".

Here at Antropy we wholeheartedly agree with the principle and try to follow it in absolutely everything we do. Even the name, "Antropy" was intended to mean the opposite of "Entropy" which is a measure of complexity in a system.

And many great thinkers throughout history have also recognized this princple:

"Entia non sunt multiplicanda sine necessitate (one should not multiply entities beyond necessity)
- William of Ockham

"Things should be made as simple as possible, but never simpler."
- Albert Einstein

"Simplicity is the ultimate sophistication"
- Leonardo da Vinci

"Less is more"
- Mies Van Der Rohe

"It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away"
- Antoine de Saint Exupéry

"Simplify, then add lightness"
- Colin Chapman (founder of Lotus Cars)

"Complexity gums up the wheels of business"
- Richard Branson

Now, granted all of the above thinkers recognize that there is a minimum level of complexity that is required, and it would be impossible to have a device such as a modern computer without a relatively high level of complexity, but all have a problem with unnecessary complexity.

Unfortunately, for whatever reason, Magento doesn't seem to follow the KISS design principle. Yes, it does have more features than other shopping carts, and yes the code that's there is generally well-written and follows academic standards. But, the number of files and database tables that make up a working install of Magento seem to me to be totally out of all proportion to extra features it has.

Let's remind ourselves how Magento compares to OpenCart in terms of features (although admittedly there are many many little features that aren't listed here):
www.antropy.co.uk/blog/opencart-vs-magento

And now let's look at the number for files that make up a Magento install:

number-of-files-in-magento.jpg

27,005. Twenty seven thousand and five. Wow, that's a lot of code.

Now let's have a look at how many are in an OpenCart install:

number-of-files-in-opencart.jpg

3,279. Nice. Almost ten times less files to sort through and fix when something goes wrong or when a new development is needed.

Now let's have a look at the number of database tables used in a Magento install:

number-of-database-tables-in-magento.jpg

250 - not massive but to make matters worse, a lot of them use something called EAV (Entity-Attribute-Value). Heard of it? Well I hadn't, and I've worked with some pretty big databases over the last 10 years for some pretty big companies and none have used it.

Essentially it makes examining the database by hand to track down issues pretty tricky, although I'm not disputing it may have its benefits.

Let's see how OpenCart's database compares:

number-of-database-tables-in-opencart.jpg

124 tables - again, less than half. And I happen to know that these tables are very logically and clearly named, and contain exactly the data you'd expect them to contain for the most part. They use a decent level of normalization i.e. they're separated out in to related tables where necessary but don't follow some esoteric and abstract data model and still provide all the functionality that OpenCart needs.

Anyway, the point of this article isn't to criticize Magento, as I said at the beginning it's a totally appropriate solution for some situations, but this complexity does mean that:

  • Developers will have to be much more experienced in this particular platform to get anything done, and therefore they will be a lot more expensive.

  • Even experienced developers will take longer to accomplish any given task and therefore it will always cost more.

  • Because of this, and because it's often very hard to judge a developer's experience, many people and outsourced companies will claim to be "Magento Experts" only a small fraction of them will genuinely be, meaning that if you decide to "buy cheap" you may very well end up "buying twice".

  • Some tasks just will not be practicable. Where OpenCart could be almost completely re-written to achieve a certain project, it wouldn't make any sense to attempt this with Magento.

  • With 10 times more files and 2 times as many database tables, that is a really significant amount of extra code that your webserver will have to process before displaying pages. It's fair to infer that the code in those Magento files is significantly more complex than the code in those OpenCart files, meaning that a webserver will really need to do a lot of work before displaying any given page. Yes of course, caching pages can help but when you have an ecommerce site that needs to show different content to users depending on what they have in the cart, caching can only go so far and adds significant complexity in itself.

    The upshot? Page loads will probably be slow unless you spend a lot on hosting.

Conclusion
Unless you're experienced enough in software development to be able to make your own informed decision, or if your company is so large that they're willing spend significantly on developers and servers, Magento probably isn't for you.

Yes, I know, everyone talks about it as if it's the best thing since sliced bread, the logo is all shiny and it has a reputation for being the most professional solution, but before you choose it, talk to someone who's used it in a similar business to your own and see how they got on. Then, after hearing the same thing we always hear from Magento users, give us a call and we'll build you a nice, simple OpenCart site that does everything you need ;)

blog comments powered by Disqus