There are lots of ways to teach the craft of programming. I have done my share of teaching programming through a lecture or working through a tutorial. While the lecture has it’s place in learning, I enjoy learning new teaching methodologies that maximize creativity, active learning, and fun. In our Google Developer Group, we have utilizing a fun teaching practice called “Coding Dojo.” A “Coding Dojo” is a meeting designed to teach software craftsmanship to novice and experienced programmers by solving a focus puzzle problem. During the course of the meeting, team members take turns contributing well crafted code to help solve the group puzzle problem.
Coding Dojos are promoted from the Software Craftsmanship movement. The Dojo meeting style promotes values from the software craftsmanship manifesto:
“As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
- Not only working software, but also well-crafted software.
- Not only responding to change, but also steadily adding value.
- Not only individuals and interactions, but also a community of professionals.
- Not only customer collaboration, but also productive partnerships.”
What are the benefits of a Coding Dojo?
- Engagement: Dr. Laurie White from Mercer University encouraged us to try Dojo meeting format for some of our recent Google Developer Group(GDG) meetings. During GDG, we regularly gather to explore exciting programming technologies from Google, open source, or web programming. The college students seemed much more engaged in topics since they were actively learning and applying knowledge. On top of that, we would collectively cheer when a team member got something working well. How fun is that!?
- Pair programming: When you are creating code, team members work in pairs. For 5 minutes, a team member acts as a coder. The coder is supported by a co-pilot who tries to think ahead, plan the design, and guide the coder. With every 5 minute time interval, the role of coder and co-pilot will be shifted. The current coder becomes a co-pilot. A coder is invited from the audience.
- Cooking up good code: From an audience perspective, the conversations between the coder and the co-pilot feel like a cooking show. It’s fun to see a master chef coach and a partner making a fine dish. I personally enjoy Cake Boss. In a similar fashion, novices learn from experienced programmers. Novices often teach masters new tricks.
- Working in “baby steps”: Great software is created from small “baby steps” of well crafted code. Coding Dojos promote the practice of “test driven development.” (TDD) You don’t get stuck! You always have help!
How To Organize a Coding Dojo?
As you run a Dojo event, it’s important to promote an environment of respect and learning. The CodingDojo.org has a simple page sharing the agenda and principles for a Dojo. The following video provides a summary of the roles of the audience, co-pilot, coder, and sensai. (i.e. a master programmer who supports through questions).
Puzzles and Challenges For Coding Dojo
To introduce the idea of doing a coding Dojo, our group decided to start with a fairly simple programming puzzle called FizzBuzz. It was fun doing this programming puzzle with experienced programmers and non-programmers. You can find additional Coding Dojo Challenges at CodingDojo.org.
Kid Friendly Challenges: Looking for kid friendly coding dojo problems? Check out http://kata.coderdojo.com/wiki/Main_Page .
The final result was pretty fun:
We love to hear from YOU!.
What are your favorite ways to encourage active learning and increase engagement?