Greeting Hello everyone, my name is Igor Bondarenko. Stating the problem In my report I will speak upon how to organize the process of Magento extensions development.
About Me A few words about me: 10 years in IT, for the last few years have been involved in Magento development, Head of Business development at Neklo
Introduction to the topic Over the years of my working experience, I have faced the fact that the way development process is organized differs greatly from company to company. At the same time, if we take the development of extensions as a separate subject it may seem to be a short-term activity, which has no particular nuances. In practice, it turns out that the development of an extension is not at all that simple. Today I&apos;ll tell you how we have organized the process of extensions development at our company, and will give some recommendations on how to optimize the development process so that to reduce costs and improve your product quality.
Here I would like to note that we do not make any difference between processes that take place while we develop extensions for sale and those for custom development, so, everything I’ll be talking about works perfectly for both cases.
Listing the key points My report will cover the following aspects of the development process: getting prepared for development: what idea to choose and what to do next role separation within a team tools development of an extension testing All practices are divided into groups, so you can choose those of them that will harmoniously fit into your workflow.
I am often asked what extension to develop. Well, the point is that it is impossible to predict whether an extension will be successful on the market or not. And even if somebody knew he wouldn’t tell you.
And that’s why: give this task to a business analyst, not a developer! business analyst studies current marker situation, analyzes it, defines crucial user problems that need to be solved and prepares technical requirements analyst handles the technical requirements to the development department for an assessment decide whether it pays to develop an extension (выгодно ли) gather a team
If the development of the module turns out to be economically unjustified, then you should refuse the idea of such commercial extension. If it’s custom development, then find an analogue to use instead.
So, what shall you do if there’s no business analyst in your team and you don’t have a possibility to hire one. Apologists of Agile Development: Lisa Crispin and Alistair Cockburn in their works recommend delegating the tasks of a business analyst to the QA department.
If you are using agile development methodologies, such as a whole team approach and self-organized team, then your QA specialists play the role of a mediate between business and the development team, as they are engaged in the negotiation with the customer on the requirements. If that is the approach you use, it makes sense for you to teach your QA the basics of business analysis and entrust him the task.
I recommend you to split your developers between hostings + separate hostings for a support team and QAs. That is very handy as each developers uses his own Magento entities and they don’t impede anyone.
one developer develops for the initial version and the second for the latest one automating process with the help of MageInstall: we easily deploy any Magento version needed there are other useful features MageInstall has: direct links to frontend and admin panel sessions cleanup cache cleunup cron starting direct link to database possibility to view already installed extensions extensions disabling with one click store deletion mass actions for all the above listed sometimes specific store is neeed, with specific data, in this case we use generator. This is an internal extension that is gradually improving and getting filled with new functionality. It allows you to generate orders, customers, products, etc. If you do not have enough time or resources to create such n extension, it makes sense to entrust your QA department with writing automated tests which will fill the store with necessary amount of data. This approach takes more time, but it is cheaper, and these tests can be run at night.
I highly recommend you to use Version Control System (git or hg) Having all the extensions in your repository, you can easily install the extension you need along with the Magento version needed right from MageInstal: you won’t have to do it manually Use a development toolbar, which allows you to quickly view huge amount od useful data: additional information on a request layout handlers events triggered for the current request database requests and the time of their completion etc. use the Log Popup extension that shows new logs from the log file and will immediately signal in case there’s an error that should be fixed. Otherwise, log errors can stay unnoticed which will result in problems further on. enable developer mode! – this will also notify the developer on the code issues issue tracker and properly set up workflow. the detailing should be moderate – micromanagement doesn’t lead to good results
During the development process, we came to a conclusion that the most advantageous is the approach when there are highly specialized experts engaged in development. Thus, Magento developers do the backend and admin panel, frontend developers write frontend, and system administrators deal with servers and configurations. Here i would like to mention the importance of the extensions testing, we do not put it to the shoulders of our end-users, so there’s always a QA specialist in our development team. At first glance it may seem that staff increase is a one-way ticket to the increase in the cost of development, but I’d like to note here that a significant reduction in development time allows, on the contrary, to reduce costs.
So, let’s summarize how the development process is organized in our particular case: For every extension to be developed there is a Lead assigned, who manages the development process, sets tasks and monitors their completion. there are separate developers to deal with the admin panel, frontend and backend if there are more than 3 developers in a team, we split them into smaller groups if there’s such a necessity we involve additional developers and QA specialists in the development At that, I understand that it is not always possible to each time allocate a separate team for the development of an extension, so I will touch upon it a little bit later and, when speaking on the technical details, I will dwell upon practices that are applicable for both teams and a single developer.
When developing within a team of 2 or more people: the first developer is developing on the initial version of Magento - we usually take 18.104.22.168 the second developer takes the latest version (22.214.171.124) if there are other developers involved, then we give them intermediate versions split tasks into a backend (instal scripts, models, collections), underlying implementation, admin panel and frontend.
If there’s one developer: start from the initial version – in our case it’s 126.96.36.199 - and time to time check on the latest version - 188.8.131.52 start with the backend and then proceed to the admin panel and fontend
An important issue is the compatibility of your extensions with the third-party extensions. Analyze how to integrate your extension to Magento with minimal problems in the future on the side of the developers, and, most importantly, of the support team.
integrate through events avoid rewrite Frontend integration: layout substitution js injection at the end of the page, or any other place suitable, draw our block but do it hidden, and after its upload we move it to another place with a js, as the majority of Magento themes contain the same class and id name. Still, if they are different, I recommend you to write your own frontend part so that they will initiate(?»инититься») through the configuration, and then, after you changed the value of a selector or the option in the configuration, everything starts to work without code research and long debugging
Also, we solve issues of a compatibility with popular third-party extensions at the design stage already, so that they work together seamlessly out of the box. To do this, we take the most popular extensions of the leading developers and the QA team checks our extensions compatibility with theirs.
What should you remember: commits review – Leads and Seniors check the code of Junior specialists. Juniors check the code of their Leads and study the advanced methodologies of writing a code. codestyle – the use of a codestyle allows to reduce time on formatting other developer’s code give the extensions to the QA team for testing
we do not put it to the shoulders of our end-users, so there’s always a QA specialist in our development team.
During the first testing: do not lead the development switch to other tasks
After your extension returned from testing: fix the bugs found and pass them for testing work alongside with the developers to make the process faster
+ automated tests: help with the long-playing products a QA specialist can write tests during the development process and in it will reduce your future testing costs selenium ide + bugs
In case with distributing paid extensions Magento Connect usually shows the link to the developer’s website. At that, the free extension needs to be packaged and uploaded on the Magento Connect website.
Do not forget to create product in the system and to install the published version of the extension before you start to promote it.
Note that not all the developers install extensions Magento Connect, so you should unpack it and try to install it file-by-file.
Conclusion To sum up, I would like to list the key points of the development process that will help you to create high-quality extensions. These are the following: Business analysis prior to developing Using high-quality and thoughtful tools The principle of splitting duties between highly specialized professionals Profound testing All of the above named practices may seem expensive to implement, but I’d like to say that all of them can reduce the development time and overall labor costs.
Игорь Бондаренко (Neklo) - Организация процесса разработки модулей для Magento
Process organization of the Magento
• 10 years in IT
• 2 years in Magento
• Head of Business
Development in Neklo
What would I talking
• How to choose an idea
• Selecting a tools
• How to prepare a team
• Development processes
• Advises to developers
• QA and Testing
• How to release an extension
Assign choosing of
ideas to the business
After choosing the idea,
calculate the economic
feasibility of extension
Do NOT delegate
choosing of the idea to
The idea is chosen, it's time to start developing. But
before you start designing, you must define the tools
• Cloud VM Server
• “Custom Store”
• QA Test Scripts
Available for all tools
• Developer Toolbar
• Log Popup
• Turn Developer Mode On
• Setup Issue Tracker
Formation of the team.
Use narrowly skilled
Working with a team of 2
or more people
• Select Team lead
• Split Magento Versions
• Tasks decomposition
• Assign tasks to skilled person
Team of one developer
• Start working with minor Magento versions
• Develop extension sequentially:
• Admin part
How to provide compatibility
with third-party extensions?
What should developers
• Use integration through events
• Do not use Rewrite
• Use frontend integration life
• Layout substitution
• JS Injection
What should QA team do?
• Test on “working” Magento
• Test compatibility with top
• Do NOT test compatibility with
all of extensions
Key points of
• Stop development until the end of
first QA iteration
• Switch project during first
iteration of testing
• Starting from the second iteration
of testing start to work in parallel
with the QA team
• Tests should be written by QA
• Don’t use complex
• Short-term activity
• Skilled QA
• Negative ROI
What to use for test automation?
Use Selenium IDE or SpiderTest:
•Powerful test recorder
•Testers should not have
•Developers could use any
•Easy to attach scripts to defects
Ready for release?
But don’t you forgot nothing?
Forgot to test readiness
for loading in Magento
• Build a package
• First load and wait for
approve, then promote
• Test installation file per
Key success factors
• Perform business analysis
• Using high-quality and thoughtful
• Using narrowly skilled
• Don’t forgot testing
Thank you for attention!