Coding Dojo – Practice programming is important !
What is it ?
Coding Dojo is a meeting where group of programmers gathering themselves to practice programming and solve a coding problem.
The coding dojo was born in Paris, France, where a group of french programmers perceived that different from the musicians and athletes that practice for an enormous amount of time, before show their skills in public, we, programmers dont have the habit to practice our skills outside the work environment, the code that we use to learn a new technology or a new way to do things is the same that goes to production. Because of that, we have two problems, or the programmers dont test new technologies e develop always using the same skillset or the prodution code is awful cause our skill in a particular technology is still improving. In this scenario, that the coding dojo was created, his name was copied from the martial arts, where dojo is a place where fighters come to improving their skills and master a fight style.
Techniques used in a Coding Dojo
Before to show how a coding dojo works, we have to see some techniques that we will be using, this techniques are TDD, Refactoring, Baby Steps and Pair Programming.
TDD (Test-Driven Development)
TDD is a development methodology that instead do manual tests after the implementation, we should focus on create automated tests BEFORE any implementation code, it brings to us the following benefits:
- We always will be writing the simpler code that passes the tests.
- If the deadline becomes too short, our tests won’t be forgotten.
- We will be building a test suite that with a button click can show us if our build is a correct build or not, it’s awesome cause it makes easier to maintain our code base, we can add other developers that know nothing about our code, and our suite will guarantee that they wont be breaking anything.
- We cut costs with QA people, since most of the tests that will be executed in weeks by testers can be executed automatically.
It’s a techniques set that we can use to make an existing code base, simpler, easier to read, maybe with better performance, without change his behaviour. For more information, i STRONG recommend this Martin Fowlers’s book: Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)
When doing a Coding Dojo we don’t have to run to finish the problem, it is prohibited ! We aren’t competing to know who is the best programmer, we have to develop one requirement for time.
At a Coding Dojo, all the code is developed in pairs, when one of the programmers is coding, the other will be helping in the problem solution.
How Coding Dojo works
Coding dojo works in this way:
A problem is chosen by the group, the problem cant be a problem that we use to solve daily, neither be a easy problem that will be solved in 20 minutos, neither be a hard problem that will exclude beginners programmers.
After that, we choose a programming language and a test framework.
Java + Junit
C# + MSTest
Now, we select two people that will start the coding dojo. One of them will be the coder, and the other one will be the helper. The remaining will be in the crowd waiting for their times.
The pair will start to solve the problem writing the first test, now we are in the red zone.
The Red Phase
The red phase starts when our tests are failing, in this phase the crowd have to be in silence, while the pair works together to make the code work. The red zone ends when our tests are passing, at this time, the green phase starts.
The green phase
In this phase our code is working properly and everyone can suggest changes that we will be improving our code quality. After all the refactorings, the pair will write a new test that will start one more time the red phase. This cycle is repeated until the problem is solved or until the end of the time available for the dojo.
Everyone will write code !
Should be chosen a time box, when the pair will be writing code, the default is 5 minutes, but it can be changed, at the end of this time, independent of the phase, the coder will go to the crowd, the helper becomes a coder, and someone from the crowd will become the new helper.
Benefits to do a Coding Dojo
- Meet diferent people
- Improve programming skills using small problems
- Learn from the experts and teach the beginners
- Learn new languages/frameworks
About Coding Dojo:
Where find problems to use in a Coding Dojo
- http://codekata.pragprog.com/ – Dave Thomas Site, famous author and programmer