Reskilling, Upskilling, and Developing Engineering Teams
Why Mentoring Is More Important Than Ever
The past year and a half has been a difficult and demanding year for all of us. With the onset of the Coronavirus pandemic, the economy experienced massive shocks and major industries have had to fight for their survival. Quarantine, shelter-in-place, and social distancing have only accelerated trends toward the adoption of digital and mobile-based services
In this environment, some engineering teams have seen their ranks depleted while business demands stay the same. Other teams have seen their product roadmaps condense and service demands increase. This has caused a number of engineering teams to see rapid expansion in their ranks, which has raised questions in terms of both talent sourcing and talent development.
In order to have a high-functioning engineering team, you’d ideally have a mix of experience levels with your intermediate and senior talent shepherding the more beginning talent in your organization. Many companies have pursued internal reskilling and upskilling programs to help meet the changing talent demands of engineering organizations. Engineers making this transition may be seasoned professionals, but they lack experience in the new technical domain. All of this places more demands upon the existing team and especially the intermediate to senior developers.
Purposeful Growth is Vital
Teams that expand too rapidly and without a plan for how they are going to mentor and grow their beginning developers, often start to experience problems like:
Burnout by project leads and top performers: having only a few intermediate to senior programmers means that the ones you do have are going to be overextended, overburdened, and unhappy.
Reduced velocity on projects (the inability to complete the same amount of work in the same amount of time): as senior engineers are taxed with helping others, they can’t contribute as much to the codebase. As their velocity decreases, so does the overall velocity of the team.
Reliance on outside vendors for business-critical features and functions: outside vendors can be excellent partners (and we’d like to think that we are one of them) but even with great vendor partners, companies usually want to maintain technical ownership over core business functions.
Inability to execute more ambiguous projects with higher degrees of uncertainty: ambiguous and ambitious projects require seasoned hands who know how to deal with the uncertainties and risks of a particular development environment. If those seasoned hands are spending a majority of their time grooming others, they may not be able to give these difficult problems the proper attention.
Beginners are given more responsibility too quickly and without the proper mentoring and experience: if beginners are asked to do too much and lack the right support, it creates more churn in terms of higher demands on QA, rework, and more peer review.
Reduced career opportunity for beginners: even the most ambitious and self-motivated beginner needs some guidance and support to reach the next level. If the support and a clear career path aren’t there, those high performers will seek out teams and environments where they do exist.
Mentoring Programs Can Help You Avoid Those Problems
Mentoring programs are a good place to start. For our purposes, a mentoring program refers to a formal understanding and defined relationship where a more experienced or seasoned programmer works with a more beginning team member to build their skill. These programs demystify the career development process by clarifying roles and responsibilities. They give beginners role models and provide them with a clear path for how they should be developing. They also uncover, validate, and value the often ‘hidden’ work that mentors do.
The mentoring relationship can take many forms. Examples might include: managers mentoring direct reports, peers mentoring peers, teams mentoring other teams, or consultants mentoring team members. In any case, the important thing about the mentoring program is that it’s strategic, scalable, flexible, and meets the needs of your team. Here are seven things to keep in mind as you start building out your mentoring program.
How to Get Started
Figure out what problem you are trying to solve
It may be that you simply need developers or a team that can build features, reduce technical debt, and draw down your backlog. If this is the case, your best solution may be to bring in an embedded team member in more of a staff augmentation capacity. If you want to look at this as an opportunity to build your team for the future or if your company wants to do its own feature development, then it’s probably time to invest in an upskilling, reskilling, or mentoring program.
Find out what’s important
Interview team leads and team members from across disciplines. Are the team leads spending too much time reviewing code and not enough time shaping the direction of the project? Are team members having difficulty following best practices consistently? Is the code being deployed too buggy? Are designs not being implemented faithfully? Taking a moment to find out where the team is having issues increases the likelihood that the mentoring program will be effective.
Use this information to determine a clear focus for the program. The goals do not all need to be quantifiable, but they should be measurable, visible, and important to the team. Maybe the focus is on increasing the team’s velocity. Maybe it’s making sure the team writes good tests and writes testable code. Maybe it’s about increasing the consistency of the team’s coding practices.
Structure a plan
Define what specific activities the mentor (or mentor team) will do to help grow the skillset of the team. Consider activities that will be scalable, repeatable, and consistent. While there may be some more formal training needed, the purpose of the mentoring program is to drive change through consistent follow-up and follow-through with the team members.
Get to work
Implement the agreed-on mentoring activities consistently and predictably. Make sure team members know what’s expected of them during the mentoring activities and make sure the mentor consistently follows up and works with team members to drive best practices.
It’s worth noting that coding excellence and technical acumen do not automatically make you a good mentor. While many senior developers are great mentors, it’s important to recognize that mentoring is a unique and specific skillset. Look for team members or partners who have a passion for developing others and who also understand how to bring them along.
Take care of the culture
While most beginning developers crave mentorship, it can be difficult to invite a stranger into your problems and to feel comfortable sharing challenges. So, it’s important to build a culture where curiosity, transparency, and authenticity are encouraged. This makes it easier for the team to feel comfortable with the mentor and for the mentor to drive value.
Return to the goals you defined in the discovery period. Is the team making progress toward the goal? Has the mentoring program had the desired impact?
Learn and adjust as you go
It’s important to continue evolving the program to meet the team’s needs. For example, maybe the team progresses more quickly than anticipated with regard to one of the initially defined metrics. Adjust course and find a new focus to continue driving forward.
The Ranch is Here to Help
If this all seems too daunting to take on, then don’t worry. Our Corporate Training service can help put your employees in a great position to not only advance in their own career but help bring up others around them. Get in touch and let’s chat about the best fit for your company.