Coolbits Tips

.NET and general software development tips and articles I've written.

Go Back

Effective Mentoring

Managers of software teams often ask “How can I make my team more productive?” If there are members on your team that are less experienced developers, then an easy way to begin is to focus on improving their productivity and effectiveness. One method to accomplish this is through mentoring. Here are some suggestions for establishing mentoring relationships on your teams.
   
Selecting the right person
Selecting the right person to mentor team members is very important. Not all technologists make good mentors. The best mentors have the right attitude, demeanor, and skill set. If possible, a senior developer on your team may be the best place to look for mentoring material. Mentoring is a good manner for senior developers to expand their skills into other areas (such as training.) Also, mentoring can provide a good opportunity for team members to learn to work together. If a senior team member has a willingness to help others and a positive attitude, they may make an ideal candidate for a mentor.
   
It is possible that a senior developer may not be the right choice for a mentor. Perhaps there isn’t a senior developer available right now. Another problem may be that the veterans on your team may not have the personality/disposition to work well with green team members. Once a project technical lead complained to me that he couldn’t get anything done because the team he had been assigned was all inexperienced. After speaking with the team, I realized that one person he was referring to was actually more experienced than he was - he just didn't take the time to learn about his team. He clearly wasn’t the right choice for a mentoring (or technical lead) role.
   
Depending on the size and level of experience on your team, you may want to consider outside help. For example, if you have two or more untried team members who you think would benefit from mentoring, you might be able to hire a consultant to be available part-time to answer questions, provide direction, and perform quality checks like code reviews. Depending on the size of your group, what you are trying to accomplish, and the amount of time they might need to spend with your developers, the increase in productivity over the long term might be worth the initial investment. Successful mentoring should, over time, increase your team’s productivity by at least 20% within the first six months (and possibly more, if your team is very inexperienced.) This could give you a return on investment in the first year, and hopefully make it unnecessary for you to hire a new full-time permanent employee.
  
Can a manager also be a mentor? Generally, I recommend that managers do not also try to fill the role of mentor. First, since a manager can influence or set a developer’s salary, a developer (especially a less experienced one) may be less likely to ask a manager for help, wanting instead to prove that they can figure things out on their own. Also, in many cases a manager is too far removed from the technology to be helpful except in a more general way (“Did you look here for the answer?”)
  
Still, in some instances a manager can be a successful mentor to an inexperienced developer. You’ll need to evaluate for yourself if this make sense for your software team.
   
What should the mentor do?
Here are some suggestions for making the most of the mentoring experience.
  
Availability
Availability is very important. Good mentors make themselves available frequently and regularly, in order to encourage questions to come to them.
   
Encourage Experimentation
Less experienced developers need support and encouragement. Often they feel insecure and unsure of their contribution to the project. They should be encouraged to ask questions, guess, and experiment. Good mentors don’t complain or abuse junior developers when they try something that doesn’t work. (This does not mean that there are no expectations for junior developers – see the next section.)
   
Set guidelines
While you want your team to experiment and learn by doing, you also have projects to complete. So set guidelines for your developers about how long they can “wrestle” with a particular problem before they bring it to you for guidance. Depending on your particular deadlines and projects, this might be one hour or one day. This way, you won’t find your project seriously out of hours because a developer was “stuck” for a week on a particular problem.
  
Teach Them to Fish
The old adage goes “Give a man a fish and he’ll eat for a day; teach him to fish and he’ll eat for a lifetime.” It is true that the best mentors don’t just answer a developer’s questions – they help them to answer their own questions. This is an approach I have been successful with:
  
When a developer comes to you with a technical problem:
1) Ask, “What have you done so far to find the answer?”
2) Suggest possible locations for the answer to the problem.
3) Request that they research those areas, and report back the results (did they find an answer that worked, or are they still stuck?)
4) Follow-up with the person yourself if they don’t come back to you within a reasonable amount of time.
  
Mentoring, not babysitting
Mentoring cannot solve all productivity problems. If your team is non-productive for other reasons, then no amount of mentoring will solve it. Take care to diagnose the correct problem. Just because your team is less experienced doesn’t mean that’s the primary problem. I’ve seen developers sit in a corner for 3 months, and produce nothing but one page of design documentation. When confronted, they’d argue that they didn’t have everything they needed, or that no one would answer their questions, or whatever.
  
Professional people do not need people standing over their shoulders making sure they aren’t playing solitaire all day long. No amount of mentoring is going MAKE a person do their job, and if they aren’t doing their job – get rid of them. They will cause you more problems in the long-term if they aren’t following through already.
   
Good candidates for mentoring have three essential qualities:
1) A desire to learn
2) An ability to adapt and change
3) A professional attitude and manner
  
How many developers can one mentor help?
Of course, this depends on many factors: the other responsibilities of the mentor, the amount of experience of the personnel he or she is mentoring, project factors, etc. However, typically a good mentor can assist no more than 2 or 3 junior developers at one time. Don’t expect that you can hire six people with no experience, and make them all productive in a few months, unless you also have two or three mentors to work with them.
  
An effective mentor for your software team can make your team more effective and productive.