It’s no news that practice is the only path to being truly great at something. The art of software development is no different. The demand for programmers the way it is, however, means that a lot of folks jump into their careers head first with a certain level of formal subject knowledge, but very little practical experience. Likewise, even experienced developers are sometimes so busy that not enough time gets devoted to the practice of the craft. Dave Thomas recognized this problem and came up with a collection of short, defined practice exercises for software developers, the Code Kata:

Code Kata is an attempt to bring this element of practice to software development. A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. I add a new kata every week or so. Invest some time in your craft and try them.

Some of the example scenarios are expressed in Ruby, but aside from that they are language agnostic. What I like is that the exercises cover a wide breadth of scenarios, some of which I encounter daily in my work, and some only rarely. Even working through the problems and roughing out a solution in my head seems to be a useful tool for keeping the problem solving faculties sharp. Trying to solve problems like these involves no real deadlines or pressure, which is the necessary environment for devoting a little time regularly to focus on honing your skills.

Do you use any other resources for staying on top of your game? Let us know in the comments.

Code Kata