How to Mentor a Junior Developer
- by Josh Johnson
This title is a little broad but I may need to give a little background before I can ask my question properly.
I know that similar questions have been asked here already. But in my case I'm not asking if I should be mentoring someone or if the person is a good fit for being a software developer. That is not my place to judge. I have not been asked outright, but it is apparent that myself and other fellow senior developers are to mentor the new developers that start here. I have no problem with this whatsoever and, in many cases, it lends me a fresh perspective on things and I end up learning in the process. Also, I remember how beneficial it was in the beginning of my career when someone would take some time to teach me something.
When I say "new developer" they could be anywhere from fresh out of college to having a year or two of experience.
Recently and in the past we've had people start here who seem to have an attitude toward development/programming which is different from mine and hard for me to reconcile; they seem to extract just enough information to get the task done but not really learn from it. I find myself going over and over the same issues with them. I understand that part of this could be a personality thing, but I feel it's my job to do my best and sort of push them out of the nest while they're under my wing, so to speak.
How can I impart just enough information so that they will learn but not give so much as to solve the problem for them?
Or perhaps:
What's the proper response to questions that are designed to take the path of least resistance and, in essence, force them to learn instead of take the easy way out?
These questions are probably more general teaching questions and don't have that much to do specifically with software development.
Note: I do not get a say in what tasks they are working on. Management doles the task out and it could be anything from a very simple bug fix to starting an entire application by themselves. While this is not ideal by any means and obviously presents its own gauntlet of challenges, I feel it's a topic best left for another question. So the best I can do is help them with the problem at hand and try to help them break it down into simpler problems and also check their commit logs and point out mistakes that they made.
My main objectives are to:
Help them out and give them the tools they need to start becoming more self-reliant.
Steer them in the right direction and break bad development habits early on.
Lessen the amount of time I spend with them (the personality type described above seems to need much more one-on-one time and does not do well over IM or email. While that's generally fine, I can't always stop what I'm working on, break my stride, and help them debug an error on a moments notice; I have my own projects that need to get done).