A Dojo is where martial arts are practiced. Dojo is a Japanese word that means "place where the way is studied" therefore it has a philosophical component that is beyond gym. In a dojo people works both body and mind.
Coding dojo is just a space to improve our skills as programmers, as the musicians rehearse before concerts or athletes train before sporting competitions, developers must improve skills before making projects for their clients.
The operation of a coding dojo is the following, an exercise is proposed and you have to try to solve it. If we use the correct terminology of the coding dojos we will have to rewrite the sentence above, the facilitator proposes a kata and through various pair programing sprints we must try to solve it.
- Facilitator: a person who "leads" the session. Proposes the kata, the aim, and moderates the discussions
- Kata: the programming exercise that through practice and repetition, helps you to improve your skills as a developer
Imatge from Michael Hultström
- Sprint: period of time available to perform the task
- Pair programing: is to make code between two people, one programming (driver) and the other checking the code (observer), every so often the roles are exchanged
Each coding dojo should have a goal, it should be to focus on improving a skill, improving the design, ... so kata is chosen to focus on the goal.
When we know the goal and the kata we do a sprint trying to resolve it. Once the sprint ended we start a period of discussion, where, together, we discuss, what went well?, how can we improve?, what we must avoid? ... Later, a new sprint is begun.
Depending on the kata, the target or the participants in this new sprint we can make changes (add another requirement, delete all codes done until now or starting again, adding a restriction, ...) sprints are done until finishing coding dojo.
As an example, if a coding dojo lasts 2h it is possible to do a brief presentation of the kata (5 minutes), two sprints of 45 minutes and two debates 10-15 minutes. Or 3 sprints of 30 minutes and 3 debates of 10 minutes.
- What IDE do we use?
You have to focus on kata and not in the environment, so use yout preferred IDE.
- What language of programming do we use to solve it?
This response depend on the facilitator. If the facilitator wants to focus on a particular programming language, this will be fixed, in other cases doesn't matter which you use.
- What about the code at the end?
Throw it, erase it, eliminate it. The aim is to improve your skills as developer, not that you have codes of example for when you are similar cases. If you practise often and improve your skills when you find similar cases youit will be able to solve them easily.
- How many people can attend to coding Dojo?
It depends, you can do coding dojos with more than 30 people, or between 4 or 5, even yourself.
Last years the inLab FIB have changed many things, the name (before we were LCFIB), we have started the program TalentSI (a program of internal training) we have started using the agile methodologies to develop software projects. All these changes can be reflected in a single liturgy, the Coding Dojo. We improve our skills to develop projects that satisfy our customers.