The Arcade 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.

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

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


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 ha 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.

Upcoming Sessions

Here you can find the next sessions of this series:

Can't make it on any of our dates?

We can discuss other options with you


Useful Resources

The Accounting Adventure Journal - Episode 01: The Challenge

The following is the report of the first session of the Accounting Adventure. The time is 31 March 2021 at...

The Accounting Adventure Journal - Episode 02: Emergent Design

The following is the report of the first session of the Accounting Adventure. The time is 27 April 2021 at...


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® Internal Process

Time is limited. We can't have as much as we want, neither stop it nor slow it down. When our...

Pomodoro® Core Process

Interruptions and procrastination are one of the most dangerous productivity killers. How to deal with the Predator while we're working...