I’m always looking for ways to improve my programming skills. One approach that I’ve long been aware of is Dave Thomas’s code kata. A 'Code Kata' is a practice session on a given programming problem, much like Kata that is used to practice and refine some martial arts techniques.

Naturally I went looking for tools that would help me get me setup and running with code kata sessions. The first one that I found was the kata gem. This gives you a command line tool to start a new session and then takes you through different challenges for each session.

One tool that I recently found is codewars.com. I don’t even remember how I came across codewars but I’m so glad I did. It has lots of katas and in several different languages all categorised by difficulty 8 kyu - 1 kyu. It seems to have a reasonably big community, which is a plus. Highly recommended.

Another one, which I was pointed towards by a colleague is Ruby Koans. Ruby Koans is a project by the late Jim Weirich and it is more of a tool to learn Ruby but it is a nice approach to practicing techniques that you have maybe fallen out of the way of doing.

Other people have written about this topic. Jeff Atwood wrote up some really interesting points on his blog. Steve Yegge also posted an interesting article on comparing programming to other professions and asking why we seldom practice our profession as programmers.

UPDATE: Here is a list we can all contribute to.