2. About Myself
• 10 years in IT
• 2 years in Magento
Development
• Head of Business
Development in Neklo
3. What would I talking
about?
• 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
11. Working with a team of 2
or more people
• Select Team lead
• Split Magento Versions
• Tasks decomposition
• Assign tasks to skilled person
12. Team of one developer
• Start working with minor Magento versions
• Develop extension sequentially:
• Backend
• Admin part
• Frontend
13. How to provide compatibility
with third-party extensions?
14. What should developers
team do?
• Use integration through events
• Do not use Rewrite
• Use frontend integration life
hacks:
• Layout substitution
• JS Injection
15. What should QA team do?
• Test on “working” Magento
• Test compatibility with top
rated extensions
• Do NOT test compatibility with
all of extensions
18. Key points of
testing process
• 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
19. Test Automation
• Tests should be written by QA
Team
• Don’t use complex
frameworks:
• Short-term activity
• Skilled QA
• Negative ROI
20. What to use for test automation?
Use Selenium IDE or SpiderTest:
•Powerful test recorder
•Testers should not have
programming skills
•Developers could use any
programming language
•Lightweight scripts
•Easy to attach scripts to defects
•Free tools
22. Forgot to test readiness
for loading in Magento
Connect
• Build a package
• First load and wait for
approve, then promote
• Test installation file per
file
23. Key success factors
• Perform business analysis
• Using high-quality and thoughtful
tools
• Using narrowly skilled
professionals
• Don’t forgot testing
24. Thank you for attention!
Skype: igor.bondarenko1
E-mail: igor.bondarenko@neklo.com
Hinweis der Redaktion
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'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 1.4.1.1
the second developer takes the latest version (1.9.2.0)
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 1.4.1.1 - and time to time check on the latest version - 1.9.2.0
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.