This 1-day workshop will teach you the principles of flexible design. To allow requirements to change, we need to create flexible architecture and design. Knowing and applying the five S.O.L.I.D. principles is one of the keys to make that changes easily.


  • Software developers who want to learn more about software design.
  • Architects who need a top level view on design.
  • Technical managers for whom standard good design practices are important.


  • Your knowledge in programming should be in area of Java, php or Python. All examples during the class are in Java, but you will work in your preferred language.
  • You will get the best out of this class if you pair with another attendee during the exercises.


  • Separate responsibilities at variable, method, class and module level (Single Responsibility Principle).
  • Keep your design open to extension (Open Closed Principle).
  • Allow easy replacement of an implementation with another.
  • Cleanly separate the interfaces based on responsibilities.
  • Introduce the right abstractions to allow flexibility.


  • Flexible architecture.
  • Basic rules for flexible architecture.
  • Single Responsibility Principle.
  • Open Closed Principle.
  • Liskov Substitution Principle.
  • Interface Segregation Principle.
  • Dependency Inversion Principle.
  • Other topics based on your requests.