
Yireo Training Topics
Pick your topic and pick our brain
System Design
Architectural design, deployment, performance, git strategies
Magento 2 System Design
The architecture of Magento 2 is focused on flexibility. When putting a shop together, concepts like scope levels, catalog design and deployment need to be taken into account. Getting to know the underlying database, filesystem and hosting environment is crucial.
In a single day, this topic could help both technical merchants and developers to get a deeper understanding of Magento. This also includes topics like composer usage, theme customization, deployment modes (and why the Default Mode sucks), performance tuning and git strategies.
Trainings on this topic
Deployment Strategies
Zero downtime deployment, Marketplace credentials, rollbacks
Magento 2 Composer & Deployment Strategies
Magento should always be installed using composer. However, there is much more to this than just a few commands. Different composer repositories could be setup using Satis or Private Packagist. There needs to be a security policy with regards to Magento Marketplace credentials.
And most importantly, it is not needed to go down for half an hour with every push to production: There are zero-downtime strategies, quick deployments and rollback-procedures. In half a day, proper deployment is explained that will benefit your deployment procedure.
Trainings on this topic
Versioning Policies
Proper semantic versioning, @api, reducing bugs, backwards compatibility
Magento 2 Versioning Standards
Another part of the day could focus on proper development, with respect to versioning. Semantic versioning of both your own modules and the Magento core leads to discussions on what kind of dependencies could lead to what kind of bugs.
This includes a review of the Magento Backwards Compatibility Standards, the meaning of @api and the future plans of Magento (CQRS, GraphQL, database refactoring). And all of this is most important when writing stable code that minimizes the risk for bugs.
Trainings on this topic
Frontend Development
XML layout, Blocks with Dependency Injection, PHTML, Grunt, LESS
Magento 2 Frontend Rendering: XML layout & Blocks
Once Magento is setup, it can be customized, starting with the theme. In a day, the concepts of theme development are explained. This starts with the concept of theme overrides, but quickly dives into XML layout, which leads to Block classes, ViewModel classes and PHTML template. The major focus of this day is the understanding of XML layout and to get a better understanding of Block classes (including Dependency Injection, even though it feels more like backend development).
During this day, there also is some guidance on how to use Grunt to compile LESS code, including a discussion on the usage of Snowdogs Gulp / SASS combination and an explanation on why LESS compilation is so slow. Still, the main focus is XML layout. And with that topic, this training day gives frontend developers a quick start with modifying Magento shops.
Trainings on this topic
JavaScript & UiComponents
JavaScript patterns, RequireJS, KnockoutJS, UiComponents
Magento 2 JavaScript: RequireJS, KnockoutJS
In the frontend, there is more than just the HTML output (through XML layout, Blocks and PHTML). JavaScript also plays an important role, regardless of how outdated the used libraries may seem: RequireJS is used to load dependencies. Additional Magento logic automatically loads, configures and executes JS components. And the more Knockout logic is added to it, the more advanced the topic becomes, with the mini-cart and the checkout being good examples of full-blown UiComponents.
In a day, basics like Invocation Patterns and the module pattern are discussed, so that concepts like scope bindings and KO ViewModels make more sense. The end goal is to get a solid understanding of the JavaScript layer of Magento 2 with two scenarios to make it practical: Adding a step in the checkout and making modules Full Page Cache compatible using the customer-data component.
To most developers (frontend and backend), this training (even though it is part of the frontend development course) feels like the hardest part of Magento. It is referred to as “the Knockout”.
Trainings on this topic
Dependency Injection
Preferences, Types, Virtual Types, Factories, Proxies, Interceptors
Magento 2 Dependency Injection
When dealing with Blocks and ViewModels, the PHP constructor can be used for Dependency Injection (DI). The concept of DI is explained in 5 minutes. But the explanation of how DI is working in Magento often takes half a day: Preferences, Types, Virtual Types, Proxies, Factories and Plugins – they are all part of a more complex DI container (the Object Manager) that makes PHP development in Magento really flexible. This training part is mandatory when diving deeper into Magento backend development.
Trainings on this topic
Module Structure
Blocks, Models, Controllers, Observers, Repositories, cronjobs
Magento 2 Module Development
Once Dependency Injection is properly understood, you can start playing with it. Building a module is peanuts, it only requires two or three files. Knowing how to extend upon Magento is a different thing. In a day, a class is taught in how to add functionality to a module: Blocks, ViewModels, Models, ResourceModels, Controller Actions, routers, Observers, Repositories, SearchCriteria, cronjobs, CLI commands and more.
An attendee will see that there are some dependencies that are used more frequently (what we call “DI recipes”), while other dependencies are frowned upon (with a reference to the Magento Backwards Compatibility Standard). The more you play with it, the more sense DI will make.
Trainings on this topic
Expert Topics
Extension Attributes, GraphQL, UiComponents grids and forms
Magento 2 Advanced Module Development
Some topics are not directly needed when starting with module development. However, the more specific the task, the higher you chance you need to dive into this: Setting up custom EAV entities and adding attributes, Extension Attributes (versus EAV attributes), layout processors.
Upcoming technologies like GraphQL API endpoints, CQRS architecture and declarative schemas are also discussed, and where possible, put into practice.
Additionally, usage of the backend UiComponents (to create and/or modify grids and forms) is dealt with – including finding your way in this complex XML layer, setting up DataProviders and adding custom buttons and filters.
Trainings on this topic
Automated Testing
Unit Testing, Integration Testing, performance testing, Selenium
Magento 2 Testing
Testing seems a buzz word. However, it increases code stability and decreases the chance for bugs. Yireo is able to help developers embrace Unit Testing and Integration Testing with Magento 2 extensions. This includes usage of PHPUnit, Mockery, Travis, PHP CodeSniffer, JavaScript testing and much more.
Additionally, guidance can be given with setting up end-to-end testing (using CodeCeption and Selenium) and CI pipelines (including Blackfire performance testing). Training on MFTF is underway.
Trainings on this topic
PHP Development
Advanced OOP, design patterns, testing, code compliance
PHP Development
While it is easy to get started with PHP, some developers lack a deeper understanding of more advanced concepts of PHP: This starts with OOP-concepts like interfaces, abstract classes, traits and closures. But moving up the ladder, it is also important to understand concepts like Dependency Inversion, Factories (with all its variations), Builders, Composites, Decorators, Singletons (and why they are not always evil) and generators and iterators.
Also, it is interesting to learn how to move up your code to new standards like testing (unit testing, integration testing) and new PHP 7 syntax (like type hinting).
Trainings on this topic
JavaScript Development
Scope handling, design patterns, ES6 syntax, Node
JavaScript Development (concepts, ES6, Node)
Many Magento developers consider themselves experienced in PHP, but JavaScript knowledge often lacks: Concepts like global scope, the binding of “this” and design patterns are often misunderstood. Additionally, newer language structures of ECMAScript 6 and NodeJS need explanation as well.
And on top of this, when diving into a new language more deeply, it is good to get to know the proper design patterns, best practices and tools (testing, code checks, deployment) as well. Yireo is diving into PWA and JavaScript and you are welcome to benefit from it.
Trainings on this topic
React & PWA
React components, Redux, GraphQL & Apollo, Magento PWA Studio
PWA Strategy & Development with React
PWA is the new buzz. Magento is developing its own PWA Studio, while other solutions have popped up as well (Deity, FrontCommerce, Vue Storefront). Yireo gives consultancy on a strategical level on how companies should/could deal with this new emerging technology (often 2-3 hours). More practically, Yireo has committed to React (and related technologies) and is able to teach developers in how to deal with React, Redux, GraphQL, Apollo, Magento PWA Studio and Deity (~1 day).