This is the second part of the article: How We Create Add-ons (read the first part here). And today we are talking to our veteran developer Valery Malyshev (he has been with SimtechDev for 7 years) in order to shed even more light on the add-on development process in the company.
Valery, what’s your greatest challenge as a software developer?
Valery: I would say it is having a strong vision of what the future product should be: beginning with, how it will work, including its dependencies of functionalities, to the way how visually appealing it will be for end-users. You get this vision only from well-defined product requirements from the Tech Lead and Product Manager. When you have a clear image of the code architecture, writing it becomes the easy bit.
Another one would be the interaction with other specialists involved in the project. For example, while I am working on the functionality of the Instagram Feed Widget add-on and requests fetching Instagram media, our Front-End Developer is working on the visual appearance of Insta posts on the storefront and here a proper two-way communication of requirements is the key. As you can see, it’s all about successful teamwork, really.
Thank you. To be honest I am quite surprised to learn that the challenges you face are not based on technical difficulties but rather on communication. Can you tell us about the method you use for developing new add-ons to the CS-Cart platform?
Valery: We use hooks as a way of writing extensions. A hook is just a special place in the source code that serves as an entry point for some external code. When we want to make changes to CS-Cart itself we do not want to touch the source code and affect the core functionality. So we create an add-on and hook it to a necessary part of the code.
You have just released a new add-on, Affiliate Light. Why was there a need for developing a separate add-on with functionality similar to the Affiliate and Referral add-on instead of upgrading the latter?
Valery: It was what a lot of our customers requested. We have redesigned our existing affiliate add-on and adapted it to small and mid-size marketplaces based on Multi-Vendor platform. The new add-on has a simplified functionality and contains only the features most necessary for managing your affiliates if your business is not high-volume. Affiliate and Referral and Affiliate Light are going to be mutually exclusive meaning you run either one or the other depending on the needed functionality. With the Affiliate Light, you have the ability to pay commissions to your affiliates only for the orders made by their referrals while with the Affiliate and Referral you can pay commissions also for referrals’ clicks, banner views, and registrations.
Were there any particular complexities you had to work around while building the affiliate add-on?
Valery: The idea was to provide our customers with flexibility in terms of setting up promotion conditions for affiliates. Well, implementing this idea was hard work. I had to come up with several ways for how the admin would configure the promotions setting before one of them was approved. How a promo code would be linked to a promotion, how it would identify the affiliate who issued the promo code, how to restrict the number of times a promo code would be used? – these were some of the questions I had in mind when building the add-on.
What is a new feature you implemented in the Affiliate Light add-on?
Valery: I used a PHP observer pattern and strict-mode and thus now the minimum add-on supported PHP version is 7.0. This is a more stable version and creates less number of bugs.
We have implemented a solution for promo codes: promo codes are not generated in the store but they checked with the template. When a customer is entering a promo code, the add-on identifies the affiliate, the affiliate plan and then the promotion that is available for the affiliate. The template consists of the prefix PROMO_ to which a user ID is attached.
I know it is just the first week after the release but do you already have plans on later improvements?
Valery: They’ll be based on customers’ feedback but so far we are currently thinking about a new functionality for managing affiliate programs.
How can our add-on users upgrade add-ons to the newer versions?
Valery: Last year we introduced an add-on upgrade center. It is accessible in the store admin panel. It is important to upgrade the add-ons via the upgrade center, thus you will avoid the problem of losing any data or incorrect work of the extension. For instance, during the process of improving the add-on we may decide to delete a file which is no longer necessary, the automatic algorithm of the upgrade center “takes that into account” while performing the upgrade. But if you update the add-on archive manually, the old file we have deleted for the new version may stay and affect the correct working of the updated add-on and the store as a whole.
As we wrap up, what advice would you give to store owners who use our add-ons for their business needs?
Valery: There is a number of CS-Cart add-ons developers out there and quite often our customers purchase add-ons from other developers as they might like to try. But that results in conflicts between the work of all the installed add-ons. Why? Remember the hooking method we were talking about earlier? The thing is each developer has their own understanding of how to name hooks and place them while attaching to the CS-Cart source code. Not to mention the difference between the standards of code writing and knowledge of CS-Cart architecture. All the previously mentioned usually result in countless errors and sometimes even to the crash of the store. So I would strongly recommend choosing one add-on developing company and sticking to it. This makes sense even from a financial point of view: you do not need to hire a tech specialist to maintain the smooth work between third-party add-ons installed in the store and resolve the issues on a regular basis.
Thank you, Valery. I hope today our readers received answers to some of the questions they may have had and this information will help them establish smooth processes and make wise decisions to drive their business to success.