Posted in

Code Kata: How to Become a Better Software Developer

Japanese culture influenced a lot of software and project management fields. Concepts like Lean, Kata, etc. has come from Japan. And we should admit, that they have improved the existing processes, increasing efficiency and satisfaction overall. So, what is Kata? Or Code Kata? Or Kata programming?

The word Kata is a Japanese word. Kata originally was a detailed choreographed pattern of movements practised either solo or in pairs. It is about teaching and training methods by which successful techniques were preserved and passed on. Nowadays it is implemented not only in martial arts but other industries as well.

What is Code Kata

For example, there is a term “ Code Kata in the software industry. It is an exercise in programming which helps software developers improve their skills through practice and repetition. A Code Kata term was coined by Dave Thomas, co-author of the book The Pragmatic Programmer, embracing Japanese concept of Kata in the martial arts. 

The basic goal of Code Kata or Kata programming is to also to preserve and transmit working techniques and master them. By practising in a repetitive manner, regardless of the industry, the learner develops the ability to execute those techniques in a natural, reflex-like manner. Here the idea is not only to learn whatever concept and do it automatically, here the idea is to learn the right concept, understand it and polish it. Be confident in what you are doing. Be a master in your field. 

Code Kata is about learning, about learning by doing. After doing a Code Kata, the developer should be able to execute and adapt learnt techniques under different circumstances, without thought or hesitation. This is the goal. 

All great software developers that we know are as good as they are because they practice all the time. Code Kata is not just for Junior developers and recent graduates; it is for everyone, who wants to learn and practice a new technique. Code Kata helps to know the theory and to understand the mechanics, by actually applying it in practice. 

Probably you faced this situation more than once in your life, when a software developer is assigned to the project with a good level of theory and zero practice, he is just thrown straight into the deep-end, working on the projects, which are new for him and he learns how to develop them by doing them. But do you think it is the right way to work? In my opinion, it is not; it is the same as driving a car. First of all, you need to pass the theory exam to be able to drive a car, yes! But then you also need to pass the practical exam to actually live the experience. Why do many companies skip this practical step? In our opinion Code Kata “ is an awesome chance to learn by doing, not harming anyone. It is a way to get ready for the project, to know what to expect and how to handle it. Maybe you will say, that in software development, not everything is white and black and there are a lot of things that influence, you can’t actually practice everything you will do in your job, in your project. You are right, but again, this is the same as driving a car, once you did the basics, you are more prepared to overcome obstacles. 

Code Kata is an attempt to bring this element of practice to software development. There are no specific rules for Code Katas; there can be Katas of 30 minutes or 3 hours, doesn’t matter, it all depends on the topic. The most important is to practice, practice and practice, be confident in what you are doing! Also, what I wanted to mention is that Code Kata is not just about programming, it is about thinking as well. It is about identifying issues behind programming and coming up with solutions to solve them. 

I am not alone in believing Code Katas are useful. Many TDD and BDD experts also share their opinion that these processes are best learnt by doing Code Kata1. It is a mistake to think that TDD and BDD can be learnt only by doing live projects because you put too much pressure on the learner, the pressure of having to deliver quality code using techniques they are not familiar with. It causes a lot of stress and anxiety. This stress results in developers becoming frustrated, making mistakes and potentially not putting into practice best practices at all. For example, what happens a lot is that to get things done, developers write the implementation and then tests, resulting in a very slow progress regarding TDD learning because first, you need to write a test and then the code. 

Mastering your skills shouldn’t be through competitive racing, live performances or deploying to production, these are the fruits of the labour. Before that comes hard work and practise. 

I hope you found this article useful because the final goal in software development is building working software! To be able to achieve it, you need to master best practices by practising them in a non-stressful environment, to think about them, to understand, to polish. Just doing without thinking is not sustainable, what is valuable is that developers understand what is behind the key practices, what are the advantages, disadvantages, solutions and consequences. 

I am a cmo at Apiumhub. Apiumhub is a software development company based in Barcelona that transformed into a tech hub, mainly offering services of mobile app development, web development & software architecture.

Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.