0 checkout
The Anti-IF Campaign

Software Design Explained

Struggling to fully understand the value of design principles or development processes? Uncertain about how to effectively apply a practice that the team expects you to master at work? Do you want to learn software design in the best possible way?

The participants of our Software Design Explained Seminars will learn how to apply design principles, practices, patterns and processes and why or when to choose them.

Develop your software design skills to make your software grow in a fast and sustainable way

Francesco will not only explain the most relevant design topics, he will also share with you his way of using them. You will develop awareness about software design, and you will be instantly able to enhance your software development productivity.

By the end of each of our seminars, you'll be more aware of your software design skills. You'll be able to apply a design practice, to choose among similar design patterns and to understand the real meaning of a process. You'll always be stimulated to see design principles and practices from a different perspective and increase your awareness.

Upcoming seminars:

Year 2020:

Currently there are no scheduled events.


In this series of live online seminars on Software Design topics, Francesco will share his thirty-plus years of experience with you.

Software Design Explained

The aim of these seminars is to develop your software design skills.

In this series of seminars Francesco will share everything he has learned in years of software development, mentoring and consulting. Not only will you have an explanation of what they are and how to apply design concepts and practices, but also how they were born and why to use them.

Having all this at your disposal, who want to learn and improve has the opportunity to train and develop their software design skills in a flexible and adaptable way.

Software Design Explained

Software design is fascinating, it's about how our mind handles complexity.

Software design - and its principles and practices - has evolved over time. Software design was initially born to manage the complexity of algorithms. Over time it has been applied to deal with the complexity of application domain. It has evolved to manage requirement change. Software design techniques will continue to change and adapt to new contexts and new challenges.

In order to favour the adaptability of our software design conceptual tools, this series of seminars constantly proposes to look at design principles, practices, patterns and processes from different perspectives. You will learn to extract the sense of those software design tools and techniques so that you can master their application and adapt them when necessary.

Software Design Explained

The seminars will mainly focus on two different topics:

1. How to develop awareness in order to make effective design decisions.

Often developers are in doubt about design decisions. In our seminars Francesco will present his point of view about design techniques and tools and about how he makes choices among alternative design solutions.

You will learn how to make effective design decisions even under stressful conditions. You'll learn how to manage change and growth without applying dangerous IFs. It will become easy for you to choose between design patterns. You will learn how to grow software by injecting new objects and when needed, combinations of design patterns.

2. Understanding the essence of software design principles and practices

Often developers have doubts about what it means to be Agile or about the effectiveness of practices such as TDD and emergent design or about how to write User Stories.

These doubts are justified. Too many books and articles have given a structural description of these practices without communicating their meaning.

In some seminars, Francesco will expose the essence of principles and practices. How and why they were born. The meaning they have for him.

Once the meaning of a principle or the essence of a practice will be clear to you, it will be easy to apply them effectively and consistently. It will also be easy to adapt them to make the development of your software more effective.


Here’s some of the seminars which are part of this series

  • Francesco on Software Development:
    What does "Agile" mean? How to test if the way you develop is Agile.
    #agile #swdesign, #emergentdesign
  • Francesco on Software Development:
    User Stories: How and why write them.#agile
  • Francesco on Software Development:
    User Stories: How and why split them.
  • Francesco on TDD:
    Developing a hotel reservation system in TDD.
    #swdesign, #emergentdesign
  • Francesco on Design Patterns:
    How to study and master design patterns.
  • Francesco on Design Patterns:
    How to and why choose between Strategy, Observer and Visitor.
  • Francesco on Design Patterns:
    How to and why choose between Adapter, Proxy, Decorator and Facade.
  • Francesco on RRP (Recombinable Relational Production):
    Learning to recognize control and relationship while developing software.
    #swdesign #rrp
  • Francesco on Emergent Design:
    Growing Creational Patterns with refactoring by injecting features.
    #swdesign, #emergentdesign
  • Francesco on Emergent Design:
    Growing the State Pattern with refactoring by injecting features.
    #swdesign, #emergentdesign
  • Francesco on Emergent Design:
    Refactoring from good design to good design by injecting features.
    #swdesign, #emergentdesign
Software Design Explained

Ideal for newbies and experienced developers, who often think that after so many years of development they do not need improvements, without realizing that they carry with them vices and rigidity that often compromise the effectiveness of their design solutions.


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.

He has been running the Software Design School 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 Francesco Cirillo complete profile.


    included VAT, if applicable
    3 hours
    Online meeting with Zoom
    Min 4, max 20 people


Marco Isella
Marco Isella

Software Engineer

Francesco has changed the way I work, and more.

Simone Casciaroli
Simone Casciaroli

Senior software developer (Contractor) at Nutralete

Since attending this program with Francesco Cirillo, and learning his approach to software design, I have realized that my previous understanding of the topic was not as effective as I once thought. By understanding his approach, I have been able to significantly improve my own software design, benefiting both my team and myself. Despite the fact that my course was focused solely on software design, it has helped me become an all-around better software developer.

Matteo Regazzi
Matteo Regazzi

Agile Coach at inspearit Italy

Having experienced Francesco’s work and methodology in the past, I wanted to study with him again and try his mentoring program. Amazingly, I was able to regain immediate momentum, motivation, and obtain astonishing results, even though working remotely. This was also due in part to the organization of the sessions, which were always efficient and productive. One of the best investments I have ever made in myself. Thank you!

Marco Testa
Marco Testa

Software Developer at i-data.tek

Being mentored by Francesco wasn’t just your average course, following a pre-designed program involving lessons, topics, and tests which leave you with a lot of ideas but no concrete method to apply them in your daily work. Instead it was like a journey, beginning with my strengths and weaknesses, and following my actual needs in order to find my own path to becoming a better developer. In this course, Francesco guides you along the way gently; giving advice, and warning you of possible roadblocks you may encounter, while at the same time letting you explore on your own. This made the lesson much more difficult than your standard course, as it relied mainly on my own efforts and abilities, but the outcome was definitely much more productive and worthwhile than anything else I have yet experienced.

Carlo Garatti
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!