The 4C Training model
Good training for software development skills is interactive, varied, and hands-on. Many technical coaches have found inspiration for designing training in Sharon Bowman’s book “Training from the BACK of the Room”. This page summarizes the main elements of it, and we do recommend you read the book too.
The 4 ‘C’s
It helps to think about training activities belonging to one of four categories, known as the 4’C’s because of their names. On this site you can find some suggestions for specific activities for each, linked in the list below. The rest of this article explains more about each one.
You don’t have to do 4C activities in that order, and they certainly don’t have to take the same amount of time each. Usually you do a short Connect first and the Conclusions last, but you could include several activities in each category or have one activity that covers several of them.
Connect
In a Connect activity, learners make connections with
- What they already know (or think they know) about the training topic
- What they will learn
- What they want to learn
- Each other
It’s about getting into a state of mind where people are ready to begin learning something new. New knowledge needs to be integrated with existing knowledge, and perhaps existing knowledge needs to be challenged. That last connect - to one another - is particularly important in a software team. Learning is social, that is, people learn from each another as well as from the trainer. Ideally you want a team environment where people feel safe to ask questions and aren’t afraid to reveal what they don’t know or can’t do yet.
Concepts
This part includes what you’d probably think of as classical teaching - an instructor talking about a topic that is new to the learners, explaining it clearly with words, pictures, examples, stories etc. However, people can also take in new concepts in other ways - listening to a lecture is perhaps one of the least effective ways to communicate a new concept.
People also learn through discussing, reading, writing, explaining new concepts to others. Teaching something to another person, and doing the preparation needed for that, is one of the best ways to learn a new concept for yourself. The more interactive and engaging and varied ways you can present a new concept, the better.
Concrete Practice
Usually in a Learning Hour, this is a coding exercise, although not exclusively. Often it will be a code kata with a clear desired outcome, like a refactoring kata or a test design kata. If you’re coding from scratch doing TDD you might introduce rules and restrictions, starting code or checklists. This is to make it less challenging and open than full-on TDD, and narrow the focus of the session to a particular aspect you want to learn about. You only have an hour.
If it’s not a coding exercise, the Concrete Practice could be some kind of active review of the new topic. The learners must be actively applying the new concept in this part. Perhaps they will solve a puzzle, move some sticky notes into correct categories, or evaluate a code sample against some criteria.
Conclusions
In order to begin using the new knowledge in the rest of their work, learners benefit from a conclusions activity. They might
- Summarize what they have learned
- Evaluate it
- Celebrate it
- Create action plans for how they will use the new knowledge or skills afterwards
The conclusions activity is often held at the end of the learning hour, and it’s important to save time for it.