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).

Trainings on this topic