The Software Craftsmanship movement (opens in a new tab) is creating quite a stir (opens in a new tab) in the software development community, with experts on both sides of the fence arguing its value. At Excella Consulting (opens in a new tab), we have embraced the Software Craftsmanship movement and feel that the benefits of writing clean code (opens in a new tab) 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 (opens in a new tab).
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 (opens in a new tab). 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 (opens in a new tab)'s Bowling Game (opens in a new tab). 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.
(opens in a new tab)At Excella, our katas focus on test driven development (TDD) (opens in a new tab) and paired programming (opens in a new tab). 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 (opens in a new tab).
It is also worth noting that since Excella is composed of both Java (opens in a new tab) and .NET (opens in a new tab) 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 (opens in a new tab), a senior .NET developer, Excella Xpert (opens in a new tab) and a Microsoft MVP (opens in a new tab). It was a great experience and as a Java developer C# (opens in a new tab) extremely similar (don't worry, I am still a Java guy). In future katas, I plan on trying other languages such as Groovy (opens in a new tab) or Scala (opens in a new tab).
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.