Kata lists
This post contains a collection of thoughts about coding katas.
A fair few are gripes - apologies for this negativity. I should start by saying I do love many aspects of the idiom:
- practice as play
- solving puzzles
- simple examples to unearth core ideas
- enjoying exploring multiple perspectives
But (perhaps because with passion comes a desire for perfection) I do find a few aspects of the movement irksome:
- Most trivially, the “software as martial arts” thing is way overblown. I’m sure some analogies work, but many seem stretched. I detect lame Neo aspirations / geek Zen tourism.
- More substantively, the form is very often used in combination with B/TDD. But the katas necessarily have a small scope and hence more algorithm-centered than typical code; so solving the problems often involves an “aha!” moment after which the implementation is kind of obvious. Because of this the driving that you do tends to be along a path you can see the end of. You get value from the refactoring safety net and in the micro-design decisions of test-driven development, but aren’t very likely to encounter the joys of test-driven design.
Right now I’m further feeling (quite unreasonably!) discontented by the recent wave of performance kata as seen at e.g. Katacasts. In principle these should be great - a chance to sit briefly with a fine programmer and watch them play through a problem that they understand well. (I really do appreciate people for giving it a go, and would recommend Bob Martin on Prime Factors despite the criticisms below!) But in practice I’ve found myself somewhat underwhelmed.
- My primary disappointment goes: “without saying.” The casts contain no commentary; the audio is simply classical music. The art of coding is interesting because there’s so many subtleties to the thought process. Thanks for the keyboard visualizations, but the keys that don’t get pressed are even more important than the keys that are! I want to hear the inner dialogue. Even better would be to hear a pair in genuine dialogue, point and counter-point. I believe the casters have good intentions and plan to add some commentary to some casts, but for me they currently lack their essence.
- My other qualm is the repetition and donkeywork in many of the specs/tests. This is perhaps partly another consequence of the “clever algorithm” computational nature of the kata. Most of the testcases/examples are “ok, now apply the one true function we’re writing to yet another input and expect this complicated result”.
That last bullet point at least provoked me into trying out some other testing approaches for one of the kata myself.

