Common information about all trainings
If haven’t done so yet, please read the Workshops page that contains general information about all of my trainings . It contains common background, core ideas the main concepts that I use throughout all of my trainings. They are presented very differently in each training but share common code quality principles.
Goal of training
Make code architecture more extendable, readable, testable by applying design patterns.

Attendees will:

  • practice live refactoring towards design patterns
  • learn about chosen design patterns
  • understand how their software development process influences on technical debt
  • come up with ideas about adjustments to work organization to achieve cleaner code design
Participants will experience how design patterns simplify design but also how the design is complicated when patterns are used incorrectly. They will adventure how the design need to be adjusted due to changing requirements.
About the training
Design Patterns are common solutions to similar groups of issues. They’ve proved to be useful and helpful due to their reusability and effectiveness.
Software Design Patterns were described for the first time in 1994 in book “Design Patterns : Elements of Reusable Software Architecture”. After many years one of the book’s authors – Ralph Johnson – during his talk “21 years of Design Patterns” said “We could have done better, but I think we’ve done pretty well”.
Fortunately the need to make use of design patterns is not visible at the beginning of software development. This way we can avoid over engineering and clean the design by applying design patterns when it is really required. Design patterns pays off only behind some level of complexity.
When the codebase grows we begin to miss some design pattern and think “if I only had a strategy / state / chain here instead of nested if-else statements…”. These thoughts motivate us to perform refactoring into design patterns at the correct time – not too early and not too late.
This workshop is a continuation of Refactoring to Clean Code training and is based on an assumption that attendees can perform some initial clean-up of codebase. Such a clean-up allows us to notice emerging design patterns out of the mess of legacy code.
Plan of training
Core ideas
  • practice of refactoring into some design patterns
  • understand relation between outcome quality and and setup of development process
Day 1
Keynote : 5 Dysfunctions of a Team that impede refactoring
Refactorings that end up with below design patterns
  • Interpreter
  • Chain of Responsibility
  • Composite
  • Factory Method
  • Abstract Factory
  • State
Day 2
Keynote : 6 Sources of Influence that enable / impede refactorings
Refactorings that end up with below design patterns
  • Fluent Builder
  • Proxy
  • Template
  • Bridge
  • Command
  • Adapter
This is a very extensive training. Based on the experience the proposed approach is make it is as 2 days of 7-8 hours. On request, the training can also take 1 day (very intensive) with a limited scope.
Target audience
Regular and senior developers definitely, expected to make use of this knowledge and promote refactoring within their teams. The requirement is some fluency in software development and using your favourite IDE.