On Mar 8, 2011, at 15:41:21, Andreas Monitzer wrote:
> I'm not that fluid in Adium's code any more, but I guess I could easily find 
> my way around again when a student needs some help.

I won't be mentoring, but for any who will mentor for the first time, here's a 
rough guide to what mentoring entails:

- Work with students from the very beginning on the quality of their 
submissions. 90% of the submissions will be crap. Look past this. See what lies 
within. If it can be improved, try to get them to improve it. Those who do will 
be good students.
- Spur your student to work on code. Make sure they're committing at a regular 
and satisfactory rate.
- Ensure your student actually writes code and doesn't just crib together 
tutorials and/or Stack Overflow answers and/or ask you to provide code* for 
various tasks they need to accomplish. Wildly varying coding styles, 
inconsistent variable and method naming, and poor indentation are warning signs.
- Communicate constantly. This includes the aforementioned spurring your 
student to work as well as being available to answer any questions they have 
about where things are in our code base, what they need to do to achieve 
certain goals or specific sub-tasks, etc. These questions are virtuous; you 
should encourage them, just short of demanding them. The student is not that 
only in name; they are here both to write code and to learn.
- Find a medium that works for both of you. For me, email (or Twitter, 
nowadays) would be best. Maybe you prefer IM, or even voice chat/phone (if it 
isn't too expensive). Don't try to force your habits on the student; if you 
love the phone but they hate it (or vice versa), a happy medium will work 
better.
- Be sure they understand and use Mercurial and good VCS practices generally. 
Frequent, discrete commits; neither waiting “until it's done” to commit (it 
should compile) nor committing half-done work periodically (e.g., daily) nor 
committing amalgams of unrelated work (they should commit specific sections 
that comprise a single change).
- Nowadays, I recommend that you have them fork our Bitbucket repo and push to 
their fork.
- Review their code constantly. Subscribe to the commits list (or their fork's 
commits feed) and review everything they write.
- Read their commit messages, not just their code. Lists are a warning sign 
(unrelated changes lumped together). Inadequately describing the change is also 
a problem. Work the student out of these habits as soon as possible.
- Don't wait until mid-term exams to sit your student down for a serious talk 
about their work or lack thereof. If they're committing garbage, set them 
straight as soon as possible—do not wait. If they don't commit, get them 
writing and committing as soon as possible.
- Always be ready to fail your student. Be compassionate, understanding of 
life's realities; they're not a slave. But they are here to work, and if they 
don't do the job or if they do a bad job, be ready to fail them.
- Make sure they know where they stand. If there's 1–2 weeks before exams and 
they're still in danger of failing, make sure they know what'll happen if they 
don't shape up.

I can't claim to have been perfect in all of these points in my own mentoring 
(many of these I learned by *not* doing them), but it's what I've found works.

There might also be something on the GSoC topics about this. Some viewpoints 
vary, particularly along the leniency-to-hardassness spectrum.

*Six words that should worry every mentor or other help-offerer: “Can you show 
me a sample?”


Reply via email to