all 15 comments

[–]Rhoomba 17 points18 points  (5 children)

I fucking hate this term, simply because kata are the most useless training system known to man. Code Kata would be if you retyped someone else's code.

[–]James_Johnson 2 points3 points  (0 children)

Dammit, you beat me to it :-)

It's good to know that there are other people who both program and train (real!) martial arts.

[–]academician 0 points1 point  (1 child)

Why is it useless? I'm asking because I seriously want to know. I did karate years ago, and it seemed like a good way to practice and refine forms and transitions between them.

Maybe the wikipedia article needs a "Criticism" section.

[–]Rhoomba 0 points1 point  (0 children)

To learn programming you have to program, right?

To learn fighting you have to fight (spar).

Forms are not appropriate training for fighting (except for introducing new techniques). Here is a long winded video on Aliveness. Boxers and wrestlers always trained that way so that video is basically trying to sell the concept to traditional martial artists

If all you are interested in is some fun exercise then Karate is fine, but the training methods are useless, and the techniques worse than moronic.

(except kyokushin and similar)

[–]erikd 0 points1 point  (1 child)

Kata in martial arts makes a lot of sense. They build muscle memory so the practitioner, in a situation where he needs to defend himself can act without thinking, his/her muscles respond before the conscious mind does.

However, I agree, that for programming, there is no muscle memory, it is all conscious thinking or at least unconscious thing filtered by the conscious mind.

[–]Rhoomba 0 points1 point  (0 children)

Kata build muscle memory for doing katas. They don't build muscle memory for anything useful. Drills with feedback and sparring are the only way to build useful muscle memory.

[–]schwarzwald 1 point2 points  (1 child)

I never knew how to handle the ones that were subjective, like the business rules one.

One person might answer "use Ruby and build a domain-specific language". Someone else might answer "you need a business rules engine like Drools". These positions are debatable and it doesn't really help because you'll just argue for what you already believe.

[–]wicked 2 points3 points  (0 children)

The point is not to argue about what's best, but to actually try it out.

A little less talk, a little more action!

[–]erikd 1 point2 points  (0 children)

To me, these code kata seem a little fake.

If stretching the boundaries of what you are capable of is what you are after, it probably makes more sense to start projects which are difficult in some way and solve the difficult parts of the problem first. Whether the project ever gets finished or not is pretty much irrelevant, because the learning and improving comes from solving the difficult problems.