My Advanced Software Design Course

Learn how to reduce software complexity.

Here you can find the next stops of this tour:

Online Course

Online Course

Online Course

* Price excludes VAT

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.

Training Content

This Training is organized in six courses.

The Observer Pattern: Dynamics and Variations Explained

"Isn't it the Model-View-Control (MVC) Pattern?" "No!"

There is much, much more to it than that.

The basic dynamic of this pattern is extremely interesting. The message inversion mechanism that characterises this design pattern is so relevant that if taken to an extreme, it can lead to leaving the Object-Oriented Paradigm and entering the Event-Driven Paradigm.

In this course, Francesco Cirillo explores the basic dynamics of message inversion typical of this pattern. He begins by showing how to implement simple functional behaviours with this dynamic.

Francesco then addresses a number of significant variations of the pattern. Not only architectural variations are shown: for example MVC and Subscription-Publishing. He also shows the variations that make the pattern's dynamics useful for implementing and simplifying the development of complex functional behaviours.

The Observer Pattern TDD Practice

We need two projects to fully understand how to implement this design pattern.

The first project we apply a pattern to is the Calculator. This is the classic domain for applying Strategy or Commands. Is it possible to effectively implement the logic of a Calculator with the Observer pattern? The definition of effective we use is reducing the cost curve of change.

The second project is related to the Visicalc Challenge. One of the most useful functions of a spreadsheet is recalculation. Change the value of a cell and the whole sheet magically updates. Is it possible to apply the Observer pattern to solve this functionality? Or is this one of those cases where this pattern makes the system more complex? If so, what other patterns might be more effective in reducing the cost of change?

The Bridge Pattern: Dynamics and Variations Explained

"Isn't it an Adapter?" "NO!"

The Bridge pattern has the reputation of being a "difficult," unclear pattern. It is a somewhat obsolete "architectural" pattern to be used at a low level for the development of user interface components. The Bridge pattern is one of those 'mysterious' patterns, along with the Flyweight of the Gang of Four's 23 that developers never used. This pattern can actually be very effective for demultiplying the complexity of numerous user stories and not only for non-functional matters.

The first objective of this course is to clarify the dynamic difference between this pattern and other patterns such as the Adapter Pattern or the EnvelopeLetter or ShieldPattern idiom that are often confused with the Bridge. We then deal with variations of the Bridge pattern. Yes, there are quite a few. And often the variations coincide with different applications.

The Bridge Pattern: TDD Practice

The Bridge Pattern requires development to be understood.

We apply the Bridge Pattern to develop a... Video Game!

And let me be clear: we do not apply it to solve the low-level user interface or some kind of platform issue. We use the Bridge Pattern to solve and implement a functional issue related to a certain Video Game.

The Prototype Pattern: Dynamics and Variations Explained

"Isn't it to clone objects?" "Well, it’s not only for that!"

Actually, the Prototype pattern is extremely fascinating: it might represent the future of objects and programming. In fact, languages such as Self and Javascript were born on the basis of this pattern.

The Prototype pattern is another little known and used pattern. Those who know a little more about design patterns apply it to clone objects.

The first thing we study is the dynamics of this pattern. This allows us to consider interesting variations of this pattern.

The Prototype Pattern: TDD Practice

"How about Self?""

When I had to think about an application of this pattern, I had no doubts.

How can we implement some behaviour to develop a mini-Self language by applying the Prototype pattern?

And maybe build a simple video game?

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 Training

Training Info

Live Format
6x2 hour sessions (max 8 participants)

Video Format
6 recorded sessions for a total of 12 hours


Delivery Options
Live online, onsite, in-house, recorded video

By working with these three patterns you learn how advanced dynamics can demultiply software complexity.

This Training consists of two different types of courses for each design pattern:

  1. "Dynamics and Variation Explained." Francesco Cirillo analyzes the dynamics that characterize a particular pattern and how they can be changed into useful variations to reduce software complexity.
  2. "TDD Practice." Francesco Cirillo implements one or more variations of one design pattern in teeny tiny steps, one test at time.

Is this training for you?
This Training is ideal for Senior Software Engineers and Technical Coaches.

What do you need for your course?
No previous knowledge is needed. Much passion is required!

Join the conversation
Are you interested in asking questions, clarify specific aspects of this Course? Flatten the Curve! is the place for you.

Certificate of attendance
This Certificate is delivered to all the participants who have attended the six courses of the Online Training Programme.

Related Activities

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

Book your 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

Live Online Course

The Adapter Pattern Explained

Learn by interaction:

Live Online Course

The Adapter Pattern TDD Practice

Learn by interaction:

Live Online Course

The Flyweight Pattern Explained

Learn by interaction:

Live Online Course

The Flyweight Pattern TDD Practice

Learn by interaction:

Please read our terms and conditions for training courses here.

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