Magento is open source. That’s the beauty of it.
You can mold magento and shape it to fit your needs.
But just like any open source software, access to the code comes with risk. Even the best eCommerce sites suffer risks from custom Magento apps.
Building a custom Magento app is a highly technical task. When done right, the benefits of custom Magento apps include better performance, unique features that lead to more orders, more customers, and more revenue.
When done incorrectly, performance can suffer, orders can drop, customers may bounce, and revenue will take a nosedive. As a Director or Executive whose priority is results, this should concern you.
In this article, we’ll uncover the main factors to consider when embarking on the journey of customizing your Magento online store with custom apps, and how to do it right.
Who Should Be Reading
This article will help you, the Director or Executive, on the technology and/or marketing team.
But if you’re a Lead Developer, Senior Developer, Mid Developer, Junior Developer, Intern, or just a curious bystander, you too will walk away from this article with a deeper understanding of custom Magento apps and how apps work on the Magento platform.
Either way, keep reading as we share knowledge we’ve gathered from over a decade of custom Magento development.
(Yes, we’ve been working with Magento prior to version 1.0’s release to the general public).
Begin With the End In Mind
Start all custom Magento applications with the end in mind. Clearly define the behavior you want to see, in detail.
Use wireframes to outline the layout, content, actions, and responses. Write detailed requirements specifications that define what the custom Magento app should do and how it should behave.
At EYEMAGINE, we start all custom Magento development with a Discovery Process.
Go into detail. All decisions should be represented by documentation. When a decision is left out of the documentation, the decision will be made by the developer(s).
Know that ambiguity will win. Ambiguity always wins.
Your developer(s) will appreciate the details and you will receive the finished product you were expecting. The detailed specifications will also bring up clarifying questions and healthy discussion.
Know What You’re Getting Into
Magento, being open source, allows developers to add, edit, and delete files in the codebase. When an app from the Magento Connect Marketplace is installed, the files are uploaded to your codebase.
When a developer works on your Magento store, chances are that new files have been uploaded, existing files have been edited, and/or unnecessary files have been deleted. The new custom Magento app must be aware of the existing customization.
Magento is built on the Zend Framework. The Zend Framework is a foundation for PHP applications like Magento.
Developers create modules to add custom behavior. Having a modular software platform allows the easy and seamless enabling or disabling of modules without affecting the core of your codebase. (Learn more about Modular Programming, here).
Your custom Magento app must take into account the modules that already exist, whether they came from the Magento Connect Marketplace or another developer.
The custom Magento app must extend the “object hierarchy” in order to avoid module conflicts.
Without getting into the grueling details of object hierarchy, imagine a family tree where the grandparents are Magento core objects, the parents are existing apps, and your new custom Magento app is one of the children.
Always review the list of existing modules and extensions prior to adding a custom Magento app.
Designing a custom Magento app requires good architecture.
Like a room addition on a home, detailed plans must be created that match the specifications of the home being modified.
Every new class, method, and file must be created with Magento in mind.
Your developer must know when to override a class versus creating an event listener. If you override a class in the checkout path, you are at risk of bottlenecks when your online order volume spikes.
Proper Magento architecture and good website development practices are critical to your online revenue.
Simple website development knowledge will not be enough.
Lack of good Magento architecture may result in failure during checkout, high page load times, too many database connections, and server errors. All of the above will result in loss of revenue.
SEE ALSO: New Developments to Consider Before Building on Magento 2.0
Top 3 Risks to Custom Apps
Knowing the common risks of custom apps are key to avoiding them. We have seen the following three issues when rescuing Magento stores that have come into our care.
1. Performance Bottlenecks
When designing a custom Magento app, inefficient code and/or poor architecture can result in performance bottlenecks.
During development, use a code profiler like Xdebug. The profiler will expose bottlenecks in the code.
Begin coding with your profiler ready to test. Just because the code passes a lint check does not mean it’s ready for production.
Analyze profile reports with your Magento development team if/when performance becomes a problem.
2. Module Conflicts
Module conflicts are common in Magento because modules and their authors are not aware of the modules that will live in your Magento online store.
The Magento Connect Marketplace is presented as an all-you-can-eat buffet of apps that live happily with each other. We all wish this is actually the case.
Like any all-you-can-eat buffet, the exotic items will be reserved for the finer dining experience. The items available are built for the masses, and near-exotic items may look appealing under the heat lamps but disappointing once they pass the lips.
Identify module conflicts early by experimenting in a development environment. Install modules, test site functionality, and run a PHP profiler. View the profiles, check the system.log and exception.log, and run benchmarks against a vanilla instance of Magento.
Does your developer(s) automate module conflict identification?
Module conflicts can result in site failure, performance bottlenecks, and mysterious site behavior. All of which result in loss of revenue.
A custom Magento app’s compatibility with Magento changes as Magento patches are applied. Backward compatibility has been known to be sacrificed in Magento security patches for the benefits of enhanced security, performance, and/or functionality.
When patches are applied, verify that custom Magento apps are maintained. The way custom Magento apps are designed may affect maintainability.
Review regression test outputs with your developer(s).
Tightly coupling custom Magento app classes with core classes and methods will increase the effort required to maintain your custom Magento apps.
Isn’t There an App for That?
Magento Connect Marketplace is positioned as a fully stocked, all-you-can-eat, smorgasbord of customizations that will take your online store from zero to big bucks in no time.
Countless times we’ve heard: “We can’t be the only ones that need this feature!” and “Someone had to have made an app for that!”
But until those custom Magento apps are created, we have to either create those solutions ourselves or work around the solutions available today.
Another Magento online store may have needed the feature/functionality, and it may exist on a production Magento store, however it may not be made available to the marketplace. So until that app is available, it will have to be created for your online store.
When deciding between customizing a Magento online store or using out-of-the-box functionality, consider the hidden risks before breaking ground.
Avoid surprises by asking your developer(s) the right questions.
We have helped dozens of Magento merchants come online with Magento and ramp up their online businesses. Our experience is that iterative optimizations based on data are the most profitable path to success, while reducing risk and boosting stability.
You need to trust your developer and their knowledge of the Magento platform while considering Magento customization.
When custom Magento app development takes into account Magento website development best practices, the outcome can be profitable, exhilarating, and satisfying.
We are happy to help you succeed on this journey. Schedule time to talk to an expert, today.