Coding Katas

Coding Katas

The wax on, wax off of learning new things in programming

By Daniel Zavala and Hugo Marin

At the last RbR (Release before Ready), Hugo Marín asked me how to evolve his JiuJitsu app. In the previous event he had learned Next.js, now he wanted to add a database and a mobile version. "PostgreSQL or MongoDB?", he asked me.

That conversation not only inspired this post, but when I shared it with him for review, Hugo gave me back a deep reflection on the true meaning of systematic practice that you'll find at the end.

I suggested Hugo create a notes app. Not because he needs another notes app, but to understand what MVC is in Next.js:

  • What is a View?
  • What is a Controller?
  • How does the data model work?

That conversation reminded me of something fundamental: Coding Katas.

What are Coding Katas?

In martial arts, a kata is a choreographed sequence of movements practiced repeatedly to perfect technique. In programming, a Coding Kata is a programming exercise designed to improve skills through deliberate practice.

The key isn't building something new each time, but building the same thing with different technologies to understand their real advantages and disadvantages.

Why Katas Work

When you build the same app multiple times with different technologies, you start noticing patterns:

  • How does state management differ between React and Vue?
  • What's the real difference between SQL and NoSQL for this use case?
  • How does deployment complexity change between platforms?

Instead of theoretical comparisons, you get practical understanding through experience.

The 6 Essential Katas

Here are the katas I recommend, ordered by complexity:

Kata 1: TODO List

Goal: Understand basic CRUD operations and state management Technologies to try: React, Vue, Svelte, Angular What you'll learn: Component patterns, state management, event handling

Kata 2: Notes App with Database

Goal: Learn backend integration and data persistence Technologies to try: Next.js + PostgreSQL, Express + MongoDB, Django + SQLite What you'll learn: API design, database modeling, authentication basics

Kata 3: Chat Application

Goal: Master real-time communication Technologies to try: Socket.io, WebRTC, Firebase Realtime Database What you'll learn: Real-time updates, connection management, scalability challenges

Kata 4: E-commerce Product Catalog

Goal: Handle complex data relationships and search Technologies to try: Elasticsearch, GraphQL, REST APIs What you'll learn: Search optimization, data relationships, performance considerations

Kata 5: Mobile + Web Sync

Goal: Cross-platform development and synchronization Technologies to try: React Native + Web, Flutter + Web, PWA What you'll learn: Platform differences, offline capabilities, sync strategies

Kata 6: Multi-cloud Deployment

Goal: DevOps and infrastructure understanding Technologies to try: AWS, Google Cloud, Vercel, Railway What you'll learn: Deployment strategies, monitoring, cost optimization

How to Practice Katas

  1. Choose your kata: Start with TODO List if you're new to a technology
  2. Set a time limit: 2-4 hours maximum per implementation
  3. Focus on core features: Don't get distracted by polish
  4. Document differences: What was easier/harder with each technology?
  5. Share your learnings: Teach others what you discovered

The AI Era Advantage

With AI coding assistants, katas become even more powerful. You can:

  • Ask AI to explain technology differences while building
  • Get help with boilerplate code to focus on concepts
  • Quickly prototype with multiple technologies
  • Learn best practices from AI suggestions

The key is using AI as a learning accelerator, not a replacement for understanding.

Hugo's Reflection on Practice

Hugo's addition to this post:

When Daniel shared this draft with me, it made me think about my JiuJitsu training. In martial arts, we don't practice katas just to memorize movements - we practice them to internalize principles that emerge under pressure.

The same applies to coding katas. When you build the same app multiple times, you're not just learning syntax - you're internalizing design patterns, understanding trade-offs, and developing intuition about when to use each tool.

In JiuJitsu, there's a saying: "You don't rise to the level of your expectations, you fall to the level of your training." In programming, when you're under deadline pressure or facing a complex problem, you'll default to what you've practiced most.

That's why katas matter. They're not about building impressive projects - they're about building reliable instincts.

Starting Your Kata Practice

Don't wait for the perfect moment. Pick a technology you want to learn, choose the TODO List kata, and give yourself 2 hours to build it.

The goal isn't perfection - it's practice. Each repetition teaches you something new, even if you're building the same thing.

Remember: mastery isn't about knowing everything, it's about understanding fundamentals so deeply that you can adapt them to any situation.

Start your first kata today. Your future self will thank you.