Organizations that want their information technology (IT) training and
education (T & E) programs to be successful must carefully distinguish between the
two concepts. Training is the process by which people gain tangible skills
that they can start applying immediately. Education, on the other hand, is
process by which people gain knowledge and understanding. Training and
education can occur in class room settings, in mentoring sessions, or through
apprenticing. Some courses, such as Introduction to Java Programming,
are for the most part training. Similarly, some courses such as The
Principles and Practices of Agile Modeling, focus more on long-term
education. Many courses are a mix of both, a course entitled
Object-Oriented Analysis and Design With UML would likely be one such example.
The point is that you need both training and education to help round out the
skills of your staff.
This article overviews my experiences helping to train and educate people in
IT skills such as object-orientation,
Language (UML), Agile Database Techniques,
and agile software development in general. Throughout this article I'll use
the example of learning agile development techniques but as you can see the
advice can easily be generalized to learning any new technique or paradigm.
In fact, this material is adapted from my fourth book
More Process Patterns,
the focus of which was object technology.
I'd like start by saying that there is no magic when it comes to T&E.
It takes time for people to learn things, and often years for them to master it.
For example, it takes several months for a person to gain a working
understanding of Extreme Programming (XP), and potentially another year or two
for them to become truly expert at the process. Agile software development is a
whole new paradigm, one that you cannot pickup overnight.
A second issue is that people learn differently. Sometimes people respond
best to hands-on training, whiles others prefer lecture-style instruction. Some
people like computer-based training (CBT) and others work best in learning
teams. Successful T&E programs are flexible enough to support various learning
Figure 1 depicts an approach to T&E which I have found useful. The
square boxes represent activities which usually occur within the scope of an
the rounded rectangles are typically associated with the people
management efforts within your organization. This approach
is comprised of six activities:
Figure 1. The Training and Education Lifecycle.
It is critical that you get IT professionals the right T&E at the right time,
and the only way that you can do this is through regular assessment of their
skills. To do this successfully you must:
IT professionals need specific, introductory training, on
new subjects. A serious mistake that I see many organizations make is that
they assume that because someone is in a senior position that they don't need
introductory training. For example, an experienced Java programmer could
very likely benefit from a two-day introductory course in user interface design
and a senior executive an introduction to Extreme Programming (XP).
Once the initial training is complete, your staff is ready
to begin applying their new skills. It is at this point that many organizations
run into trouble because they mistakenly believe that their staff now has the
necessary skills to do the job on their own. Often, nothing could be further
from the truth. Would you send somebody to a couple of accounting courses and
give them control of your organization's finances? Would you send somebody to a
couple of marketing courses and put them in charge of your advertising
campaign? Would you somebody to a couple of law courses and then have them
defend you in court? Of course not. Therefore, why would you send somebody to
a couple of agile software development courses and expect them to develop mission-critical
software with their new found skills?
After initial training is complete developers are now
qualified to be mentored by someone experienced in the subject. The objective
of mentoring is to have someone who is experienced guide novices through the
learning process, showing them how to use the new techniques in practice. The
mentoring effort should be performed on an actual development team, one in
which the trainee is given the opportunity to apply and evolve the skills that
they received during training. The best mentors have several years of
experience in the technique, have mentoring experience, and have good
For mentoring to be successful your mentors must be
qualified to do the job. Did you ever take a college course where the
instructor was ahead of the students in reading the textbook by only a chapter
or two? Or a commercial training course where the instructor just got back from
the "train the trainer" version of the course? Wasn't a very good learning
experience, was it? The same thing applies to mentors - mentors must have
experience in what they are teaching. The bottom line is that good mentors have
communication skills and several years of experience in what they are
mentoring. If you do not have people with the skills, and many organizations
still do not, you'll need to hire from the outside.
Mentors should participate as active members of your
team, not just as teachers. For a mentor to be a productive member of
the team you will need a ratio of one mentor for every two or three novices,
anything more and the mentor will be too busy mentoring to get anything done on
your team. There is nothing wrong with this, as long as there are other
experienced people available to develop the complex portions of your
application. teams consisting of one expert and a large number of
novices are likely to fail.
Mentoring is in addition to training and education, not a
replacement for it. One of the roles of a mentor is to help your team
to see the big picture and will need to refocus the team occasionally by
explaining how new methods can be applied to solve development problems. Mentors
should be involved throughout the entire
especially at the early stages
of it, so that the learning process gets off on the right track.
My experience is that when you're adopting a new technology
such as web services, or a new paradigm such as agile software development, that
the mentoring process typically takes between six and twelve months. The
mentor is needed full-time at the beginning of an initiative and then only a day or
two a week towards the end when your development staff become self-sufficient.
The trick is to slowly wean yourself off your mentor by having them transfer
their skills to your staff. Good mentors make you independent of them, bad
mentors do not.
In addition to providing advanced training courses, you should also consider
supporting educational opportunities such as:
In the end, if someone has a diploma or certificate all it really says about
them is they put in the time to earn it. I've worked with many people that
don't have any sort of certification or post-secondary education and they've
been great developers. Similarly I've worked great people that do have
these things. Fundamentally a diploma or certificate gets your foot in the
door, after that it's up to you.
There is far more to the T&E process than formal classroom
training. To support the learning experience you can promote:
Learning teams. Learning teams are small,
cross-functional groups of people who are given the task of working together
to learn a particular new technology or technique. Learning teams are often
asked to produce a small application for the company, perhaps something for
the human resources or marketing departments. They are usually asked to
spend between 20 and 50% of their working hours on the mini-project,
devoting the rest of their time to their current responsibilities.
Members of the learning team will still need initial training and mentoring,
otherwise they are likely to flounder.
Reading groups. A common technique is for
a group of people to choose to read a book together and then to get together
and discuss it on a regular basis. For example, you might choose the
Database Techniques and then once a week get together to discuss the
contents of one of the chapters. This motivates people to not only
read the book but to actually focus on and understand the material.
Bag-lunch training. These are one-hour
mini-lessons held during the daily lunch break. The sessions are typically
given by an expert in the subject, usually but not always one of your
mentors, and will cover a wide range topics. One lesson may be about
(TDD) and the next about
agile requirements management. Successful bag-lunch training programs
typically involve 2 or 3 sessions a week with each individual session being
given several times so that everyone has an opportunity to attend, minimally
you should try to give a session once a week. Bag-lunch sessions are easy
to do and really give a boost to the learning process.
Information access. Get people access to
the Internet, magazine subscriptions, and books. There is a lot of
information out there, much of which is free for the taking.
provide mentoring and hands-on experience.
Computer-based training (CBT). CBT is also
a valid T&E approach, especially when combined with formal training and
mentoring. Many organizations provide their employees access to
introductory CBT courses before sending them on formal training courses,
giving them a head-start on learning. Unfortunately, CBT by itself is of
minimal value by itself. Most aspects of software development are simply
too complex, and evolve too quickly, to be captured in a CBT course.
Furthermore, when you have questions about something you need to talk to an
expert to get them answered. A computer cannot do that for you, although a
mentor can (mentoring and CBT are a powerful combination). In short, CBT is
only part of the solution, albeit a potentially important one.
I would like to share several tips and techniques that lead to success in
training and education: