On July 30th, we started hosting Coding Dojo São Paulo community meetings at Yahoo! Brazil's office.
For those who are not familiar with it, a Coding Dojo is a meeting where a bunch of coders get together to work on a programming challenge. They are there to have fun and to engage in deliberate practice to improve their skills. This is an awesome event at which to learn new algorithms, programming languages, and tools, and to hang out with other programming geeks.
Our first meeting had around 30 people (including an American who was visiting Brazil and wanted to participate in a Dojo). There were many proposals of problems to solve, but everybody ended up deciding to solve a simple problem (write numbers to words). This was so the many participants who didn't know the Python programming language beforehand could learn it, while also focusing on the solution. It's usually like that: you pick a more complex problem to solve in a language in which you are proficient, or you pick a simpler problem to focus and become better in a certain language.
To conduct the programming session, we used the Randori format: two programmers (a pilot and co-pilot) start coding in pair and stop after a fixed time box (usually 5 to 10 minutes). The pair at the keyboard explain what they are doing so everyone can follow. When the alarm rings, the pilot returns to the audience, the co-pilot turns into pilot, and a new co-pilot is picked from the audience. We keep doing that until we are out of time (generally around 2 hours).
The programmers are required to use Test-Driven Development (write tests before implementing the code) — this is another thing the Coding Dojos are useful for: to train people in Agile development practices.
You are also required to use "Baby Steps" practice. That is, whenever you are going to increment the program with a new feature, you write a test that verifies only the next simplest thing that could possibly work, and nothing more than that, and you keep doing this until the challenge is completed.
While the code is developed, everyone present is expected to follow what is going on and make helpful suggestions. You can just watch, discuss the problems, or participate in the programming turns. The goal there is to learn new things and have fun programming!
In our meeting, a great number of people hadn't had much contact with Python before, but the participants felt that the Dojo was a very good way to introduce the language concepts. Remember though that when you are learning a new language, it is always good to have a language master in the room to help keep the pace.
In our case, the folks became so interested in Nose and tdaemon (the Python tools used in the session) that our Python guru Rodrigo Bernardo Pimentel (RBP) from the Coding Dojo SP group decided to write a Nose and tdaemon blog post about it .
At the end of the meeting, we had a retrospective session led by RBP, where everybody gave their opinions about what went well and what we could improve in the next sessions. We concluded that everybody enjoyed the session, the office spac,e and the food &mdash of course :) We'll also need some adjustments, but that's one of the purposes of the retrospective, and of the Dojo format in general: to identify our weak spots, and to better ourselves.
We Yahoos are very excited to learn and help people become better programmers in our region! If you are interested in organizing a Dojo in your town too, there are a lot of good problems to solve in the Kata catalogue, SPOJ, Coding Dojo SP group page, and many other Coding-Dojo-related websites.
The next Coding Dojo SP meeting will be next week (perhaps August 13th, but we are not sure). Subscribe to the group mailing list to be notified about the next meetings.
See you there!