Main Conference - Hands-on Lab
- Thursday 8 from 14:30 until 16:30 in Black Room
(This is a hands-on lab with limited capacity)
Most legacy systems have a strong technical resistance to refactoring. This resistance prevents many legacy systems from being touched. There can be many reasons, including developers' concern about the amount of effort required, or their fear of unexpected consequences. For a large refactoring to be successful, it is essential to overcome this resistance.
This resistance has a variety of aspects. One of them is the large number of changes that must be adapted for refactoring to be applied. Developers may need to spend a lot of time and effort because of this and Furthermore, they may be forced to rely on large rewrites instead of incremental or iterative development.
Unexpected consequences are another aspect. Most Legacy systems don't have a good test suit, if any at all. Developers are thereby exposed to unintended consequences without knowing about them in a concrete manner. Since the code is not testable, they cannot write tests to apply refactoring. It's actually a vicious cycle, since testing is essential to refactoring and placing tests requires you to refactor the code.
There are actually ways to overcome this resistance or at least mitigate its risks. Our goal in this workshop is to explore a set of techniques, guidelines, and approaches to apply the most basic and essential refactoring needed to make the code testable as well as isolate different parts to reduce the impact of future refactoring. This will reduce the resistance of the system to refactoring, both in terms of the size of changes and the fragility of the refactoring.
Note: The samples provided in this workshop are written in both C# and Java programming languages. To fully participate in the exercises, participants should be familiar with either of these languages or have basic knowledge of object-oriented languages so that they are comfortable working in pairs with other developers.
About Hadi AhmadiTwitter LinkedIn Sessionize Sessionize
With over 10 years of experience in Software development, I am a Technical Leader, Architect and Designer. Passionate for Software design & Architecture (specially DDD, CQRS & Event Sourcing) and Agile practices such as TDD and BDD with an in depth knowledge of OOP, GoF Design Patterns, SOLID Principles and Integration Patterns.