Explore Awesome Katas (of the code variety)

Continuing the discussion from Process the meta awesome list:

I read through a series on programming ideas @tim pointed me to and I got a lot from it. So I’m thinking this might be worth processing. Maybe make a cataglog of katas… a katalog.

Code katas are pretty neat. The ones I did were geared towards the audience of “I’m a programmer who knows other languages but needs to learn this one.”

Man I have to share that book on here, the patterns one. It’s so great.

1 Like

@tim’s single vote shot this up to the top of Ha.. hahaha. Awesome? :pfft:, so let’s get started! :slight_smile:

A kata, or code kata, is defined as an exercise in programming which helps hone your skills through practice and repetition. Dave Thomas @pragdave, started this movement for programming. This project aims to provide you with a list of some kata exercises that I’ve found in the Internet and the Github community. These exercises vary from general to more complex algorithms and real life situations for you to try using your preferred programming language. Remember that code katas are not quizzes or puzzles. You should not only try to ‘solve’ it, but find a very good solution, following best practices of the programming language you are using.

Unfortunately, Thomas’ website has tracking from Google, Twitter, and Disqus. Unfortunate as a bunch of these katas on the list are from there, and they are pretty neat. E has the following to say:

How do you get to be a great musician? It helps to know the theory, and to understand the mechanics of your instrument. It helps to have talent. But ultimately, greatness comes from practicing; applying the theory over and over again, using feedback to get better every time.

How do you get to be an All-Star sports person? Obviously fitness and talent help. But the great athletes spend hours and hours every day, practicing.

But in the software industry we take developers trained in the theory and throw them straight in to the deep-end, working on a project. It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.

The Kata

What makes a good practice session? You need time without interruptions, and a simple thing you want to try. You need to try it as many times as it takes, and be comfortable making mistakes. You need to look for feedback each time so you can work to improve. There needs to be no pressure: this is why it is hard to practice in a project environment. it helps to keep it fun: make small steps forward when you can. Finally, you’ll recognize a good practice session because you’ll came out of it knowing more than when you went in.

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.

Remember that the point of the kata is not arriving at a correct answer. The point is the stuff you learn along the way. The goal is the practice, not the solution.

Also, this image:


1 Like

Since there are distinct series of katas, and katalog is almost too punny to pass on, I’m gonna create a new quest domain, and load it up with the resources from here. And then the kataing shall begin!


1 Like

This list has a clear contribution guide (CONTRIBUTING.md):

Contribution Guidelines

  • To add to the list: Submit a pull request
  • To remove from the list: Open an issue
  • If you find a particular set of katas, you are welcome to submit a new section to the list following the [List Name](link) format.
  • For any problem that you consider to be a good programming exercise, add it to the others section.

Reporting issues

Please open an issue if you find anything that could be improved or have suggestions for making the list a more valuable resource. Thanks!

I consider that a feature. What should such a feature be called? “Contribution Guidelines”? :thinking:

Added “contribution guide” as a feature: https://allthe.codes/interi/awesome-lol/raw/commit/dedd833a2fa1eb1e9600c50b17076d36644d213d/awesome-katas.md :slight_smile:

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.