At this point, you’ve most likely heard of the employee training dilemma. If not, it goes like this:
Manager A: What if we train them and they leave?
Manager B: What if we don’t, and they stay?!
In other words, should we train our employees knowing they could leave the company after we invested in them? Or should we train them because we want them to (and they could) stay in the company and bring much more value from that investment?
Investing in employee training is critical to building a successful business, as it helps to ensure that employees have the skills and knowledge they need to perform their roles effectively.
At Rootstrap, we take this seriously, with one of our yearly goals being to provide meaningful experiences and career growth opportunities for our team members. Furthermore, the company's vision is to become digital masters, and investing in our team is key to achieving this goal.
In this article, we'll take a closer look at the training plan we've developed for our iOS team at Rootstrap and how it aligns with our company vision.
Rootstrap iOS Training Plan
Our goal was to have a training plan to put people on the right track to becoming senior iOS developers. Of course, completing a list of classes and reading a bunch of books doesn’t automatically make you senior, but the purpose is to set the foundations and define a clear path that a developer should follow in no particular order.
In a coordinated effort with other managers and experienced technical roles, the process began by determining the main learning modules representing the branches of a hypothetical tree. Also, we wanted to be aligned with the expected outcomes for each one of these key topics. Let's call them ‘the fruits.’
As an example, we defined the Programming module as the core of the Learning Path and set the expected outcomes as follows:
- Developer knows what Object Oriented Programming is all about and good practices to make the code easier to understand and maintain.
- Developer has intermediate/advanced knowledge of the language and frameworks they use regularly.
- Developer knows how to properly write documentation for an API and use automatic tools that use code annotations.
- Developer knows what Code Smells are and remembers many of their names. While doing code reviews, they can identify them easily and make good suggestions.
- Developer knows the main classifications for Refactorings and remembers many concrete refactorings. They refactor their code frequently, and while doing code reviews, they make good suggestions.
Of course, each of these outcomes would have one or more actionable items that would make them achievable while going through the path. Here is the complete list of modules with a glance at their contents:
- Swift & iOS development frameworks (UIKit, SwiftUI, Combine, etc.) proficiency.
- The fundamentals of API Programming and documentation.
- Good practices and common techniques for debugging.
- Understand concepts around testing.
- When and why to write different types of tests.
- Write meaningful and valuable tests for your iOS applications.
- Understand basic to advanced concepts around accessibility and its importance.
- How to test accessibility in your applications.
- Create accessible applications.
Monitoring and Performance:
- Understand concepts around monitoring and debugging mobile applications.
- How to monitor applications using Xcode and third-party tools.
- Techniques and how to debug applications with Xcode.
Apple App Distribution:
- Understand concepts around certificates, App IDs, and provisioning profiles.
- Use the different dependency managers for Swift frameworks.
- Release apps for Beta Testing via TestFlight.
- Create reusable Swift Frameworks.
- Release apps to the AppStore.
Continuous Integration & Delivery:
- Set up CI/CD workflows in GitHub Actions and Bitrise for your applications.
- Submit applications to AppStore Connect via your CI/CD platforms.
- Understand concepts around Fastlane tooling.
We also added supplementary modules for Git, Estimations, and Client Facing.
Now, the developers need to be able to grow each branch, so they can finally get to the fruits, and we provided a list of tasks so they can do so. They just need to invest time in the proposed assignments for each module.
One of the requisites was having different materials for each topic. All of us learn differently; some prefer audiovisual content, while others prefer to read, for example.
With that said, we aimed to have all the most common types (articles, books, and courses) for each topic so they could pick based on their interests without missing any critical pieces.
The process of picking the best-value content was hard and time-consuming. There is a lot of documentation online for any topic you would imagine. We had to assess each one of the materials we added to the Learning Path for three important aspects:
- Match our knowledge expectations i.e. great content.
- Be up-to-date and recent.
- Conform to our average time-value expectation.
Finally, each module needed a section to put all that knowledge into practice, so we added exercises. This one was also tricky, and it took a lot of work to find practical exercises to match the needs of every single module.
We ended up going with a hybrid approach, using external sources and in-house practice tools. For example, a custom Xcode project was designed to evaluate the Monitoring and Performance module, while some open-source Katas were good enough for some aspects of the Programming module.
Centralizing The Training Plan
It was time to publish all the work and make it available for the team, and this is where Northpass came in. Northpass is a great tool used in Rootstrap University to manage the team's training. Learn more about Rootstrap's Learning Camps.
As touched on, the training plan can be completed in no particular order, and this is one of many capabilities of the Learning Paths with this tool.
We defined the modules as independent courses in Northpass that could even be accessed outside of the path itself, while in conjunction, they give shape to our Advanced iOS Engineer Learning Path.
What Happens Next?
We released the training plan, including a section to receive feedback from developers who enrolled quickly. We have already collected some positive feedback, but it is still early to make decisions based on that. The goal is to allow people to rate the quality and quantity of the content in each module they complete.
You might wonder how we are using the training plan or how people in the team know what they need to complete. It is the responsibility of both leaders and individuals to identify which skills or learning areas to prioritize. Leaders will work closely with each developer to help them achieve their career goals.
Some areas can be used to detect goal-setting opportunities:
- Code review
- Devs interests
- Company interests
- Specific needs from sales leads or clients.
On the other hand, the team members can enroll in the Learning Path or any independent courses via our Learning Hub based on their individual goals.
Managers and higher-level technical roles will push the evolution of the training plan by encouraging others to take ownership of the talent growth in the company and make it an organization-wide effort at the end of the day.
We now have a long way ahead, and this is a continuous work that will need to be adapted and improved to respond to various factors. The team and company need change, and the documentation gets outdated, new technologies emerge, and so on. More to come on this.
We've developed a comprehensive training plan for our iOS team to help members develop the skills and knowledge needed to become senior developers. By providing a clear path for growth and development, along with actionable tasks and activities, our team members will be well-equipped to achieve their goals and make meaningful contributions to our company's vision of becoming digital masters.
Overall, the training plan is a great way to retain talent, improve the team's skills and achieve better outcomes for the company. Feel free to leave any thoughts and questions in the comments section. We are happy to provide more information and take recommendations on board to help us improve.