The Breakout Games Anti-IF Challenge

Have you ever noticed how many IFs have usually been used in the sourcecode of a simple arcade video game like Pong or Space Invaders developed in an Object-Oriented Language? Collision detection, input handling, etc. Have you noticed that every game has its own codebase?

In this Challenge Francesco Cirillo develops a series of arcade video games with an evolutionary design process with three goals: (1) Not to use the "IF Strategy"; (2) To generate more games from the same objects; (3) To reduce the cost of change in software development.

Nicole Lemke

Software Manager, 4flow AG

If you not only want to know what “Object-Oriented Programming” means, but are also interested in its origins and what it can achieve, start here, at the very beginning. Let Francesco take you on a journey. Learn about the essence of good objects and write good stories that those objects can tell.


This course is organized in six sessions.

SESSION 01 - Development of the Original Kata

Let's start with the analysis of the problem defined by the Kata.

Let us read together the text of the original Kata proposed by Bob Martin. Francesco Cirillo will work on User Stories, Scenarios and Requirements of the Bowling Score App.

Before starting software development, Francesco Cirillo and the participants will define by which criteria to evaluate the effectiveness of software design.

Francesco Cirillo develops Bob Martin's original Kata functionality in TDD, one scenario at a time.

At the end of the session, we evaluate the result achieved in terms of design. What abstractions emerged? Was the TDD effective?

SESSION 02 - Completion of the Original Kata

In this session Francesco Cirillo will complete the development of Bob Martin's original Kata functionality in TDD.

A series of slides will help participants understand the evolution of our TDD-driven emergent design.

At the end of this session, we will assess the design emerged one test at a time.

SESSION 03 - Development of New Requests

In this session Francesco Cirillo will complete the development of Bob Martin's original Kata functionality in TDD.

A series of slides will help participants understand the evolution of our TDD-driven design.

At the end of this session, we will assess the design emerged one test at a time.

SESSION 04 - Let's Unleash our Imagination

Let's free our imagination and define new requests!

As usual we will work on User Stories, Scenario and Requirements together.

Francesco Cirillo will develop some new scenarios in TDD.

In this final session space will be given to understanding the various evolutionary steps achieved through emergent design.

Have we been able to reduce the cost of change in software development? Is the software "simple"? How can we define "simple"?

Carlo Garatti

Software Engineer, Oracle

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!

About this Software Development Challenge

Francesco's Software Development Challenges are journeys in which Francesco, you and the other participants will develop one or more features of a real application. Francesco will lead the development of the feature to be created and show you how he makes software design decisions, how he applies principles and tools, why he chooses one pattern over another and why he prefers certain practices in specific contexts.

The Arcade Games Challenge was born in a peculiar way. Students from one of my university courses at HWR brought me to develop a simple video game: Pong in Typescript. Just to see how to develop objects incrementally. I have to admit that video game development never really appealed to me, but it was fun to get to Pong along with them.

Doing a bit of research on video game development books I had, projects on Github and tutorials on Youtube, I realised that one thing was recurring: a disproportionate amount of IFs and "IF Strategy" to manage complexity, change and growth:

  • Collision detection with a new character? "Let's add an IF".
  • A different key for a new action? "Let's add an IF".
  • Different sounds for different collisions? "Let's add an IF".
  • A special animation when the space invader enters the attack state and tests our defences? "Let's add an IF".
  • And so on...

I could go on for a long time, because pretty much every possible aspect of change or evolution, in that code and in those tutorials is handled with the "IF Strategy."

You already know what the first goal of this Challenge is:

  1. Not to use the "IF Strategy"

But there's a second aspect that struck me. Each game had a different codebase. Space Invader code in one project and Asteroids code in another. All separate. Hm... Hence the second goal of this Challenge is:

  1. To generate more games from the same base of objects and classes

Too easy... let's add a dash of adaptive approach...

  1. Without knowing which arcade video games we will be required to develop.

If we already knew the video games to be developed, someone might say that we work in an anticipatory way... Never!

We'll start with the smallest possible video game (I have to think about that...) and figure out a way to grow it into numerous video games. Maybe we'll come up with some new video games. Or maybe we can ask for outside intervention with a poll.... We'll see.

It would be very useful to have some participants from the Product Analyst and Product Design courses to make the user stories harder to deliver.

The last objective is the one I hold most dear:

  1. To reduce the cost of change in software development.

Otherwise why use an adaptive design and development process ;)

What are arcade games for me: 2D games like Pong, Asteroids, Donkey Kong, Mario, Snake, Frog, Zelda, ...


I must admit that following the idea of this challenge I ran to Ebay, bought a NES and the above mentioned games. Just for work :)

—Francesco Cirillo

Develop One Object at a Time, One Pattern at a Time

Book your Breakout Game Session

About the Trainer

Francesco Cirillo

Francesco Cirillo has worked at the forefront of the software industry for more than 30 years. In a career spanning startups, corporations and freelance consulting, he has mentored thousands of professionals, developers, managers and software teams.

In the 1990s he worked as a Senior Consultant and Mentor for Sun Microsystem, expert in Software Architectures and Software Development Processes and Java and Object-Oriented Evangelist.

Francesco is one of the pioneers of Agile Methods. He started working on XP and TDD in 1999. He was chosen by Kent Beck to develop the XP community in Europe and as reviewer of the second edition of the book Extreme Programming Explained. In 2000 he created XPLabs, the first company in Europe to offer comprehensive services on XP: software development, training and consulting.

In 2007 he created the Anti-IF Campaign to raise awareness in the international community of software developers to apply good design principles to grow software in a sustainable way.

Since 2008 Francesco stopped actively working on Agile Methods and started to develop RRP, a new method of software development. In 2013 he created Cirillo Consulting based in Berlin to offer professional training and consulting on productivity and software development.

Francesco invented the Pomodoro® Technique, a renowned time-management method used by millions of people all over the world, while being a university student looking for a way to get more done in less time.

Read the Francesco Cirillo's complete profile.

Price & Conditions

  • The price includes the 2,5 hour course as well as the course material.
  • Participants in this course will have access to our new Pomodoro® Web/App for the duration of one month.
  • Participants in this course will have free access to our new Pomodoro® Communities of Practice for the duration of one month.


The Pomodoro® Technique book is not included in the price of any of the courses in this training programme and it should be purchased separately. You can buy it here


Discounts for groups of four or more are possible.

Please contact us for more details.

Marco Isella

Software Engineer

Francesco has changed the way I work, and more.

Upcoming Sessions

Here you can find the next session of this event:

Here you can find the next session of this event:

Useful Resources

Three Bowling Kata Reviews

Learn software design by comparing, fixing and expanding three Bowling Kata solutions. In this session, Francesco Cirillo reviews three different...

The Bowling Kata Challenge Solution

Have you ever noticed how many IFs have been used in Bob Martin's Bowling Kata solution? "Is this an effective...

The Anti-IF Workshop

Learn how to replace the 'IF Strategy' with more effective design strategies that will enable you to reduce the complexity...


Do you have a question not listed here?

Pomodoro® Web App

The Pomodoro® Timer Web App will be your time tutor and help you stay focused so you can get more...

Pomodoro® Sheets

To help you get started, check out the official templates of the Pomodoro Technique that you can download and print....

Pomodoro® Book

This fully updated edition includes new and exclusive material about teamwork, to make you and your team more dynamic than...