Organizational Pattern: Day Care
February 25th, 2010
(From Organizational Patterns of Agile Software Development )
Your experts are spending all their time mentoring novices.
You begin to hear things like “We are wasting our experts,” or “A few experts could do the whole project faster.” Indeed, the experts are not proceeding at the rate you or they would expect, because training the new people is draining their energy, time and concentration. But the new people must be trained, by experts, of course.
At the same time, you must make progress on the project itself.
Therefore:
Put one expert in charge of all the novices, let the others develop the system.
Separate an experts-only “progress” team from a training team under the tutelage of one or more mentors. Select the mentors for their ability to teach design and programming (object-oriented design and programming, for example) to novices. Let the progress team design 85-95% of the system, let the training team focus on quality training, delivering only 5-15% part of the system. Transfer people to the progress team as they become able to contribute meaningfully.
Make sure that the training team does not simply do training exercises, but actually contributes to the final system in an ever-increasing way.
If you have many people to train (more than, say, six), you will have to design a series of tasks for them to attempt. Otherwise you may give them a small, real part of the main system to design.
If the people in the training team are the ones who know the domain, you will have to make some further adjustment, or else the division may cause conflict.



