Mentors are one of the stakeholders in Google Summer of Code program, and they are very important set of people. In definition they own an idea and they try to get it implemented/ achieved by a student. In my perspective mentoring goes beyond the boundaries. Mentor should be able to get he project completed and at the same time he/ she should be an ambassador for the project. How ever it is not the main topic I am focusing on this article.
Through out the GSoC experience, I got some common questions from the mentors, when they try to understand their role. For the benefit of other I though of noting them with my answers. So this is strictly express How mentoring should be, according to my thoughts.
Work load, how many hours per week, should I invest to be a mentor?
There is no upper or lower limit. Your job is to make sure the project is in progress, to get the project going you need to facilitate the student. Depending on the project and the student (some other external factors) you may be investing different hours. You and your student should decide how to interact to get the maximum benefit.
Do I need to be technically sound?
No you do not as long as you know the domain of the problem ! But you should be able to understand what student is doing and then you need to know where to direct if the student needs in-depth technical knowledge.
Is it a professional relationship?
With experience I prefer to make it professional as much as possible when it comes to discussions about the project. Other than that you can use any approach. But make sure everything is in control and you build up a good relationship with the student.
Do I need to have industrial knowledge on how to develop software?
This is not mandatory, but I think it is better you have it. The one of the ideas in this program, is to provide some hands on experience on software development to the students. If you are familiar with those you can transfer the knowledge to the student where he gets additional benefits.
How to evaluate their progress?
This is very important. Two quick rules. Keep in touch with them all time so that you know what is happening. The second is progress meetings. You need to arrange progress meeting according to your requirements. May be once a week, twice a week, monthly or after a milestone. but make sure you have them timely.
Do I need to assist them in coding?
No ! . Most of the time do not help them directly when they stuck. First ask them to solve it themselves. Secondly ask them to contact the community (eg: devel-list, IRC, mailing list…) then ask them to search an answer for the issue (eg: Google, refer books). If above did not work out assist them to solve the problem by giving them required knowledge. Do not code for them at any situation. But train them how to find a solution when they got stuck.
What else other than coding?
As noted in the beginning, you are an ambassador for the organisation/ community. Let the student have the feeling and let him mingle with the community. Guide him so that he can join with other groups with in the organisation and work with them. So that he gets a good exposure on the community.
so few Questions and Answers, I ll keep adding few in future.