Tailoring software to customer’s needs
Every business is different and has different needs. Each day we face a business problem that has to be resolved in order to let the company grow. In the Magento ecosystem we are usually able to find a 3rd party extension out there that can easily enhance the software, solving the problem for the business owner.
Even though purchasing an extension is quite cost efficient rather than a custom implementation, we can fall into a trap quite easily.
Pros of 3rd party extension
There are a lot of pros to extending store functionality with a module from a vendor. Usually it doesn't take much time to install it on the platform and it can quickly be used. Often extensions are tested well in a basic environment so, if the platform is not heavily modified, there is a good chance it will start working out of the box. Finally, it’s cost efficient as we usually have to pay for the extension only once. The additional cost is the support for it, to be able to upgrade it to the latest version, keeping it up-to-date with resolved issues found by customers.
Unfortunately there are cons as well
Because extensions need to cover the needs of different businesses, they tend to be too configurable and too flexible. This sounds like a pro but it is not. This leads very easily to creating code that is far from optimized, sometimes slowing down the whole platform, while the business will be using only fractions of the extension. At some point the code of the vendor will be customized and it will lose the ability to be upgraded. Some extensions’ code is simply of bad quality, which should not end up in your repository and should be refunded.
Finally we get to the point where requirements for the feature are too specific to be possible to find a matching extension.
From our experience
That was the case with the Auction system at Babauba. While there are some extensions available for this particular feature, they do not cover requirements of our business case. Auctions might seem like a weird functionality for a regular ecommerce store but they can be a useful tool for some types of companies. In our case, as a company who sells its own product, auctions allow us to clean up leftover products from warehouse shelves which have very low stock and products have most variants sold out. The implementation has tools to easily sell products that are already available in the store catalog in the auction system, locking our regular purchase option - if a product is on auction, it can’t be bought through the regular checkout process. The implementation is tailored to the requirements, with great focus on the optimisation of the feature to avoid performance degradation in any other part of the system.
Needs come first
With that in mind it is recommended to keep the right balance between ready-to-install extensions and code that has to be written from scratch. There are extensions out there that simply should be used and are worth it but sometimes it is better to architect the implementation in-house for it to fit perfectly.