Hi all,
There are some veteran LyX developers who are not sure if they can/want to become a mentor or not.

There is a short manual online:

http://en.flossmanuals.net/GSoCMentoring/what-makes-a-good-mentor/

If you think that being a mentor appeals to you, then these are in my opinion the tasks that are important to make the project a success:

(1) Selection of good students. This is maybe the most important factor, but also the most difficult one, as it can be difficult to evaluate a student based on a proposal alone (and on communication with developers).

We are basically looking for two things: The ability to write working code, and the ability to organize one's time and work to achieve the goals. The former can be evaluated if a student can already fix bugs, or show his or her coding abilities in other ways, during the proposal time. The latter is harder to evaluate; I've seen talented students who need constant reminders to get to work, and that can be very tedious for a mentor after a while. I think a good sign is if the student breaks up the projects into reasonable milestones (also see below).

(2) Define clear goals. Especially in the early phase of the project, there should be a couple of "bite-sized" milestones that can be completed in a couple of days. If the student is accepted but fails to reach these early goals, then this gives us a chance to pull the emergency break (unless there is a good reason such as a real unanticipated problem towards reaching a goal). It's better to be strict at the beginning rather than dragging out a project making no progress.

(3) Once a project starts, make sure you stay in touch frequently (ideally daily) and review each commit early. I would strongly encourage students to commit as often as possible (on their own branch or repository, of course). This way, it is much easier to review and debug changes. It also makes it easier to make the code conform to existing coding styles/guidelines. Be polite but firm if a student starts to communicate or commit infrequently. If we interact only once or twice a week, then it becomes extremely hard to track and steer progress. I would consider this a dangerous sign, and unless the contributions are otherwise of high quality (which can be the case for talented students), it can be a reason for failing a student. A successful project requires both regular communication and code commits. If a student keeps describing problems he or she worked on, without delivering code, then this is no better than not communicating. So I would, in the first month or so, absolutely insist on daily commits/pushes and reports, until things are on a stable track. (In my opinion, commits should be as frequent as possible, even for fixing a typo or adding a few comments. So for a sequence of incremental changes/fixes, it's good to commit several times per hour.)

(4) For bigger milestones, define testable goals if possible. This may be not so easy for a user interface, but for many parts of the code, an automated regression test can give a clearly measurable goal. This is especially important when it comes to passing/failing a student. Agree on some minimal goals for each major milestone (a week before the evaluation deadline), and use that goal as a guide for passing/failing a student.

(5) Time commitment. This depends on the abilities of the student, and also on the time zone difference (there is less you can do if the student is eight hours away). Early on in the project, one hour per day or even more is common, so make sure you have enough time to mentor a student if you are the primary mentor of a project.

--
Regards,
Cyrille Artho - http://artho.com/
Critical mass: a condition of the software such that fixing one
bug introduces one plus epsilon bugs.
                -- The New Hacker's Dictionary

Reply via email to