Archive

Code Katas to Sharpen Your Skills

Written by UI-Staff

As I progress in my career as a software developer I often think about how I can continue to develop and enhance my skill set.  I’ve realized that staying sharp and improving with regard to the basics – algorithms and problem solving – as well as learning and remaining proficient in different languages and frameworks can be a daunting task.  It’s humbling to realize how much there is to know but it’s important to remember that even the best software developers don’t know everything and that we must always be willing to learn what we don’t know and re-learn what we haven’t used in a while.  In fact, keeping a sense of curiosity and discovery may be one of the most essential things in a career where the landscape of technology and the skill sets needed to get the job done are continually changing.  Not too long ago I began to investigate the concept of the Code Kata as a way to become a better developer. Learning on the job from day to day is valuable and necessary but for many reasons, it is not the optimal place to practice.

The Code Kata

A kata is a Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. The term form is used for the corresponding concept in non-Japanese martial arts in general.

The basic goal of kata is to preserve and transmit proven techniques. By practicing in a repetitive manner the learner develops the ability to execute those techniques and movements in a natural, reflex-like manner. Systematic practice does not mean permanently rigid. The goal is to internalize the movements and techniques of a kata so they can be executed and adapted under different circumstances, without thought or hesitation. A novice’s actions will look uneven and difficult, while a master’s appear simple and smooth. – Wikipedia

The term Code Kata was created by Dave Thomas, co-author of the book The Pragmatic Programmer.  The idea is to apply the underlying concepts of the traditional kata to the practice of software development.  Code katas are short coding exercises meant to be done every day.  By implementing code to solve the same problems, you are rehearsing your basic programming skills through repetition.  Code katas can be used to achieve a variety of goals such as learning a new language, improving TDD or practicing efficient algorithms for common and problems.

Getting Started

To get started is simple:

·         Set aside time where you will not be interrupted

·         Choose a kata that you would like to try

·         When complete, evaluate your implementation and how you can improve it

·         When attempting the same kata again try to improve on your last approach

Links to problems suitable for code katas:

Code Kata website

The Prime Factors Kata

The Bowling Game Kata

TDD Kata

Project Euler