0 checkout

Software Design Training

Dealing with fast growth, technical debt, stressful and demanding deadlines? Do you feel that it's time to strengthen your software design skills and to develop new ones?

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

Discover your full potential and become the Software Designer you want to be.

Setup your own training plan

A complete training programme to improve your individual and team productivity in a short time:

More than 30 years of experience at your disposal to develop your time management skills.

Software Design Q&A with Francesco

Software Design Explained

In every seminar Francesco will explain a topic related to software design/ development. Participants will learn how to choose among design patterns, how to apply practices - often unclear and controversial - like TDD and emergent design, how to write effective User Stories and learn what Agile development is.

Develop your software design skills

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

Anti-IF® Design Course

This course consists of lectures (30%) and exercises (70%). Throughout the series of lectures the trainer explains how - without bad IFs - to solve design problems related to complexity, growth and change. Along the exercises section, participants will be asked to apply what they have learned to solve design challenges.

Code Monsters? No thanks!

By the end of this course participants will have learnt a range of design techniques and patterns to deal with complexity, growth and change in an effective and sustainable way. Replacing the "IF strategy" with more effective design strategies will enable them to deal with the stress of a demanding deadline.

Software Design Adventures

In every "adventure" Francesco will develop one or more functionalities of a real software system.

You will learn how to apply software design principles and practices and how to make effective design decisions directly working in pair programming with Francesco.

Software Design applied

By the end of this workshop you will have a greater awareness of how to make effective software design decisions, which principles to apply and why.

It will be clearer how to choose design patterns, recognize good and bad IFs, how to reduce the complexity of the design of your software system by implementing new features or scenarios, how to meet your deadlines maintaining maximum quality.

Software Design Mentoring with Francesco

One day of mentoring with Francesco Cirillo to dispel doubts and insecurities about the application of principles, patterns and practices to correct and take your development process to the next level.

Discover your full potential and become the Software Designer you want to be!

Perfect for newbies as well as experienced developers, who often think that after so many years of development they do not feel the need for improvement, without realizing that they carry with them vices and inflexibility that often compromise the effectiveness of their design solutions.

About the School

The goal of our school is to train the software designers of the future.

Make the construction of your software system effective and enjoyable

You will learn how to reduce the complexity of your software system each time a new feature is introduced and in this way to make the construction of your software effective and enjoyable.


Learn with Francesco Cirillo how to develop your software design skills, eliminate doubts and acquire new points of view about software design in order to make the construction of your software system effective and enjoyable.


Our philosophy is to develop awareness about software design.

There are no good or bad principles, patterns, practices or processes.

The experienced designer knows how to choose between them according to context. The current complexity of the software system, the complexity of the new feature to be implemented, the degree of preparation of the team and even the level of tiredness of its members can lead to a different design choice.

Software design is essentially behavioural dynamics in action.

Developing a software system means to grow a behavioral system.

Introducing a new feature requires to know how to reduce the overall complexity of the system. Only in this way software growth can be sustainable.

To do this, software designers need to learn how to deal with real working software systems. Possibly, complex, fast growing software systems.

Awareness is the key.

Faced with real software systems, it is necessary to master solid conceptual tools: principles, patterns, practices and processes of software design.

Every principle, pattern, practice and design process has its own motivations, advantages and disadvantages. When faced with a working behavioural system it is necessary to be aware of them and to know how to choose between them. How to choose the next step.


Our software design training programme is 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.

    English, Italian
    Online learning, public classes, onsite in your company


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!