The first “coding dojo” was born from the observation that most developers only had their work, their professional achievements, to improve their knowledge and development techniques. The idea was then to take them out of their usual working environment and get them to work together on a specific topic or on the solution of a particular problem. The objective is to promote exchanges and to put developers in a position that will allow them to learn and to improve. Let’s see in more detail what a coding dojo consists of, how to organise it and what it can bring to the participants.
What is a coding dojo?
Do you regularly hear about coding dojos, organised by associations, user groups or trade shows, but you do not know exactly what they are?
Development teams often work at a tight pace, with relatively short lead times compared to the total workload. They therefore rarely have the opportunity to step back from their knowledge and practices, or even to have exchanges with one another. Even if they work together, each person does so in his or her own way and does not necessarily know what others might contribute, and probably does not know what he or she might contribute to the others.
The principle of coding dojos is to organise a gathering of your developers and have them work together to solve a technical challenge. The topic of the challenge must be precise enough not to risk off-topic contributions, and interesting enough to motivate the developers. The challenge is usually not related to the projects the teams are currently working on. The objective is not to move the work forward under the guise of a more playful challenge, but rather to get the participants to exchange and learn.
The coding dojo is usually relatively short, between one and two hours. It may relate to a programming language, a particular tool and be composed of several exercises in different formats. One may consider a coding dojo to be successful when all the planned exercises have been successfully completed within the allotted time and each developer is able to complete them again by him or herself.
What can a coding dojo bring to your teams?
The coding dojo, in principle and organisation, is very related to agile methods and to extreme programming. Not only will participants acquire technical and methodological knowledge (and make others benefit from those they master best), but they will implement and deepen the principles of agility as well.
Insofar as participants are in a non-competitive and collaborative environment, exchanges and learning are facilitated. It is possible to learn something, regardless of skill level. So while the beginner will learn a lot from his or her peers, the experienced developer will be able to deepen his or her knowledge, and take a step back as well from his or her own practices, thanks in particular to the questions from other participants.
It is also an opportunity to test certain innovations. Some technical solutions not sufficiently developed for use on a real project may be tested, improved and possibly validated here for future use.
Among the best practices that the coding dojo can provide is the TDD (Test Driven Development). Indeed, the objective is not only to find a solution to meet the challenge, but to find the most beautiful, effective and solid solution possible. In this respect, the TDD will allow a small step approach, validating each stage and verifying that no regression is introduced. Each stage should be explained, shared, commented and criticized so that the group work can emphasise the strengths and weaknesses of the solution found.
Some advice for an efficient coding dojo
The organisation of the coding dojo should ideally be integrated into the continuous improvement process. Regular coding dojos will allow you to establish a dynamics of learning and mutual aid within the team. These moments apart will quickly become an appointment anticipated by all.
The coding dojo retrospective
A coding dojo will always start with a quick retrospective, allowing participants to remember the previous session, what worked well and the negative points. Generally, it takes 30 minutes to complete this exercise. If the subject of the coding dojo has not yet been set, participants may take about ten minutes to decide together.
Programming exercises
Then comes the time for programming. Count about 40 minutes for this phase, during which the developers will try to meet the proposed challenge. A break of about ten minutes will allow a discussion of the different solutions anticipated and the practices used. Then the developers will follow for a second period of 40 minutes of programming.
The exercises or challenges proposed during these two 40-minute periods may be of two types:
- prepared kata
- or the randori.
Prepared kata
During a prepared kata, the exercise is presented and performed by the person who has chosen the topic for the coding dojo. This developer will present to others a draft of a solution and explain each stage, using the TDD. It is possible to interrupt the facilitator at any time so as to ask for clarification, ask questions or suggest alternative solutions.
The randori
During randori, developments take place in paired programming, and everyone is invited to participate. Participants will follow each other in pairs to advance developments over a period of 5 to 10 minutes. Each pair consists of a pilot and a co-pilot. In order to maintain a certain continuity, only one developer changes in the pair at each turn. The pilot leaves the pair, the co-pilot becomes the new pilot and another participant completes the pair. An alternative is to work several pairs in parallel so as to then compare the different solutions found.
The necessary resources
The organisation of a coding dojo will naturally require a room large enough to accommodate all participants comfortably. At least one computer and a video projector will be needed if only the facilitator is asked to write code. If the exercises are to be done simultaneously by the participants, they will, of course, each have a computer available to them.
To conclude on the coding dojo
A coding dojo is different from a training. It will relate to a very specific case, in a much more targeted way than a training, which remains more general in terms. The objectives are not the same. Where the training will mainly require individual work by participants, the coding dojo will lead them to work together and to participate in exchanges, both as to technical aspects and as to working methods. It is, therefore, an effective way to have developers advance both individually and collectively, beyond their usual projects. The coding dojo will allow each developer to discover new techniques, learn from others and consolidate their knowledge.
The Nutcache online project management solution offers all the tools necessary to organise your coding dojo properly. Do not hesitate to test the solution for 14 days free of charge.