Software engineers are a breed apart and coaching them to bring out their best has almost been a passion for me. I’ve had the pleasure of working with really good software engineers and watching them climb the ranks and achieve their career objectives has been especially fulfilling over the years. Here are a few learnings along the way:
Each individual is different
There’s no cookie cutter approach to coaching software engineers. Each individual comes with their own strengths and areas that require improvement to achieve success in the fast moving workplace. Begin by identifying strengths and areas of improvement in the eyes of the individual first and work your way through the mentoring session. It’s possible that the areas of improvement that you had in mind has already been identified by the individual which makes the coaching more individualized and effective and reduces the judgement involved. Remember, it’s about the development of the individual, and not about your ability to identify and “fix” people.
Relate a personal story
It’s quite possible that you had the same problem in your career and had to deal with it yourself. The knowledge of your story and how you overcame it will help the individual relate to the problem better and take the stigma out of it. Get as personal as you require and don’t worry about appearing stupid — remember the goal from the earlier point, it’s about developing the individual.
Continual learning as a requisite for growth
Software engineering in particular requires constant investment to be able to keep up with the pace of change that is taking place in the industry. It’s important to stress how continual learning is mandatory for growth in the information culture. Folks that don’t make it a point to learn, investing their free time — evenings and weekends — end up not progressing far in their careers. It’s a universal rule, and it doesn’t matter how far up the hierarchy an individual already is, this attribute alone can make or break an individual’s career.
Give them wings
It’s natural to want to keep a great player in your team, but once they reach a certain point, give them wings so they get the kinds of experiences that would help them grow to the next level. This may involve moving them to different departments or geographies that would give them fresh experiences and opportunities to understand a different perspective of the business. Keep the individual in mind and do what’s right for them. If you follow this practice, the ranks will grow to accommodate similarly talented individuals as success stories spread within the organization. It’s not a zero sum game.
Develop soft skills
In my experience, more often that not, software engineers tend to have higher IQ but lower EQ. Help individuals develop their soft skills and provide opportunities for them to exercise their new skills so that they become rounded individuals. Take pleasure in watching them transform from their introverted, awkward selves to rock star software engineers that exude confidence and capability.
Identify needs of the individual
Identify where they are in the hierarchy of needs and where they want to be and coach them to get there. As mentioned earlier, each individual is different, so customize the prescription individually.
Let them go
As a leader, if you follow this with your teams, attrition of your staff will be low. However, you will have to deal with talented engineers leaving the team. Don’t take it personally, although it doesn’t hurt to be introspective to see if there’s anything you would need to change, as there may quite well be — remember, employees leave managers. The move very well could be in the best interest of the individual, and in such cases, dial back the recovery pitch and let them go, while leaving the communication channels open. Stay connected with them and be a cheerleader for their success and don’t discount the paths crossing in the future. It really is a small world out there.
Software engineers are a breed apart and coaching them to bring out their best has almost been a passion for me. I’ve had the pleasure of working with really good software engineers and watching them climb the ranks and achieve their career objectives has been especially fulfilling over the years. Here are a few learnings along the way:
Each individual is different
There’s no cookie cutter approach to coaching software engineers. Each individual comes with their own strengths and areas that require improvement to achieve success in the fast moving workplace. Begin by identifying strengths and areas of improvement in the eyes of the individual first and work your way through the mentoring session. It’s possible that the areas of improvement that you had in mind has already been identified by the individual which makes the coaching more individualized and effective and reduces the judgement involved. Remember, it’s about the development of the individual, and not about your ability to identify and “fix” people.
Relate a personal story
It’s quite possible that you had the same problem in your career and had to deal with it yourself. The knowledge of your story and how you overcame it will help the individual relate to the problem better and take the stigma out of it. Get as personal as you require and don’t worry about appearing stupid — remember the goal from the earlier point, it’s about developing the individual.
Continual learning as a requisite for growth
Software engineering in particular requires constant investment to be able to keep up with the pace of change that is taking place in the industry. It’s important to stress how continual learning is mandatory for growth in the information culture. Folks that don’t make it a point to learn, investing their free time — evenings and weekends — end up not progressing far in their careers. It’s a universal rule, and it doesn’t matter how far up the hierarchy an individual already is, this attribute alone can make or break an individual’s career.
Give them wings
It’s natural to want to keep a great player in your team, but once they reach a certain point, give them wings so they get the kinds of experiences that would help them grow to the next level. This may involve moving them to different departments or geographies that would give them fresh experiences and opportunities to understand a different perspective of the business. Keep the individual in mind and do what’s right for them. If you follow this practice, the ranks will grow to accommodate similarly talented individuals as success stories spread within the organization. It’s not a zero sum game.
Develop soft skills
In my experience, more often that not, software engineers tend to have higher IQ but lower EQ. Help individuals develop their soft skills and provide opportunities for them to exercise their new skills so that they become rounded individuals. Take pleasure in watching them transform from their introverted, awkward selves to rock star software engineers that exude confidence and capability.
Identify needs of the individual
Identify where they are in the hierarchy of needs and where they want to be and coach them to get there. As mentioned earlier, each individual is different, so customize the prescription individually.
Let them go
As a leader, if you follow this with your teams, attrition of your staff will be low. However, you will have to deal with talented engineers leaving the team. Don’t take it personally, although it doesn’t hurt to be introspective to see if there’s anything you would need to change, as there may quite well be — remember, employees leave managers. The move very well could be in the best interest of the individual, and in such cases, dial back the recovery pitch and let them go, while leaving the communication channels open. Stay connected with them and be a cheerleader for their success and don’t discount the paths crossing in the future. It really is a small world out there.
Read Next
Windows of Opportunity: Microsoft's Open Source Renaissance
Twenty years ago, it was easy to dislike Microsoft. It was the quintessential evil MegaCorp that was quick to squash competition, often ruthlessly, but in some cases slowly through a more insidious process of embracing, extending, and exterminating anything that got in the way. This was the signature personality of
US-11604662-B2
I’m happy to announce, that after a long wait, patent US-11604662-B2 has been issued.
Parallelizing and running distributed builds with distcc
Parallelizing the compilation of a large codebase is a breeze with distcc, which allows you to spread the load across multiple nodes and…
Getting started with Linkerd
If you’ve done anything in the Kubernetes space in recent years, you’ve most likely come across the words “Service Mesh”. It’s backed by a…