Using katas to improve teams and teach skills

Using katas to improve teams and teach skills

  • Comments 1

I recently joined the MS Online Store Engineering and started doing Kata exercise after lunch.  I like using Kata, don’t you?  Some people like it and some people don’t; some people think that it is a waste of time but some people think that it helps to learn new skills quickly. 
All depends on how you use it and if you have set the right expectation.

I found the definition of Kata from Wikipedia:

The basic goal of kata is to preserve and transmit proven
techniques and to practice self-defence. By practicing in a repetitive manner
the learner develops the ability to execute those techniques and movements in a
natural, reflex-like manner.

How to practice Kata correctly?

Kata does not applied to all scenarios.  Kata is a good idea and approach for learning something new and small in a very short period of time.  For example, if you want to learn Knockout JS, you can set a simple goal, create a to-do list and then break it down into several steps.

Here are the recommended steps our team come up with:

  1. I can add one task with a name to the page.
  2. I can add multiple tasks to the page.
  3. I can mark a task as complete by clicking a checkbox next to it.  After marking it as complete, there is some visible indication that the task is done. Unchecking removes this indication.
  4. I can delete tasks from the list.  Deleting removes the task completely from the list.
  5. I can't add a task if the new task box is empty.
  6. The new task box clears to empty and has focus after I add a new task.

If I want to learn something huge like Windows Azure, can I use Kata?  Yes, but first of all you will need to narrow down your goal to make it small enough that it is achievable within a very short period of time, e.g. 30-45 minutes.  For instance, I want to learn using Service Bus to build multi-tier application.  To start, I can use an online tutorial (here) as a reference to define my Kata steps.  And I work on it until I feel comfortable with it.  Kata is great way for learning TDD and web technologies, especially open sources; which are generally small and simple, i.e. AngularJS, and RequireJS.  As it breaks a big task into smaller steps, people doing Kata daily can easily see their learning progress thus build up their confidence in the subject.

Some points to remember

  1. Kata recommends practicing the same exercise several times until you are familiar with it.  How could you improve your programming skills by doing same exercise again and again?  Absolutely not.  Whenever I work on Kata, I have to know what my goal is and what I could achieve.  For example, if I want to learn TDD, I can do String Calculator exercise with different languages such as C# with NUnit, JavaScript with Mocha, or PowerShell with Pester unit test framework.  I will first pick C# and NUnit to implement String Calculator using TDD approach since C# is the language that I am most comfortable with.  Once I can finish the exercise within 30 minutes, I will adjust my goal to using JavaScript instead of C#.  This really makes sense that we should learn how to do TDD using different programming languages and testing frameworks with the same exercise.  Moreover, you can even try to do the exercise without mouse, in order to learn Visual Studio or Resharper shortcut keys.
  2. Keep focus.  When learning TDD using String Calculator exercise, some people may spend too much time on code optimization and try to handle more cases than necessary.  It will sidetrack your focus and wastes some of your time.  Implement the just-enough solution to fulfill the requirements and go next step.
  3. Don’t try to compare progress/result with other team members.  Everyone learns in a different pace and in a different way.  You should just compete with yourself and make sure you are making progress.

Sharing

We work on the Kata exercise individually.  Upon completion, team members will share their approaches and difficulties faced in solving the problem.  Sometimes we will do a group kata (4-5 persons) on Friday.  Each developer will resolve 1 test case, implement a new test and then pass it on to the next person.  This provides opportunities to know other approaches toward the question / other techniques can be used.  And it is really fun and build relationship with other developers.

Last

Start picking something that you would like to learn about which is small enough that you can complete in 45 minutes and try to do it every day or two. Kata is just a start, and you should read more material or take formal courses if you want to master a specific technology.

References

  1. Coding Dojo – a list of Kata questions
  2. Top Coder – pick a programming language and practice with problems at TopCoder make good katas.
  3. http://www.peterprovost.org/blog/2012/05/02/kata-the-only-way-to-learn-tdd
  4. http://simpleprogrammer.com/2013/08/26/dont-code-katas
  5. http://www.codinghorror.com/blog/2008/06/the-ultimate-code-kata.html
Leave a Comment
  • Please add 8 and 8 and type the answer here:
  • Post
  • Thanks for sharing.  Very Cool!

Page 1 of 1 (1 items)