Skip to content
In this page

Coffee Katas
Sipping coffee and solving problems

What are Katas?

A Kata is a training exercise common in Martial Arts (like Kuntao), that resembles a step-by-step choreography to practice and get familiar with specific movements. It can be practiced alone or in unison in a group when training.

This is a way to memorize and perfect the movements so that in the future you can do them naturally, without thinking.

Architectural Katas are exercises to get into the habit of building and evolving Software Architecture. They don't have a specific solution or a "right way" of building the architecture.

It's just a way to practice and familiarize yourself with discussing a problem, thinking about trade-offs, and choosing the right mix of solutions given each system's specific constraints and needs.

There are official rules to have a session, and there are plenty of examples on Neil Ford's Katas page and Ted Neward's Katas page.

Katas are a great way to practice System Design, it's the same process you would follow in a System Design interview but less stressful and there are no wrong answers, just learning experiences. It's also a great way to get context for about different architectures pretty quickly.

Coffee Katas

Brewing a good cup of coffee is a whole ritual. It takes time, anywhere from 10 to 25 minutes, depending on the brewing method and the number of cups.

Back when I was at Wizeline, we would go to the coffee area, start brewing a batch, and kick off the discussion and whiteboard problems and possible solutions while the coffee was brewing. In the beginning, just a few of us, the ones that were truly into coffee, but after a while, it became a team culture thing. Even the ones that didn't drink coffee would join the conversation.

A Dreamscape of a coffee team

A Dream of a Coffee Team.

Eventually, it evolved into a practice. We would let everyone know when it was Coffee Time, and whoever was free would join. Then we discussed either a problem we were trying to solve or problems we wished we had.

If a team was working on a specific architectural design, they would present their context, talk about their design and the approach they were going to use, and everyone else would share their critiques, similar experiences, and ways to go about that "type of problem."

If there were no designs or specific topics, we'd pick a Kata.

We would finish our coffee, close the discussion and go on with our days.

It was a terrific way of getting context from other teams, getting quick feedback, and iterating on designs without too much ceremony. Then you could follow up with specific individuals or squads and come back in the future and share how it all go.

It was a virtuous circle that revolved around coffee.