London, March 2018
Practical OO design & refactoring
of real-life codebases with a business impact
Want to learn to successfully design high-quality code and improve the quality of the worst legacy code by applying repeatable patterns and refactoring strategies?
Want to learn to reliably plan, prioritise and incrementally achieve improvements to support tangible business goals and company’s bottom-line?
This is a three-day energetic hands-on workshop that consists of practical exercises and class discussions. Attendees will be challenged with increasingly complex problems involving design decisions and trade-offs between forces at work in the codebase.
Participants will use the following practices throughout the workshop: pair programming, test-driven design, retrospectives, and just-in-time analysis.
The whole workshop is underpinned by the philosophy that the ultimate test for software craftsmanship is utility for the business.
Learn how to:
- Identify the main codebase quality problems affecting both business and IT
- Prioritise and plan non-trivial quality improvements
- Improve the quality of the worst legacy codebase by applying repeatable patterns and refactoring strategies
- Avoid most common design problems when writing new code
- Leave the codebase in a better state than you found it while increasing productivity and reliability at the same time
About the Trainer
contributed to advance the engineering and coding practices of Scuderia Ferrari in Formula 1. He was asked to make software development go faster and safer at the same time, while the team was competing for and winning several F1 championships.
He worked for ThoughtWorks, a global technology company whose renewed technical excellence is strongly connected to the company’s bottom-line. He worked with several authors of modern practices in use nowadays.
- 4 exercises on the most common and expensive code problems related to dependencies
- Discussions on related principles, test doubles, DI/IoC Frameworks
- 1 exercise: replacing duplicated, fault prone, hard to read and understand conditional code
- Discussion: how to replace conditionals
- 3 exercises on the synergies and tensions between design principles
- Discussion on design principles
- 2 exercises on decoupling and encapsulating objects relationships and composition
- Discussions on techniques to decouple and encapsulate objects relationships
- Discussions on the purpose of code quality, prioritisation and planning of non-trivial refactorings, and the Mikado method
- 1 exercise with real-life code (you can bring your own codebase) to test the practical understanding and use of all the techniques learned so far
For Senior Software developers, Tech-leads, coding Architects and coding CTOs.
- Professional Java or .NET coding skills
- Work experience and strong understanding of OO programming and design principles and patterns
- Good OO problem solving and strong ability to think in objects
- Knowledge and working experience of refactoring, unit/integration testing, C. I.
Bring your hardware:
Please bring your own laptop with your favourite .NET/Java IDE, unit test and mock object frameworks, so you can develop with your own tools and languages, rather than something you are not familiar with. If you are not able to bring in your own laptop, please let us know in advance.