Object Mentor Blog: What's all this nonsense about Katas? http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas en-us 40 What's all this nonsense about Katas? <p>There has been an increase in interest in Software Katas of late. What is all this buzz about, and why might it be important?</p> <p>Several years ago (Pragmatic) Dave Thomas started a special <a href="http://codekata.pragprog.com/">blog</a> about coding katas. The idea was simple: Professionals practice.</p> <p>This thought might not have occurred to you before; but it&#8217;s self-evidently true. Professional musicians practice. Professional dancers practice. Doctors practice. Soldiers practice. Indeed, any kind of professional craftsman or artisan must practice their adopted trade in order to execute it well when it counts.</p> <p>Dave&#8217;s point was that professional programmers need to practice like any other professional. He set forth a number of simple exercises and problems that programmers could solve during their practice time. He also suggested that practice time needs to be scheduled and protected as part of the normal routine of a software developer.</p> <p>At <span class="caps">XP2005</span> in Shefield, UK, I attended Laurent Bossavit&#8217;s and Emmanuel Gaillot&#8217;s <em>Coding Dojo</em> session. I <a href="http://butunclebob.com/ArticleS.UncleBob.TheProgrammingDojo">blogged</a> about it at the time. I left that session with a different view of what a Kata might be. In Dave Thomas&#8217; view a kata is an exercise to solve. Each time you solve it you try a different approach. Dave&#8217;s notion is that a kata is a way to explore the solution space of a problem. But in Martial arts a kata is something different; it is a set of motions that one memorizes in minute detail. A martial arts kata is a <em>precisely executed dance</em>. I left Sheffield with the idea that a coding kata could be more like a martial arts kata.</p> <p>About a year ago, <a href="http://www.coreyhaines.com/">Corey Haines</a> (our wandering minstrel of code) stopped by and told me about some mini-conferences that had adopted the notion of coding kata. What he described sounded more like a group dance than a bunch of people independently solving a given problem. This got me thinking. So at the next Software Craftsmanship meeting at <a href="http://www.8thlight.com/">8th Light</a> (Which, not coincidentally, takes it&#8217;s name from a martial arts philosophy) I conducted <a href="http://www.vimeo.com/2499161">a simple kata session in dojo style</a>.</p> <p>I, acting as the Sen Sei, had everyone file in to the room as they would to a dojo. I had them put their <a href="http://cleancodeproject.com">green bands</a> on their wrists (mine was black!). I bade them to sit, and then gestured for silence. For the next 15 minutes I led them through the <a href="http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata">Prime Factors Kata in Java</a> without uttering a word (well, almost). I would write a simple test case, then gesture for them to do the same. Then I would make the test pass, and again gesture for them to repeat my moves.</p> <p>Then, this Fall, I attended <a href="http://agile2009.agilealliance.org/programmingwiththestars">Programming with the Stars</a> at Agile 2009. As I watched the contestants perform their programming sessions, I realized that they were not simply demonstrating programming prowess; indeed they were competing in how well they <em>performed</em> their session. That&#8217;s when it struck me. This was a <em>performance art!</em></p> <p>It seems absurd to think of programming as a performance art. And yet watching those people up on stage working through routines that they had clearly practiced over and over again, was <em>delightfully entertaining</em> to me, and to the crowd. There were cheers and applause when a performing pair did something especially well. There was laughter when a pair executed a clever joke in code, or in behavior. For programmers, watching other programmers perform well practiced routines was <em>fun!</em></p> <p>Now I had seen martial arts katas executed as performance art during competitions. Indeed, it is a beautiful thing to watch a skilled and well practiced martial artist peform a kata. And that started me thinking. Why would a martial artist practice these forms so intensely that they could be performed as an art?</p> <p>The goal of martial arts is not to perform on stage. The goal of martial arts is self defense! And yet, when a martial artist is at the peak of his skill, his practice takes on the quality of a performance art. When you watch a skilled martial artist perform, you <em>know</em> you don&#8217;t want to fight him. The performance is a demonstration, and a realization, of mastery.</p> <p>And yet the performance is not the goal. No martial artist practices his art so that they can perform on stage. A martial artist practices to achieve personal perfection in the art of self defense. The fact that the practice can be performed is a (pleasant) side effect.</p> <p>Could it be that these coding kata that we&#8217;ve been dabbling with for the last few years could be <em>performed</em>? Is there a benefit to practicing them so much that performance is an option? Is there really any reason for a programmer to create and then memorize a routine down to the level of individual keystrokes? Is there profit to be gained from practicing that routine so thoroughly that you can do it at high speed with virtually no errors? This August I decided to find out.</p> <p>I started with the Prime Factors Kata in Java, and set it to music inspired by <a href="http://www.youtube.com/watch?v=SV6ScA9rc1E">this video of dancing kites</a>. The piece is about 4 minutes long, and I figured I&#8217;d need about twice that, so I found two different version of the music and played them back to back. But working in Java is ponderous, and I could not complete the kata before the two pieces had finished. So I switched to Ruby. Using Ruby and Rspec I was able to finish the Kata with plenty of time to spare.</p> <p>Thereupon began an evolution. Since I had time, I added more features to the kata. As I improved in my practice I found I had even more time, so I added even more features. I refined and polished. I refactored my refactorings. I trimmed keystrokes, and learned many new keyboard shortcuts in the process. I completely abandoned the mouse; and then later reacquired it for flourishes and highlights (but never for actual coding).</p> <p>Week after week, I set aside 30 minutes or so every day to practice, and practice, and practice&#8212;just the way I used to practice my Jiu Jitsu Katas. I would practice on airplanes while flying to clients. I would practice in bed with my laptop in my lap. I would practice late at night in hotel rooms after a long day consulting for clients. I would practice early in the morning before shower and breakfast. And the practice started to pay off.</p> <p>Ten weeks later I finally decided I was ready to create a screencast. I reduced my screen resolution to 1024X768. I configured <a href="http://www.ambrosiasw.com/utilities/snapzprox">SnapZ ProX</a> to record the whole screen at 80% size. And I began to record.</p> <p>Performing a coding kata in time to music is a <em>very difficult thing to do</em>. Maintaining the timeline is <em>critical</em>. There are very few errors that you can effectively recover from. If you miss a stroke, the whole sequence melts down. And melt down it did. Over and over and over again. I spent weeks trying to record a reasonably good session. I must have done hundreds of takes. It was <em>very</em> frustrating.</p> <p>But day by day I got better and better at it. Finally, after weeks of trying, I got what I consider to be a recording that, though not perfect, is good enough to present. You can watch that recording <a href="http://katas.softwarecraftsmanship.org/?p=71">here</a>.</p> <p>Has this paid off in the regular programming I do? I think it has. My mouse usage is much less than it used to be. I know a much larger number of keyboard shortcuts than I used to, and I can use them almost instinctively. My typing and accuracy have improved quite a bit, and I now type more punctuation and number keys without looking. So, yes, I think the effort has paid off; though I&#8217;m not at all sure the payoff compensates for the effort.</p> <p>But something else compensates for the effort. Making this recording was <em>fun</em>&#8212;it was a <em>lot of fun</em>. And that&#8217;s probably the real answer to the question posed in the title of this blog.</p> Sat, 21 Nov 2009 04:32:00 -0600 urn:uuid:b1c40077-fac6-4dd9-bc7f-0f988f020569 Uncle Bob http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas Uncle Bob's Blatherings Software Craftsmanship "What's all this nonsense about Katas?" by plastic injection mold <p>Intertech Machinery Inc.</p> <p>With more than 25 years of experience, Intertech provides an extensive integrated operational ability from design to production of molds 100% made in Taiwan. Additional to our own mold making factory, we also cooperate with our team vendors to form a very strong working force in Taiwan.</p> <p>Main Products:</p> <p>Injection Mold, Silicone Molding, Rubber Mold, Silicone molding, PC High-Gloss Plastic Mold, Die Casting Mold, Silicone Mold, Silicone Rubber Mold, Liquid Silicone Rubber , Cosmetic Packaging Mold, Medical Products Mold, Engineering Plastic Molds, Home Appliances Mold, etc&#8230;</p> Mon, 23 Jul 2012 22:58:32 -0500 urn:uuid:6ac45bef-836f-43e8-af41-4cfe570776ec http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-235323 "What's all this nonsense about Katas?" by burberry sale <p>I love reading your blog good. I can provide you with invaluable information. Fell intothis opportunity to blog, but I&#8217;m sure glad I clicked the link. You must answer all the questions I have been scrambling to answer for some time. Will come back to this moretrouble.</p> Fri, 13 Jul 2012 03:07:12 -0500 urn:uuid:bf0aaa39-3aa5-44db-b5c5-3f33bf880c32 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-234060 "What's all this nonsense about Katas?" by dani <p>It is very useful and informative blog post. I enjoyed reading it</p> Fri, 13 Jul 2012 00:45:45 -0500 urn:uuid:2ed04de8-5a41-446d-bf91-883651d61044 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-234011 "What's all this nonsense about Katas?" by dani <p>It is very useful and informative blog post. I enjoyed reading it</p> Thu, 12 Jul 2012 23:54:20 -0500 urn:uuid:f30944e2-bd67-4114-a42d-ea6e5ea02e1e http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-234010 "What's all this nonsense about Katas?" by insan <p>Thank you for this great article. I have read it and it truly is very useful.</p> Thu, 12 Jul 2012 23:48:21 -0500 urn:uuid:4f2380bc-da1e-40fe-b6c4-b773535e9320 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-234007 "What's all this nonsense about Katas?" by insan <p>Thank you for this great article. I have read it and it truly is very useful.</p> Thu, 12 Jul 2012 23:22:00 -0500 urn:uuid:75a86ba8-cc63-4784-960a-f4b7ece3a5f2 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-233994 "What's all this nonsense about Katas?" by raihan <p>Good things always make people so like, could not help but want to have it</p> Wed, 11 Jul 2012 02:27:17 -0500 urn:uuid:51f268d7-4dd7-4db0-862f-08602174dfcc http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-233509 "What's all this nonsense about Katas?" by surya <p>You are so talented in writing. God is really using you in tremendous methods. You are doing a great job! This was a wonderful article.!thank you</p> Tue, 10 Jul 2012 01:39:56 -0500 urn:uuid:9cec9402-f153-4d38-bb15-54ee7286eb32 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-233264 "What's all this nonsense about Katas?" by tita <p>I am happy to find this post Very useful for me, as it contains lot of information. I Always prefer to read The Quality and glad I found this thing in you post. Thanks</p> Tue, 10 Jul 2012 01:37:19 -0500 urn:uuid:f8b0f7c4-d648-428b-a5c0-48a3017cc5dd http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-233263 "What's all this nonsense about Katas?" by Cap Mold <p>With more than 20 years of experience, Intertech provides an extensive integrated operational ability from design to production of molds 100% made in Taiwan. Additional to our own mold making factory, we also cooperate with our team vendors to form a very strong working force in Taiwan.</p> <p>For the overseas market, we work very closely with local representatives in order to take care of the technical communication and after-sales service to our customers. We also participate in the EUROMOLD &#38; FAKUMA exhibitions and meet our customers every year in Europe. By concentrating on mold &#8220;niche markets&#8221;, we play a very useful mold maker role from the Far East whenever customers want to develop their new projects. We provide services from A to Z to our customers on a very economic cost and effect basis.</p> Mon, 18 Jun 2012 01:42:42 -0500 urn:uuid:633e3946-79fd-4d20-8998-a6efa349a369 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-229860 "What's all this nonsense about Katas?" by Tom Ford Sunglasses <p>Chopard  sunglasses had all  glamorous elements with  metal chain arm,<a href="http://www.tomford-sunglasses.co.uk/" rel="nofollow"><strong>Tom Ford Eyeglasses</strong></a>  heart strass and diamente.Loewe don  signature  anagrams  arranged along the temple or fixed on the hinges for  aviator and wide-eyed sunglasses.<a href="http://www.tomford-sunglasses.co.uk/" rel="nofollow"><strong>Tom Ford</strong></a> elegant oversized and gladiators came  in various shades colours, contra tone thick frame or dual-toned temples.<a href="http://www.tomford-sunglasses.co.uk/" rel="nofollow"><strong>Tom For Sunglasses</strong></a></p> Fri, 08 Jun 2012 03:40:22 -0500 urn:uuid:be710765-851d-4c43-8abe-d302fda36996 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-228642 "What's all this nonsense about Katas?" by Injection mold <p>Intertech Machinery Inc. provides the most precise Plastic Injection Mold and Rubber Molds from Taiwan. With applying excellent unscrewing device in molds,</p> <p>Intertech is also very professional for making flip top Cap Molds in the world. Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Molds for their worldwide customers.</p> Thu, 17 May 2012 04:10:11 -0500 urn:uuid:4aa7db66-4576-449e-ad42-6b021f0d463c http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-225047 "What's all this nonsense about Katas?" by http://www.taiwanmoldmaker.com/ <p>Intertech Machinery Inc. provides the most precise Plastic Injection Mold and Rubber Molds from Taiwan. With applying excellent unscrewing device in molds,</p> <p>Intertech is also very professional for making flip top Cap Molds in the world. Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Molds for their worldwide customers.</p> Tue, 15 May 2012 00:39:45 -0500 urn:uuid:0b04d0ee-ba18-441e-babf-0db23d1997e4 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-224469 "What's all this nonsense about Katas?" by vrnjacka-banja.co.rs <p>I just like the approach you took with this subject.</p> Mon, 14 May 2012 09:40:58 -0500 urn:uuid:54d1b581-59f2-484a-9f68-8fe088bc603d http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-224375 "What's all this nonsense about Katas?" by michael <p><a href="http://myboatplans.net" rel="nofollow">http://myboatplans.net</a> <a href="http://photosofistanbul.com" rel="nofollow">http://photosofistanbul.com</a> thank you</p> Fri, 20 Apr 2012 13:27:36 -0500 urn:uuid:4900b15b-058b-4572-8237-7bf9e7a47cbb http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-218936 "What's all this nonsense about Katas?" by http://myboatplans.net <p>nice post</p> Fri, 20 Apr 2012 13:26:28 -0500 urn:uuid:e7193371-8bfb-40ca-a7b7-a35434d588fa http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-218935 "What's all this nonsense about Katas?" by pune tourism <p>I have been looking for content like this to get a research project I are working. Thanks very considerably.</p> Fri, 13 Apr 2012 05:19:04 -0500 urn:uuid:9b1bd5da-dc02-466f-ad6c-db2bf907a174 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-217034 "What's all this nonsense about Katas?" by PDF Editor Mac <p>I always learn something new when I come to this blog, enjoy the photos and videos too, but I never have said thanks. pdf editor for mac, edit pdf on mac os</p> Wed, 28 Mar 2012 01:28:53 -0500 urn:uuid:2fb05004-a3fa-4e1c-8fdc-f0417f436308 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-213459 "What's all this nonsense about Katas?" by youngbrown <p>Thanks for the information, I&#8217;ll visit the site again to get update information <a href="http://www.indiaplaza.com/" rel="nofollow">online shopping</a></p> Tue, 27 Mar 2012 00:47:56 -0500 urn:uuid:b3db5292-0231-45e2-9ff6-46bddab57f72 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-213214 "What's all this nonsense about Katas?" by torte <p>Thanks for sharing such a useful information, will be checking out more from yours.</p> Mon, 26 Mar 2012 08:21:51 -0500 urn:uuid:ea6feccb-5e8a-41cc-ac2f-9458d329c608 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-213053 "What's all this nonsense about Katas?" by ada <p><a href="http://www.allwindturbine.com/products_info/H2-7-500w-wind-generator-for-home-129702.html" rel="nofollow">http://www.allwindturbine.com/products_info/H2-7-500w-wind-generator-for-home-129702.html</a></p> <a href="http://www.allwindturbine.com/products_info/H2-7-500w-wind-generator-for-home-129702.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/H2-7-500w-wind-generator-for-home-129702.html" rel="nofollow">H2.7-500w wind generator for home</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> <p><a href="http://www.allwindturbine.com/products_info/Wind-Solar-Hybrid-System-wind-generator-128575.html" rel="nofollow">http://www.allwindturbine.com/products_info/Wind-Solar-Hybrid-System-wind-generator-128575.html</a></p> <a href="http://www.allwindturbine.com/products_info/Wind-Solar-Hybrid-System-wind-generator-128575.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/Wind-Solar-Hybrid-System-wind-generator-128575.html" rel="nofollow">Wind-Solar Hybrid System wind generator</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> <p><a href="http://www.allwindturbine.com/products_info/windmill-126715.html" rel="nofollow">http://www.allwindturbine.com/products_info/windmill-126715.html</a></p> <a href="http://www.allwindturbine.com/products_info/windmill-126715.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/windmill-126715.html" rel="nofollow">windmill</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> <p><a href="http://www.allwindturbine.com/products_info/wind-turbine-generator-128880.html" rel="nofollow">http://www.allwindturbine.com/products_info/wind-turbine-generator-128880.html</a></p> <a href="http://www.allwindturbine.com/products_info/wind-turbine-generator-128880.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/wind-turbine-generator-128880.html" rel="nofollow">wind turbine generator</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> <p><a href="http://www.allwindturbine.com/products_info/wind-turbine-generator-128886.html" rel="nofollow">http://www.allwindturbine.com/products_info/wind-turbine-generator-128886.html</a></p> <a href="http://www.allwindturbine.com/products_info/wind-turbine-generator-128886.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/wind-turbine-generator-128886.html" rel="nofollow">wind turbine generator</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> <p><a href="http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html" rel="nofollow">http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html</a></p> <a href="http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html" rel="nofollow">wind-solar hybrid system wind generator</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> <p><a href="http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html" rel="nofollow">http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html</a></p> <a href="http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html" rel="nofollow"> </a> <a href="http://www.allwindturbine.com/products_info/wind-solar-hybrid-system-wind-generator-128910.html" rel="nofollow">wind-solar hybrid system wind generator</a> <a href="http://www.allwindturbine.com" rel="nofollow"></a> Fri, 23 Mar 2012 04:29:50 -0500 urn:uuid:3db39adb-a3a8-4417-8bc7-4aed29b996a5 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-212404 "What's all this nonsense about Katas?" by Upcoming projects in gurgaon <p>Gangaurrealtech use his skills, energy and creative spirits to bring novelty into real estate and other social assets.</p> Tue, 20 Mar 2012 07:51:08 -0500 urn:uuid:b8b71535-4589-40de-8044-8f8889b27dd8 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-211688 "What's all this nonsense about Katas?" by Lauren SEO Pinch <p>I am not sure where this buzz was, but this is the first time I have heard of katas and the post is over 2 years old. I have always used the keyboard more often than the mouse, so it is good see more people doing this.</p> Sun, 18 Mar 2012 23:54:05 -0500 urn:uuid:b674b979-7b6b-49da-9b39-bc870d2bf2ce http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-211245 "What's all this nonsense about Katas?" by cheap belts <p>Many people enjoy <a href="http://www.cheapbeltsale.com/" rel="nofollow"><strong>cheap Gucci belts</strong></a> for themselves. Even other popular <a href="http://www.cheapbeltsale.com/" rel="nofollow"><strong>leather belts</strong></a> such as <a href="http://www.cheapbeltsale.com/" rel="nofollow"><strong>cheap Hermes belts</strong></a> are on sale now.</p> Fri, 16 Mar 2012 19:42:47 -0500 urn:uuid:c8eccbdc-f45d-459a-b5e4-48176c53addb http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-210847 "What's all this nonsense about Katas?" by beads online <p>yes</p> Fri, 09 Mar 2012 03:56:32 -0600 urn:uuid:893be689-1b34-4e72-a39f-185d2fde1f39 http://blog.objectmentor.com/articles/2009/11/21/whats-all-this-nonsense-about-katas#comment-209323