Lessons Learned From The Bowling Game Kata: How To Design?
What if we discover a completely new way of designing software? Would we be able to grasp it?
Alright, let’s do this one last time. This is the Bowling Game Kata, created by Robert C. Martin. You might think you know the rest of the story, but this time, I’ll tell you it’s not just any kata. Yes, it’s full of challenges and problems, indeed it offers the opportunity to learn new techniques, and yes, it can become a significant challenge. But it gives you the solution. Now you have code, a test, steps, and even a design. Let it be your ‘friendly kata guide’, protecting you from pitfalls. Now you can face your inner demons, compare your technique to his, take what you like, and… here’s the twist — you’re not just following steps, you’re invited to innovate. Merge your creativity with this structure, and who knows? Apply to your problem, and find impressive solutions.
Not like the typical design
The first time I tackled the kata, everything I knew about software design and architecture was completely different. So different, in fact, that I couldn’t even perceive the greatness of this kata.
And it’s not surprising. Because, after all, what are we taught? Let’s think about it — if we think of courses, like bootcamps, or even longer ones, but only aimed at learning to program, we see little about design. However, when design takes a more significant role, it is approached in titanic terms. At university, we are taught to plan on a grand scale. From top to bottom, several levels, requirement gathering, analysis, design, and thousands of more documents. All under the belief that a good initial design is necessary to allow software to be born, grow, and survive. This is the Big Bang development style.
Want to make an online store? What types of users will you have? What will each do? You’ll have a backoffice, right? And what about shipping? How do warehouses operate? What are acceptable order times? And sales volumes? Where will you sell? In how many countries? How will you ship? How will you handle payments? Will you do marketing? Data analysis and big data? What about customer service? Security measures? Compliance with different regulations in…