Change Vector Tracking in emergent design
A reflective design approach to achieve software design agility by modelling change as a vector and tracking it to aid refactoring decisions.
Preface about the talk
Software design is a field that has always fascinated me and I have tried to be an obedient student trying to learn this art. Like any other design problem, software design is also a wicked problem. Horst Rittel and Melvin Webber defined a “wicked” problem as one that could be clearly defined only by solving it, or by solving part of it .This paradox implies, essentially, that you have to “solve” the problem once in order to clearly define it and then solve it again to create a solution that works.
Hence you need an architect with magical powers to get your design correct in the first go .This is the core philosophy behind emergent design in which we do not think too much about future . As Uncle Bob sarcastically points out, your customers somehow knows your design and they will come up with a requirement that will break your assumptions and thus your design. In emergent design you embrace aggressive refactoring religiously and few teams rebelliously for the good. It has also been observed that during emergent design refactoring step more focus is towards class design than higher abstract architecture elements. This creates technical debt which can go unnoticed for a long time.
In this talk I will be introducing a novel technique called change vector tracking that will address the above described problem. Change Vector Tracking is a reflective design approach to achieve software design agility by modelling change as a vector and tracking it through ceremonies like Change Vector Tracking meetings.
Change vector tracking doesn’t prevent customers from coming up with requirements that would invalidate previous design assumptions, it helps us in monitoring these changes and aids in making informed decisions of where and when to redesign. It helps us keep a check on design debt which otherwise would be overseen and not addressed at the right time .Design debt is invisible to tools initially, only when it grows beyond a scale tools can catch it. Change vector tracking is a technique to capture this design debt in a very early stage. “A stitch in time saves nine”.
Outline/structure of the Session
Structure of the talk
- why ?: 5 min
- what ?: 10 min
- How ? Solution, Change vector tracking: 5 min
- Modelling change as a vector: 5 min
- Weighted vectors: 5 min
- Process and ceremonies: 5 min
- Future work : 5 min
- Q&A : 5 min
- Attendees will understand the problem related to design debt and the difficulty in identifying/measuring early during product development
- Understand the need for Emergent design and constant refactoring
- They will be in a position to correlate the discussed problems with their project.
- An in-depth understanding of the solution called change vector tracking
- Knowledge of how change can be modeled as a weighted vector to aid to take decision-related to architecture refactoring.
- How to evaluate design options using the change vector and make key refracting decisions early in the product development
- They can readily apply the solution to the project without the need of any tools and reap the benefits by reducing technical debt
Developer , Architect ,Scrum Master