The Software Craftsmanship movement is creating quite a stir in the software development community, with experts on both sides of the fence arguing its value. At Excella Consulting, we have embraced the Software Craftsmanship movement and feel that the benefits of writing clean code does not conflict with the needs of our customers. Our desire to continuously learn and improve how we write code has led us to gather regularly for Coding Dojos.
A coding dojo is a gathering of developers to work together to learn how best to solve a problem. The purpose of a dojo is not to produce a product, rather to learn how to write code better. A coding dojo can take on numerous formats but at Excella we have decided to focus on conducting code katas. Code katas are predefined exercises or problems that the dojo members attempt to solve. Katas are written to be domain problems that are simple and should be familiar to the developers, like Uncle Bob's Bowling Game. Katas are intended to be repeated over and over again. The code resulting from the kata is disposable, as the process of solving the problem is considered more significant.
Both the concepts of dojos and katas are derived from the world of martial arts. Martial artists attend dojos to learn from masters. Katas are the repetitive movements that martial artists conduct to build muscle memory. By applying the concept of mentorship and practice, we have found that this provides the most effective means of sharing best practices.
At Excella, our katas focus on test driven development (TDD) and paired programming. At the beginning of a dojo, a kata is introduced and everybody breaks up into pairs. Each pair uses a single computer. The first developer in the pair writes a simple failing test and then passes the computer to the second developer. The second developer writes just enough code to pass the test. Once the test passes, the second developer writes a failing test and then passes the computer back to the first developer. This back and forth approach to paired programming is known as ping pong.
It is also worth noting that since Excella is composed of both Java and .NET developers, we tend to pair up accordingly. There is, however, an interesting opportunity to learn a new programming language by pairing with somebody who knows it. Just this week, I paired up with Roberto Hernandez, a senior .NET developer, Excella Xpert and a Microsoft MVP. It was a great experience and as a Java developer C# extremely similar (don't worry, I am still a Java guy). In future katas, I plan on trying other languages such as Groovy or Scala.
For now, we hold dojos twice a month. I have been impressed with the voluntary turnout and the enthusiasm, evidence that Excellians enjoy what they do and want to get better at it. I am happy to know that regardless of the communities debate on Software Craftsmanship, we at Excella belief in it's benefits and actively practice it. I am sure future posts will touch on other topics in this arena, so stay tuned.