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
- Muscle Memory
- No Insecurities
- Creativity and Curiosity
- Remember the Problem
- New Problem? new opportunity!
You develop muscle memory when solving the problem the kata solves, once you master it you will use it later almost without thinking.
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.
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.
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.
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.
- Deep Learn
- Kill the Impostor
- Satellite Learning
- Room for Improvement
- Flow State
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.
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.
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.
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).
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.
Motivations
I found value in doing katas, and I want to share it, they can help people to...
- improve their coding skills
- overcome fears we developers face
- foster creativity and experimentation
- improve speed/productivity
Other motivations:
Teach and get in touch with the dev community.
Improve my skills, because teaching is the best way to learn.
Meet awesome people.
Be a dev celebrity! (for me that’s 1000 followers on twitter 🤣)
Make a living, yes, I’m trying to earn something out of this (we must pay the bills, right?).
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:
Prepare your setup (install all needed software)
Follow the kata instructions from blog
Record your time
If you completed the kata in the allowed time or less without looking at the instructions, then you mastered the kata!
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 MoreBranding
$1,200
You can explore more CSS templates on TemplateMo website by browsing through different tags.
Discover MoreEcommerce
$3,600
If you need a customized ecommerce website for your business, feel free to discuss with me.
Discover MoreSEO
$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 MoreSay Hi
I’m available for freelance projects
Joshua is a professional web developer. Feel free to get in touch with me.
Email Call