Common information about all trainings
If haven’t done so yet, please read the 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
Enhance your Legacy Code towards Clean Code every day. Feel the thrill of continuous code clean up and make it a daily habit of your team to maintain code quality.
This hands-on workshop teaches how to retain code quality by refactoring in the smallest possible steps so it becomes daily practice. This allow to maintain clean code and continue with further complex refactorings when needed. Your team will possess refactoring skills and come back to work with inspirations on how to introduce code quality care into development processes.
We start by acquiring new technical skills. Then we build awareness of our approach, which is reflected in the quality of the code, in actions to improve its quality or lack thereof. Awareness of the impact of work organization on quality is the first step to change that will allow continuous refactoring into clean code.
This hands-on workshop teaches how to retain code quality by refactoring in the smallest possible steps so it becomes daily practice. This allow to maintain clean code and continue with further complex refactorings when needed. Your team will possess refactoring skills and come back to work with inspirations on how to introduce code quality care into development processes.
We start by acquiring new technical skills. Then we build awareness of our approach, which is reflected in the quality of the code, in actions to improve its quality or lack thereof. Awareness of the impact of work organization on quality is the first step to change that will allow continuous refactoring into clean code.
About training
Clean Code is very well known term that was coined by Uncle Bob. It describes how good code should look like and and rules that enable its maintenance. These are different principles like SOLID and attributes like readability, extendability, testability and more.
Effective Refactoring (previous name of the workshop) is nothing else but cleaning your code. But do we know how to approach it? Isn’t it often a theory followed by an idea to re-write given part of code because we are afraid to touch legacy code any longer?
During the workshop we go carefully through the concept of Refactoring Pyramid that allows to clean your code in small steps.
The workshop is focused on working with code using automated refactoring-features that are built into IntelliJ IDE. The source code is based on Java language. The trainer does all the refactorings live in small steps what allows the attendees to practice the same transformations on their laptops. Remaining 25% of the training is dedicated to motivation part, how to make cleaning code a daily habit in order to keep technical debt under control.
Please note also that this is a training mainly about cleaning code – not necessary about one and the only correct design. Different teams might prefer different designs whereas the goal of this training is to show how easy we can keep the design emergent according to our architectural decisions and needs.
Effective Refactoring (previous name of the workshop) is nothing else but cleaning your code. But do we know how to approach it? Isn’t it often a theory followed by an idea to re-write given part of code because we are afraid to touch legacy code any longer?
During the workshop we go carefully through the concept of Refactoring Pyramid that allows to clean your code in small steps.
- Clean the flow
- Extract smaller methods
- Extract smaller classes
- Notice emerging design patterns
- Clean up the architecture
Please note also that this is a training mainly about cleaning code – not necessary about one and the only correct design. Different teams might prefer different designs whereas the goal of this training is to show how easy we can keep the design emergent according to our architectural decisions and needs.
Plan of training
Part 1 – Cleaning Code in small steps
Part 2 – Clean Code to ease extendability and testability
- Review of Legacy Code project
- It’s only one more “if” statement…
- Review of automated refactorings in IntelliJ
- Live refactoring in small steps
- Habits of personal effectiveness for code quality
- Clean Code & Pyramid of Refactoring
- SOLID Principles & Pyramid of Refactoring
- Review of “Extended” Legacy Code project
- New Requirements + No Cleaning = (More) Dirty Legacy Code
- More Requirements are coming…
- Live refactoring towards extraction of extension points
- Clean code is extendable code
- Habits of team effectiveness for code quality
- Implementation of additional functionality using TDD
Duration
This is a very extensive training and based on the experience the proposed approach is make it is as 1 full day or 2 days of 4 hours. The second option allows the developers focus on other daily activities in the remaining part of the day.
Target audience
Regular developers, although senior developers claim that they’ve learned lots of new things / ideas and shared them with fellow developers.