These people look cross functional right?  They're pointing at a chart anyways, so hopefully they're learning something from each other.You may have heard it said that the best Agile teams are cross-functional in nature. That means that each person on the team is capable of working in multiple functional silos (database, service layer, presentation layer, testing, etc). A cross functional team is well suited to agile projects because you can easily trade tasks among team members who have similar or broad skill sets.

But agile projects are also a great way to cross train your teams and help them broaden their skill sets, for a number of reasons.

  • Highly collaborative teams. Each day in the stand up you are learning what others are working on, and any obstacles they are encountering. These can be a great time for team members to speak up and say «I know how to do that» or «I’d like to learn how to do that, can I talk to you after the stand up about how you did it?».
  • Pair Programming. Teams that follow XP practices like Pair Programming will also benefit from spreading knowledge across the team members if they are rotating programming pairs.
  • Team Planning. The team that plans together, learns together. During the planning sessions your team will get a lot of value from the discussions about iteration goals, task breakdowns, and estimation. Each of these discussions is an opportunity for team members to share ideas and learn from each other.

But that doesn’t mean just because you are following an agile process, your team members will automatically be cross trained. I’ve worked on many teams where the external consultants on the team have had a secondary goal of training the client’s staff as they went. The problem with this is that because it was often a secondary goal, we sometimes shortchanged it and used that theoretical training time to finish tasks and try to deliver more functionality to the client.

If you are serious about setting cross-training as a goal of an iteration, then here are 4 tips to ensure the training actually happens:

  1. Assign tasks to the person being trained. Make sure the person who is expected to learn the material is the one assigned the task. This will encourage a sense of ownership and remind them that it is their responsibility to speak up if they are not learning enough to be comfortable with the topic. Even better, let people select what items they want to be trained on during the planning session, this way they will be more motivated to learn the topic if they selected it.
  2. Underallocate time for the trainers. The downside of assigning the learning tasks to the learner, is that the person doing the training is not represented. If you still allocate a full load of other tasks to those expected to do the training, then they will neglect the training because they are being overworked. Make sure that you lower the expected amount of work they have to deliver so they have time to do the training justice.
  3. Don’t reassign, pair program. When the learner is getting stressed about getting all their assigned tasks done in the iteration, they will be tempted to say «Why don’t you just take this task since you have more time and know how to do it better. I’ll learn how to do this in a future sprint.» This is very tempting, and I’ve done it multiple times, but if cross training is truly a goal of your team, then you can’t just surrender so easily. Instead, encourage pair programming for some timebox to see how far you can get. Leave the task assigned to the person who should be learning it so they can’t just walk away from their responsibility to learn.
  4. Make the trainee demo the task. Generally in agile, the person who owns the task is the person who should also demo it at the end of the iteration. This is the most important reason to leave the tasks assigned to the learner. It’s also the best way to ensure that the learner will speak up if they haven’t learned enough to be confident speaking about the task. They certainly don’t want to look bad in front of the whole team and outside stakeholders during the demo!

You never know when a team member is going to get hit by the proverbial bus, or leave the team stranded without the benefit of their functional knowledge. By diligently coaching your team to use the agile framework as an excuse to cross train, you will grow the skills of your team members and reduce a lot of project risk.