This article was written by Pedro Madrid, a former PSL Software Architect for 13 years and current Senior Developer at Lixar.
When a new software project is starting, a new team needs to be put together according to the client's needs and the project scope. Ideally, the team should be composed of highly skilled members with adequate knowledge in the technology stack required by the project. Taking into account the availability of developers within the company, the recruiting process in place to onboard new hires and the costs associated with new hires, teams typically end up with a mix of highly experienced engineers and intermediate developers.
What usually occurs is that some experienced engineers from different backgrounds join the team and some other less experienced developers are given the chance to acquire new skills and knowledge as the project unfolds by joining the team and working collaboratively with the senior members. The trick here is to ensure that those less experienced developers improve their skills and become future leaders in this and other projects. So, how can you be sure your new team members turn into future leaders? What follows is a compilation of best practices and techniques that will ensure skill development and project success.
Create a specific on-boarding plan
The best way to be able to demonstrate how the company works is to have new employees work on a real project right away. But working on a real project is risky, so consider setting up a makeshift project in which team members can become familiar with company methodologies and a normal working environment. This particular training emphasizes methodology, which is important across all projects no matter the technology skills required. Additionally, by working on this engineered project, new hires develop a realtime understanding of user stories and become familiar with general agile and scrum methodologies, which are the backbone of our company. New employees develop their own user story that gets peer reviewed, tested, deployed and demoed to product owners all within a safely constructed environment.
During this time your new employees are also participating on projects happening in real time. This combination of training and work helps employees build skills while contributing to ongoing projects. It's incredibly important that new developers learn to produce code that adds value in the minimum required time. They will develop this skill much more quickly if they also feel the pressure from active client projects. We believe It's worth investing the time and energy into creating an environment in which your new developers can practice their skills without placing partnerships or million dollar contracts on the line, but also participate in a real work environment on a parallel track.
[DON'T MISS: Upcoming DevOps Technology Trends]
Training on demand
As the initial requirements of the project become clear and the technology stack is identified and detailed, you'll need to match existing team skills with the capabilities that the project needs. In order to start the first sprint and/or iteration with a team that can handle and exceed the client's expectations, team members need to be trained according to those specific needs. What we usually do is contact our in-house experts that already know the technology well. One of our strengths is being able to quickly identify those individuals and connect them to the right teams and projects.
[A helpful tip: It is a good idea to keep track of people's skill in your company, and not just professional skills. You never know when you might need a photographer to take photos for a last minute project. It's incredibly beneficial to understand the expertise of your employees in order to connect them to the right projects and training programs.]
When there are a few in-house experts available to train others, a small training plan is developed and these experts lead the training sessions that we have arranged for the new team. These training sessions utilize different hands-on teaching techniques, such as workshops and coding dojos. If the technical knowledge cannot be found inside the company, outsider experts are hired to provide the training.
When certain team members demonstrate the particular skills and experience required for the project, one of the most powerful techniques to spread the knowledge across the team is to do peer reviews. This technique allows less experienced developers to get feedback on their work and the reviewers to strengthen their coaching skills. A good practice to accompany the peer reviews is to do a periodic development meeting. At this meeting the reviewers present to the team the most common mistakes and the key concepts that they think are important to share with the team.
Peer reviews take things one step further by cementing relationships among the group, allowing them to develop an atmosphere of openness, honesty and challenge. All of these components are essential to the success of the company. Without challenge, team members won't feel the immediate need to innovate and continue developing new skills. Without honesty and openness, new team members aren't aware of their areas for improvement.
[RELATED CONTENT: Good Retrospectives = Constant Team Improvement]
This technique is basically peer reviews taken to the extreme. With pair programming, teammates work together on the same task at the same workstation. One of them typically has more knowledge than the other about the technologies and/or the business project being used in the project. The less experienced developer gets up to speed more quickly than doing it by him/herself through trial and error. We find this technique very helpful when we need to onboard people to an existing team very quickly, or when we need to acquire technical knowledge from the client. We set up pair programming sessions that allow a full immersion in the development methodology, the technology stack and the business model, according to the team's needs.
Encourage knowledge sharing
So you think you know Docker? or TDD? or even basic stuff like OOP? Think twice! When you want to share what you know with others and start structuring all the information in your head to prepare your presentation, you realize maybe there are a few things you need to clarify first. There are a variety of fun and engaging ways to share knowledge, try giving a talk in your local community or a scheduling a tech meeting, like a lunch & learn, open space, etc. These activities force you to clarify your knowledge on the topic in order to effectively communicate to others the main components, it also helps you go further in depth. Encouraging your teammates to give short talks about a topic is an exciting challenge for many.
For a team to acquire new skills it takes a combination of providing them with the appropriate tools and techniques, and encouraging their personal will to improve as software developers. You need to provide an adequate and stimulating environment that can be leveraged by all types of developers with any kind of backgrounds. What else has worked for you?
About PSL: PSL specializes in outsourcing and nearshoring Agile software development, software maintenance, quality assurance and staff augmentation. With offices in Colombia, Mexico and the US, PSL has customers all over Latin and North America, ranging from tech startups to Fortune 500 companies.