Onboarding new hires in development is always a challenge, as business goes on as usual while having to introduce a newbie to a usually complex system. Aiming to have developers provide business value from the start by passing them lower priority tasks, based on the common “greedy concept”, has rarely led to a perfectly trained developer in the short term. The Spryker concept follows a more strategic approach that has been proven in training developers fast and efficiently.
Learning a new system can be a hassle. People often struggle where to start and what to focus on at the beginning. Similarly, handing over system parts in a rapidly growing software for another team might feel like starting from scratch. Throughout this article I am going to share my experience as developer with the modular Spryker Commerce OS (350+ modules) and what made it easy to quickly learn my way around the system.
Finding your way into a new System
Previously, I never considered if the selection of the training tasks might have a big impact on the developer’s training time. When I tried to learn a new language, framework, or system, I just jumped right in and looked up some tutorials or hands-on examples. By doing so, I had the chance to skip those parts, which did not seem vital and jump to other interesting aspects. However, when you start as a newbie at any company, your path is selected for you. You are assigned a training program and you have to work on exactly that. This actually means that the benefits of a subjective approach are lost. Regardless of which parts you normally analyse in a complex system to get a full conceptual understanding, you will be appointed to a specific part - not realizing how this approach actually might result in training time loss. To ensure that the planned training path is actually not worse than letting the developers learn on their own, some advantage has to be provided during the process.
To highlight that depending on the selection of training tasks the developer gains different advantages and disadvantages, I am going to present the Greedy Concept and how things are done at Spryker.
The Greedy Concept
To make sure that the developer provides business value as soon as possible, the training tasks are selected from the backlog as lower priority improvements or bugs.
Goal of the tasks
The new hire can spend more time with reduced business risk, but their focus is mainly delivering business value and not the training.
In fact, this type of introduction to a new system forces the developer to
- gain a deep understanding of the low-level infrastructure,
- get in contact with all system layers,
- obtain an understanding of the involved business subdomains
And all of this on the back of a small issue, originally estimated at a few hours.
Results of the Greedy Concept
When the assignment is done, developers gain experience on how to solve a non-repeating specific task, while getting introduced to random elements of the system, which they might not need for their training. The time needed by the developer and the mentor developer can be estimated, but will vary depending on the given task.
This approach seems fair from a business perspective. It definitely does not provide any advantage from a training perspective.
At Spryker, training tasks are defined based on prepared solutions that focus on implementing a specific building block or recurring pattern rather than directly delivering business value.
Goal of the tasks
Although the tasks are also implemented within the fully functional system, the boundaries of the tasks are reduced to involve only a few specific elements.
This allows the developer to
- gain experience in how to build certain parts with reduced business logic involved,
- obtain a clear understanding of the usage and purpose of the pattern,
- self-control over the solution and little time required for a mentor or trainer
While the company is able to fully assess and assign resources in a calculable way.
Results of Spryker’s Approach
When the assignment is finished, the developer gains experience in how to build and use certain recurring elements of the system.
Following this approach, I had a chance to understand the system first- before starting to develop. Why did Spryker’s onboarding pay off? The way of learning is very similar to my natural approach, which made everything even smoother. For my first “real” ticket, I had to be introduced to the business objectives only once at the beginning. During the development, I only had few technical questions. Compared to “greedy” onboarding where I would have business and technical questions popping up randomly due the unstructured approach.
Business logic onboarding
Working with a sophisticated software like the Spryker Commerce OS, there are two main levels to consider for training newbies: infrastructure and business logic. Infrastructural level tasks usually focus on the pre-defined architectural conventions and design patterns. However, business concepts usually follow real life expectations and can therefore not necessarily be structured according to specific patterns. However, guidelines and concepts can be provided to formalize implementation patterns for business logic.
As an example, the following standards can improve the granularity of business code
- Packaging principles can help to divide high-level business logic
- SOLID principles can help to implement business logic on lower levels
At Spryker, we additionally define a layered structure to make sure that module dependencies, the public APIs, and conceptually similar codes are located in the same place. As a result of the granulated business logic, current as well as new developers can easily locate the searched business logic part within the system.
Patterns make Great Onboarding
A system defined by design patterns and standards can be broken down into infrastructural and business onboarding. Depending on the chosen training tasks the developers will face the system from different aspects and gain knowledge accordingly. To ensure an efficient onboarding, every business should analyze the advantages and patterns of your system and make sure that training tasks are built accordingly. So, keep in mind that saving time in short-term by simply passing on lower priority tasks to new hires might not be that beneficial on the long run compared to a more efficient and structured onboarding.