In the free open source world of web development enterprise platforms are built and released into the wild. Magento is one such platform and is very robust. It has a long history of improvements, active development and is well established as the flagship open source e-commerce platform. Markets are built around Magento in the form of 3rd party extensions. An industry is built around the extending, improving and customization of this software.
This begs the question of when you should utilize such offerings, or if you should just simply build your own. The gaps and functionality you’re trying to bridge in Magento may seem unique to your implementation, however most of the time if you’ve thought that it’d be nice to have a feature or improvement someone else has had the same thought and created an extension to satisfy your needs.
When to Use an Extension
The great thing about some of these extensions that are available for download/install is that some are absolutely free. You don’t even need to be a developer to get it installed. If you haven’t played with Magento Connect I’d suggest you do and get familiar with it. Of course the inverse of this is the old adage sometimes holds true, you get what you pay for. In terms of price I’d suggest paying money for features you’re looking for that are more robust and always read the reviews before committing to an extension, even the free ones.
If you’re looking for simple modifications or moving around parts of Magento where functionality already exists to a new spot then free extensions are perfect for this. As an example, if you’re looking to add an extra step in your checkout process to allow your customers to add a discount code (which is already a feature in Magento) then there’s a free extension for that. Another great use case for a free extension is changing how emails get sent from Magento, so instead of using the server’s email capabilities you might want to use something else like SendGrid or Amazon’s SES service.
There are a couple of potential gotchas whenever you add new code to a Magento store and it’s usually an issue if it’s a customer facing modification. Take my example above with the checkout process addition. The functionality will work just fine but if you installed a custom template for your store the developers will most definitely have not taken into account a brand new step that you’ve just added. The styles may very well not look correct, mobile view might be completely broken and will require some development work of the template to work it into the flow.
When to Customize an Extension
The situation where you’d want to customize an extension you’ve installed is when the functionality gets you almost to where you want to be but needs a little more elbow grease to get it to do what you need it to do. It’s always worth your time to find an extension that does something that gets you a percentage to the finish line then override it to get it working how you want it to. Standing on the shoulders of giants is a favorite saying of mine and this is a great example of that.
I feel like there’s a sweet spot though between customizing an extension and outright writing a new extension from scratch. It’s hard to conceptualize percentages, but if the extension you’re using does at least 80% of the functionality you’re trying to achieve then it’s ripe to be customized.
When to Build an Extension
This should be done as a last resort and after you’ve exhausted all your Google searching options. This also includes times where two or more extensions can’t be used in combination to accomplish what you want. The exception is if you’re looking to build the extension to sell in the marketplace yourself, or if you can accomplish the functionality of an extension that already exists in a better way in order to market and sell it.
If you’re a web development shop and you have lots of Magento clients there’s a couple of other reasons you may want to build an extension from scratch. Your clients may very well have unique needs or reporting that they’d like to see in the admin section of Magento. If it is going to be beneficial for their business or the extension will help them accomplish their day-to-day tasks in a more efficient manner then it’s worth it for you to build it for them.
Another reason to build an extension may very well be company based instead of client based. Any Magento developer will tell you there’s administrative tasks or debugging that needs to be done that they’ve discovered they need to do over and over again. As a software engineer develops his internal tools to help him accomplish these tasks it may very well be worth it for your company to carve out some time for you to build internal tools you and your team can use that are installed on each Magento store for you to utilize.
As you can see there’s a number of reasons for or against building your own extension. Experience will help dictate if it’s better to purchase an extension vs building one, but when in doubt (or if timeline is an issue) it’s better to buy an extension that already exists and revisit later to cover a client’s edge cases, whether that’s a simple modification or if it’s a bigger change just a rewrite from scratch.