Common information about all trainings
If haven’t done so yet, please read the Trainings 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
The goal of the this workshop is to help in introducing a habit of taking care of code quality through refactoring and practice refactoring into design patterns. Attendees will gain technical skills but also learn how organization of work within the team / company influences on final quality. They will learn to look for adjustments to the way work is organized that can improve outcome quality.
wide-patterns
The attendees will experience how design patterns might simplify but also de-simplify the design. How patterns solve the problems at current state of design but without continuous refactoring introduce next issues if the design is followed with copy-paste thoughts only. They will experience a threshold of complexity behind which usage of design patterns pays off.
More about training - might be TLDR 🙂
Patterns are everywhere around us. They are things which proved to be good and common. Why? Because of their values like effectiveness, reusability and beauty.
In 2015 Ralph Johnson (one of the authors of “Design Patterns : Elements of Reusable Software Architecture” book) during his talk “21 years of design patterns” told us “We could have done better, but I think we’ve done pretty well”.
computer-tidiness
Unfortunately the need to make use of some patterns is not visible at the beginning of development. Later, once the codebase grows we begin to miss them and think like “if I only had a strategy / factory / state patterns here instead of the net of if-else / switch statements…”. On the other side It is not bad because otherwise we would end up with over engineering and refactoring comes to the rescue in such cases.
This workshop this is a continuation of Effective Refactoring training and is based on an assumption that attendees can perform some initial clean-up of codebase. Such a clean-up is a must-have step as otherwise you will not be able to notice emerging design patterns out of the mess of your legacy code.
Plan of training
Core ideas
  • practice of refactoring into some design patterns
  • relation between work organization and outcome quality
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
Duration
This is a very extensive training. Based on the experience the proposed approach is make it is as 2 days of 7-8 hours.
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.