Introduction
------------

The process of becoming a useful, productive wizard has been very
haphazard in the past. For most part, people have been promoted to
wizard status and then left to their own devices. This is the the
'mushroom method', i.e. feed them shit and leave them in the dark. The
obsolete 'trainee' system was based on this perculiar philosophy, with
the obvious result of torpid untrained semiwizards. Obviously, there
has to be a better way of doing this.

What we want to achieve is a more rewarding atmosphere surrounding
the learning process. An environment where the student is encouraged
to learn more while at the same time being introduced to the wizard
community in a more natural and friendly way.

The idea is to set up a more personal relationship of a designated
mentor to a designated student. The mentor will act both as a source
of knowledge with regard to coding and perhaps even more importantly
as a friend in a new and sometimes forbidding environment.

Being a mentor requires a lot of time and energy in the beginning. If
you want to have time for your own coding you can only be mentor to
one newbie wizard at a time. However, you will find the job very
rewarding. Usually a very strong friendship grows between the mentor
and the protegee. It is also rewarding to see someone go from total
helplessness to being a skilled coder.

Description of mentor tasks
---------------------------

* Be a friend. Talk about RL stuff. Introduce your student to other
  wizards. Give hints about whom to ask when you are not around.
  Demonstrate proper social behavior.

* Be a teacher. Explain how things work. Do this very much in the
  beginning and with difficult stuff. Explain where the documentation is
  found and make your student read it. Check with questions that it
  has been read and understood. Don't give unreasonably large
  documentation assignments at a time. Give coding assignments. Check
  them and suggest improvements.

* Be available. When your pupil gets stuck, you should assist your
  student. Usually it is better to ask questions, give hints about how
  to find the solution or give hints about where to find the solution
  than to give the solution. Actually fixing the code is counterproductive.
  It erodes the morale of the students.

* Be a coach. Pacing is important. The actual skill and talent of the
  student must determine what assigments to give and how quickly you
  go on to harder things. You also need to boost the enthusiasm of
  the student. This can be done in many ways; one is to have assignments
  that produce building blocks for whatever the student wants to create
  in the mud. Success is important and when the student has succeded
  with a task it is essential that you declare the success. Praise
  all progress.

* Be a protector. Sometimes new wizards get cornered by old hands for
  some reason or another. At times it happens because the new wizard
  failed to follow the code of conduct. Sometimes it happens because
  the older wizard was grumpy and generally in a bad mood. Occasionally
  your student will be attacked because someone has a grudge with you.
  In these cases, you need to act as a go-between and resolve the issue
  with both parties. It can involve explaining to your student how
  to behave, or why an unfair comment was made. It can also involve
  talking to the other wizard to resolve a problem. New wizards often 
  make mistakes, which is excuseable.

* Be a watchguard. Often a new wizard gets into trouble due to
  ignorance, doing things which aren't allowed that he didn't know
  of. Sometimes people become wizards with less than wholesome
  motives. You need to keep an eye open to make sure that the new wizard
  isn't too interested in quest documentation, statistics of players,
  monsters and equipment etc.

Control tools
-------------

Snoop is a tool that you should use a lot with your students. Don't
make a secret out of it though, that gives the wrong impression to the
student when he realizes he's been under surveillance for a long time.

The mentor status gives you snoop and read/write access to the
students dicrectories, as well as access to the wizard power limiting
controls normally available only to the liege of a domain. Please
examine the 'restrict' command thoroughly and make use of it to focus
your student's attention on the matters at hand. It's easy in the
beginning to become distracted and perhaps not realize that the
ties with the mortal world forever are severed. A gentle reminder
now and them gets his attention back on track again.

When does the mentor assignment end?
------------------------------------

Well, really, that's a lot up to you and the student. When you feel
that he can work independantly of your supervision, there's really no
longer any reason to keep tabs on him more than you would any other
wizard. However, ideally the relationship between you and your student
should never end. If you are his friend, why should that end merely
because he's become a profficient coder? It's reasonable to remove
the mud-internal formal ties, but not the personal.

Speaking about a time-scale, it's hard to put definite limits, but
it'd be surprising if he manages to learn all he needs in less than
a month and equally surprising if it takes more than six. The exact
time you use really is up to you in the end.

Suggested curriculum for a student
----------------------------------

Plesae use the suggested progressive list as a tentative development
chart for your students. Just remember that every wizard is individual
and that the speed in actual progress varies. For that reason, no
timelimits has been set on any of the steps. As soon as the student
seems confident, have him advance to the next step.

- Have the studend explore and learn how to perfom normal commands 
  getting around and communicating as wizard. Basically the commands 
  found in the apprentice soul section (allcmd apprentice).

  Explain the board tool (mbh mbs) and make sure the student
  subscribes to the more important anouncement boards aside
  from the domain-internal boards.

- Elemental LPC. The LPC Tutorial is a good reference book, but
  it's too massive to be absorbed alone or in one chunk. Start with
  teaching the student about what standard object templates are and 
  how they work. Use his workroom as an experimental area for simple 
  LPC experiments.

  In conjuction with this, the full wizard commands (allcmd wizard)
  has to be introduced and explained.

  An important part of coding is learning how to decipher error
  messages and reading logs. Make sure he knows where to find the
  information he needs to proceed.

- With growing experience, have the student write simple objects
  using the standard object templates. Let him create a small area
  of one to three rooms with a few standard objects like weapons,
  armour and perhaps even monsters.

  Introduce the tracer tool (help tracer) to faciliate debugging.

- By this time simpler projects in the actual domain can be entrusted
  to the student. It will further enhance his confidence as well as
  stimulate his interst in improving the domain as such.

- More advanced /std/objects should be explained in depth, for example
  how monsters can be made to interract and even how shadows and souls
  hook into the player object.

- After a suitable 'graduation project' has been finished, the student
  should be graduated to join the domain as a full member.

