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 proventechniques and to practice self-defence. By practicing in a repetitive mannerthe learner develops the ability to execute those techniques and movements in anatural, 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:
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
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.
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.
Thanks for sharing. Very Cool!