0 checkout

SDA Software Design Adventures

Learn along with Francesco Cirillo how to make the construction of your software system effective and enjoyable.

Develop features of a real application and solve design challenges with Francesco.

Francesco will show the principles and practices that he applies to make every design decision.

Each adventure is centered on different features and applications.

Ready to program


"How to apply design principles and practices in your real life? How to choose design patterns to reduce the complexity of your system?"

"What is an Adventure? It is a workshop in which I develop real software features together with the team participants. We have to solve real software design challenges on a real system. I explain how and why I make certain design decisions or how and why I apply certain practices. Here you can find more about our software design adventures. Usually, the idea for these adventures comes from software applications that I want to develop and grow." — Francesco Cirillo

Software Design Adventures (SDA) are a series of 3.5 hour workshops in which the participants (no more than six) experience how Francesco solves design challenges based on real requirements of real applications, applies a certain design process and a series of practices.

Software Design Adventures (SDA) are designed to train developers in the reality of development.


Fill in this form to tell us more about yourself/your team.

Francesco Cirillo
English, Italian
Min 4, max 8 people


Francesco Cirillo

Francesco 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 as reviewer of the second edition of the book Extreme Programming Explained.

He created the Anti IF Campaign in 2007 to raise awareness in the international community of developers to apply good design principles.

Francesco has been developing RRP, a new method of software development, since 2008.

He has been running the Software Design Training Programme since 2019.

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

Read the Francesco Cirillo's complete profile.

What is a Software Design Adventure?

  • Software Design Adventures are journeys in which Francesco, you and the other participants will develop one or more customer requests of a real application.

  • Francesco will lead the development of the customer request to be delivered and show the participants how he makes software design decisions. He will show how he applies principles, patterns, practices and tools, why he chooses one pattern over another one. He will explain why he prefers specific practices in specific contexts.

  • Each adventure is organised in a series of episodes. Each episode features a series of design challenges.

  • Each Episode is independent. You can participate in the whole adventure or in individual episodes.

  • At the end of each episode Francesco writes a report with the most important things that happened during the session. You can read some of them here:


    Each adventure is characterised by the choice of a particular development process:

    • The Accounting Adventure for example has been developed by applying an adaptive analysis process based on Use Case modelling and Scenarios, and an adaptive design process based on Collaboration Diagrams. TDD was not applied.
    • The Tea Assistant has been developed with an iterative incremental analysis process based on Use Case modelling and Scenarios and an anticipatory design process based on Collaboration Diagrams.

Our Adventures

Here's some of the adventures which are part of this series

Marc wants to keep track of his finances and asks us to produce a series of reports generated from the csv file with the collection and payment transactions he exports from his bank.
In the COVID lockdown I got a craving for video games. You know, like Pong, Pac Man, Space Invaders... Two conditions: No bad IF for collision detection.And I want to use the same objects for different video games. Do you accept the challenge?
We absolutely need to drink our tea at the ideal temperature. That's why we bought a USB thermometer and developed the software to let us know when we can drink it.

Who is it for?

Perfect for newbies as well as experienced developers.



Your team will learn and apply proven techniques for productivity, time management and decision-making. You’ll see measurable results in the first week.

Why should you attend a Software Design Adventure?

In the Software Design Explained seminars you have learned about design principles, design patterns, development practices, development processes, tool functionalities. In the Software Design Practice workshops you have applied what you have learned to concrete cases.

It is now time to put all this knowledge together and apply it to develop a real application.

You want to learn how to reduce the complexity of a system by introducing new functionality. To learn how to develop software you need a real system.

Isn't this exactly the same context we find ourselves daily when we develop software? We know design principles and patterns and yet when it comes to apply them something doesn't work. We apply design principles and patterns as we have studied them from really good books and, in the result, software becomes more complicated, it starts to hinder rather than help the development of the next features.

By the end of each adventure, you will have acquired greater awareness on how to make effective software design decisions, which principles to apply and why. It will be clearer to you how to choose design patterns, recognize good and bad IFs, reduce the complexity of your software system design by implementing new features or scenarios, and how to meet your deadlines maintaining maximum quality.

How it works

  • 1

    A customer sends an email with one or more software requests to be developed.

  • 2

    Francesco and the participants analyse the request(s).

  • 3

    Francesco then leads the design and development of the customer's requests.


Software Design Adventures can be offered live online, and, when COVID restrictions will allow it, also onsite in your company and in-house in our offices.

Is your team bigger than 15 people?

We will be pleased to make you an offer tailored to your needs.
Fill in this form to tell us more about yourself / your team.


Carlo Garatti
Carlo Garatti

CEO, Caplab

Feedback after attending the course: you must attend! Seeing how and why Francesco makes software design decisions is super helpful in improving how you make your decisions!

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 9.30. The place is somewhere on the Internet on Zoom.

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 9.30 am. It is a beautiful day outside in Berlin: 18 degrees Celsius.


Do you have a question not listed here?


If you feel you meet the qualifications and are ready to apply, click below to start an application!