The Diamond Kata

Defuse IF Workshop

Live Online with Francesco Cirillo
October 30 - 31, 2024
Wednesday to Thursday
08:30 AM EST - 12:00 PM EST (New York)
02:30 PM CEST - 06:00 PM CEST (Berlin)
04:30 PM GST - 08:00 PM GST (Dubai)
2 Days | 7 Hours Total | 3.5 Hours per Day

Register $199.00

Is This Workshop Right for You?

This workshop is ideal for senior developers, software architects, and those aiming to improve their design skills by learning and applying Test-Driven Development (TDD) and Anti-IF Programming while working on a real application: the Diamond Kata.

You’ll discover how to effectively apply TDD and Anti-IF Programming to let design abstractions emerge, lowering complexity and flattening the cost of change curve.

If you want to truly understand how TDD works beyond the Red-Green-Refactor mantra and how Anti-IF works to defuse the IF Strategy, this is the workshop for you.

    A
   B B
  C   C
 D     D
  C   C
   B B
    A              

What Makes this Workshop Unique?

In this Workshop, Francesco Cirillo shows how Test-Driven Development (TDD) and Anti-IF Programming can be applied to solve this kata in a way that prioritizes intentional design over algorithmic complexity, allowing for an adaptable and emergent solution.

  • No Thinking Ahead Required: Unlike conventional wisdom, this workshop will show you how to solve the Diamond Kata using TDD without the need for anticipatory thinking.
  • #NoIFStrategy: You’ll learn to approach the problem without relying on IF statements, avoiding overly complex and rigid code structures.
  • Real-World Approach: The Diamond Kata is treated as a real-world application, evolving through small, manageable steps, showing how abstractions emerge naturally through TDD.
  • TDD Is Enough: We'll demonstrate how TDD alone is sufficient to develop high-quality software, eliminating the need for additional methodologies like BDD or ATDD.
  • Emerging Abstractions: You’ll see firsthand how TDD leads to the emergence of powerful abstractions that reduce complexity and flatten the cost of change curve.
  • Interactive Learning: Francesco will alternate between explaining key concepts and live interactive sessions where we will discuss design challenges and reflect on the decisions made throughout the process. You’ll also engage in live coding sessions where design decisions are demonstrated.

The Challenge

  • The Diamond Kata challenges developers to generate a diamond-shaped pattern through code
  • Software Design Gurus like Seb Rose, Alistair Cockburn, Jon Jagger, George Dinwiddie, Emily Bache, Nat Price, Matteo Vaccari and Ron Jeffries 1 and 02 have tackled this kata, but many believe TDD requires anticipatory thinking to succeed here.
  • The Diamond Kata is a challenging problem for Test-Driven Development (TDD). Many attempts at solving it result in algorithmic, rigid, obscure solutions full of IF statements and FOR loops—solutions that focus on manipulating characters rather than the intentional design of abstractions that can evolve and adapt.

Program Outline

Day 1: Foundations and First Steps: TDD and Anti-IF

Laying the Groundwork for Emergent Design

Duration: 3.5 Hours

Introductions and Workshop Overview (30 minutes)

  • Participants introductions and setting expectations
  • Overview of the workshop: What to expect over the course of the two days

Module 1: Introduction to TDD and the Diamond Kata (1 hour)

  • How to Excel in Software Product Development?
  • Overview of TDD as a design tool.
  • Overview of Anti-IF Programming as a design approach.
  • Introduction to the Diamond Kata: challenges and misconceptions.
  • Tools, software, and environment setup for TDD and troubleshooting.

Module 2: First Steps in TDD (1 hour)

  • Writing the first test and finding the simplest solution.
  • Live coding session: Demonstrating how to write and pass the first test
  • Adding more tests and beginning to evolve the design through TDD.
  • Interactive discussion: Reflecting on early design decisions and potential challenges.

Module 3: Shaping the Diamond (1 hour)

  • Explaining the key design decisions and challenges involved in the various steps
  • Live coding: Demonstrating the main design challenge.
  • Reflection on emergent design principles and how they shape the solution.

Day 2: Mastering the Diamond Kata in TDD

Refining and Expanding Your Design Skills

Duration: 3.5 Hours

Module 4: Polishing the Diamond (1.5 hour)

  • Fine-tuning the solution by identifying new abstractions.
  • Enhancing the design for flexibility and adaptability.
  • Live coding to “polish” the solution by simplifying and refining it.
  • Discussion on different approaches and design principles.

Module 5: Beyond the Diamond – Etudes (1 hour)

  • Can we make the diamond move? Exploring dynamic behavior.
  • Experimenting with drawing other shapes: Applying what we’ve learned.
  • Reflection: Why our diamond is adaptable even without anticipation, and how this flexibility relates to real-world software design.

Module 6: Observations and Key Insights (30 minutes)

  • The Misconception of Anticipatory Thinking and the Diamond Kata.
  • Why We Don’t Need BDD, ATDD, or any other *TDD
  • Why Clean Code and SOLID Aren’t Enough
  • Why Red-Green-Refactor Isn’t Enough

Q&A and Wrap-Up (30 minutes)

  • Open forum for participant questions and reflections.
  • Final thoughts and next steps for applying TDD and Anti-IF in practice.
  • Farewell and closing remarks.

Workshop Objectives

Designing for Change: TDD, Anti-IF, and Emergent Design

  • Master TDD as a Design Tool: Learn how to use Test-Driven Development (TDD) for guiding emergent design, focusing on developing effective abstractions that reduce the cost of change.
  • Apply Anti-IF Programming: Understand and apply Anti-IF principles to defuse the IF Strategy and eliminate unnecessary IF statements, creating more adaptable code that can scale with lower maintenance costs.
  • Explore TDD Movements: Discover the mental patterns, or "TDD Movements," that drive design decisions, going beyond the Red-Green-Refactor cycle to deeply understand the dynamic nature of TDD.
  • Tackle Real-World Challenges: Work through real design challenges applying both TDD and Anti-IF strategies to real coding challenges, focusing on how to evolve design effectively.
  • Evaluate the Cost of Design Choices: Assess the economic implications of your design choices, and explore how to achieve robust, maintainable software with a focus on reducing future costs.

Additional Details

  • Recording Access: Participants will have access to the session recording for 30 days post-workshop.
  • Student Discounts: Students studying software architecture, computer science, or software engineering can email us for a chance to receive a voucher for a full discount on the workshop fee.
  • Limited Spaces: Secure your spot today and start transforming the way you develop software!

Join us for this engaging workshop and transform the way you approach coding challenges with Francesco's expert guidance and innovative techniques!

Register $199.00

About the Workshop

Online Live Course

Join Francesco Cirillo in a live, interactive 7-hour online workshop focused on applying TDD and Anti-IF Programming to solve the Diamond Kata. You’ll learn how to develop the solution step-by-step without anticipatory thinking.

Direct Interaction

Francesco will personally answer your questions, offering detailed explanations and tailored support.

Access to Recording

Receive access to the workshop recording for one month, allowing you to review the content at your convenience.

Platform: Zoom

Conducted on Zoom, ensuring easy access from anywhere and effective, interactive participation.

Certificate of Participation

Obtain a certificate at the end of the workshop, validating your participation and the skills acquired. Enroll today to transform your understanding of TDD and elevate your programming skills!

Register $199.00

Related Products

Complete Programming & Diagrams Ebook (With Commentary)

A detailed guide combining screenshots of each programming step in Visual Studio Code, alongside collaboration diagrams, class diagrams, and Francesco Cirillo’s expert commentary. This ebook walks you through both the code evolution and design decisions of the Diamond Kata.

Available from December 20, 2024

Full Diamond Kata Workshop Video (No Participants)

A complete video recording of the Diamond Kata workshop, with Francesco Cirillo presenting all key topics, including TDD and Anti-IF Programming, without live participants. This course offers structured learning for those who prefer to learn at their own pace.

Available from December 20, 2024

Step-by-Step Development Video Course (No Commentary)

This video course streams the full development process of the Diamond Kata. You’ll follow along step-by-step as the code evolves, with a focus solely on the programming steps, without any additional commentary or explanations.

Available from December 20, 2024

Step-by-Step Programming Ebook (No Commentary)

This ebook includes screenshots of each and every programming step taken in Visual Studio Code to solve the Diamond Kata. It’s a visual guide for hands-on learners who want to see how the code evolves step-by-step, without additional commentary.

Available from December 20, 2024

Diamond Collaboration Diagrams Ebook (No Commentary)

A collection of collaboration diagrams, class diagrams, and other diagrams that visually represent the evolution of the Diamond Kata through its development. This ebook provides a structural view of the solution but contains no textual commentary.

Available from December 20, 2024

Incremental Codebase Access (GitHub)

Get access to the Diamond Kata’s incremental codebase on GitHub, showing the code’s evolution step-by-step. Each stage is marked so you can explore and understand how the code develops over time.

Available from December 20, 2024

GitHub Repository with Final Source Code (Free)

Access the final source code of the Diamond Kata directly from our GitHub repository. This code reflects the complete solution developed during the workshop, allowing you to explore and use the final implementation.

Available from December 20, 2024

Premium Bundle (Complete Access)

A comprehensive bundle for premium customers, including access to the live workshop, the complete programming & diagrams ebook with commentary, the full video course, and the incremental codebase on GitHub. Perfect for developers seeking the complete learning experience.

Available from December 20, 2024

Upcoming Events

TRAINER

Francesco Cirillo

Francesco’s journey in software spans over 30 years, influencing startups, corporates, and individual consultants.

A seasoned mentor, he has impacted countless professionals and teams. From his early days with Sun Microsystems to pioneering Agile Methods and creating XPLabs, Francesco's mark on the software industry is profound.

Notably, he's the creator of the groundbreaking Pomodoro Technique, a time management method embraced worldwide, as well as the visionary behind Defuse the IF Strategy, challenging conventional coding practices.

Testimonials

Carlo Garatti

"If your question is about how to write valuable software, this program is for you!! Through one-on-one lessons with Francesco you will learn how to fit the right techniques and tools in the exact phases of the software development cycle. You will fix and apply these ideas in real cases. And, last but not least, in an enjoyable way!"

Alessandro Ruzzon

"What did I like the most? In this workshop the theory part matches up with the practical part. You don't only hear WHAT TO DO but also HOW TO DO IT, and you start practicing it right away in the labs! That's really what the Workshop is about: real-life practice aimed at consolidating theoretical notions. This approach helps in understanding problems"

Break the Chains of Conditionals!