What is a Kata?

The concept comes from the martials art world, it’s a movement or technique you multiple times , so many times that it becomes natural, automatic.

The term "Code Kata" was created by Dave Thomas, co-author of the book The Pragmatic Programmer. He joined the concept of Kata into software development.

A kata is different from a challenge, I see some sites using those terms interchangeably, I think they are losing the key aspect of a kata: repetition.

You have a problem, and you don’t know it!

Why do I believe katas are useful to learn/improve programming?

Because I know many developers, and I saw a pattern between them (me included): we are problem solvers , that's what we get paid for! to solve problems, but when we find a solution to solve a problem, we tend to forget how we did it! (especially when we don’t repeat that solution often), so, later when we face the same problem, we must find the solution all over again.

Dig Deeper

Solving the problem at hand is valuable, of course, but is more to it than we see in plain sight, if we could invest a little more time and reap more value from our effort, we can level-up our skills and increase our speed and productivity as a developer.

That's what we should do, create katas so we can practice deliberately ( https://sentio.org/what-is-deliberate-practice) the creation of an app feature, or using a new tech, or using a technique, and so on, so in the future you remember it easier.

Katas in Practice

Is this real?, sure it is!, you are already doing it!, do you google how to create a function?, no!, do you google how to create a class?, no!, do you google how to use a ternary operator?, no!, do you google how to center a div?.... well… yes, maybe we do google that one 🤣, but all those things you remember automatically it’s because you repeated them many times, and you will remember them if you keep doing them.

10 Benefits of Katas

  1. Muscle Memory
  2. You develop muscle memory when solving the problem the kata solves, once you master it you will use it later almost without thinking.

  3. No Insecurities
  4. With repetition comes confidence. You lose the fear of something going wrong, and if it does, you have a better idea of what is wrong.

  5. Creativity and Curiosity
  6. When you repeat the kata many times, you will get bored, and what comes after boredom? creativity and curiosity.

    You will begin to change the code and play with it to do different things, finding improvements or other katas.

  7. Remember the Problem
  8. When you identify what problem a kata solves, it’s easier to find similar problems to solve with it in the future or in another environment.

  9. New Problem? new opportunity!
  10. You learned that problems have more value than just solving it, so when you find new problems, you create new katas from them. You start losing the “problem solved!, next!” way of thinking.

  1. Deep Learn
  2. Doing the kata you identify pain points, or black boxes, parts that you don’t fully understand, or you don’t know why they are there, then you research or study about that part and understand it, and the big picture becomes clearer.

    Tip: talk while doing the kata, as if you were teaching someone, it helps identifying black boxes.

  3. Kill the Impostor
  4. When you master the kata, your self-esteem increases, you KNOW you have the skill to solve that specific problem, by yourself, and fast. Goodbye imposter syndrome.

  5. Satellite Learning
  6. When practicing the kata you do other kind of work surrounding the problem you want to solve, and that’s practice too, improving your skills on the programming language.

  7. Room for Improvement
  8. Once you master the kata, you identify improvements opportunities, or how to solve the same problem in a different/better way, you can update the kata, or create a different one (more is better).

  9. Flow State
  10. While doing the kata you can easily get into flow state (https://en.wikipedia.org/wiki/Flow_(psychology)), that sweet spot all developers now, when you feel full focused, very active, doing great progress, been very productive, being “in the zone”.

    This is because your skill level has increased, and you are motivated to solve the problem as fast as possible, it feels good!.

    Warning: You will likely experiment flow state after 3 or more repetitions. And getting to the second or third repetition is the hardest part.

Audience

We aim to reach developers of all ages and experience.

Katas will be published with knowledge requirements, but in general we require developers to be beginners (juniors) to competent (middle) depending on the level of the kata.

The level of the kata will be published with it (easy, normal, or hard) these levels are defined from the point of view of a middle or senior developer.

We can’t cover all technologies, so we reduced the scope of our publications to these:

  • Javascript
  • NodeJS
  • RxJS
  • Angular
  • Typescript
  • Git
  • CSS
  • HTML
  • Cloud
  • NestJS
  • TypeORM
  • Docker
  • Tips/Tricks
  • New Tech

Why?, because we know a thing or two about those techs, that doesn’t mean that we can add (or remove) techs from the list.

Features of a Kata

The published katas will have these features:

  • It must have setup requirements (dependencies or other)
  • It must have a knowledge requirement
  • It must have a level: Easy, Normal or Hard
  • It must have a clear and short goal to achieve
  • It must have instructions, a solution file, or other resource
  • It must have a time limit to solve it
  • It could have extra goals (optional features to add)
  • It could have important terms
  • It could have extra sources of information

An example:

The Process

A kata will be published weekly, with a goal, the setup needed (packages, libs, versions, etc.), a first solution (“first” because the kata can be improved), and a time limit to complete the kata (among other data).

Your job is to do this:

  1. Prepare your setup (install all needed software)

  2. Follow the kata instructions from blog

  3. Record your time

  4. If you completed the kata in the allowed time or less without looking at the instructions, then you mastered the kata!

  5. If you didn’t complete it in the allowed time or less, delete your files and go back to step 2.

Workflow

Notes

It’s very important to DELETE your attemptto complete the kata (delete even if you succeeded but in less than the time allowed), that forces you to practice everything again and lose the “problem solved!, next!” thinking.

The idea is that you must complete the kata all by yourself, without the help of the instructions and in the given time or less.

Tip: Even if you finish the kata on time and without following the instructions, I recommend doing the kata 2 or 3 times more to solidify the knowledge.

Services

Websites

$2,400

You may want to explore Too CSS for great collection of free HTML CSS templates.

Discover More

Branding

$1,200

You can explore more CSS templates on TemplateMo website by browsing through different tags.

Discover More

Ecommerce

$3,600

If you need a customized ecommerce website for your business, feel free to discuss with me.

Discover More

SEO

$1,450

To list your website first on any search engine, we will work together. First Portfolio is one-page CSS Template for free download.

Discover More

Projects

Branding

Zoik agency

Photography

The Watch

Website

Polo

Say Hi

Services Stay connected Start a project

I’m available for freelance projects

About

Joshua is a professional web developer. Feel free to get in touch with me.

Email

hello@josh.design

Call

120-240-9600