Embrace Change
Get Agile
Agility means being able to quickly change direction

Agile Engineering is a methodology that promotes iterations. open collaboration and adaptability throughout the lifecycle of the project

A flexible code base is the essential prerequisite for embracing change. Flexibility is primarily achieved though having the simplest possible design that satisfies the current user requirements. Secondly flexibility is achieved through expressiveness and correctness.


Simplicity in design sense means two things No Duplication: To remove duplication we need to keep things together that belong together, when we do this we ensure our code is modular. Modular code is much easier to change. Lets say we have a Loan class with two fields interest and premium, well if we let other classes access interest and premium directly, then we probably end up with lots of code fragments scattered across the application all doing pretty much the same thing. However if we refactor this duplicate code into its rightful home, i.e. the Loan class then we have one place where all things Loanish are handled and one place to change if the customer needs to make Loanish changes.

No Redundancy: There is a world of difference between embracing change and predicting change. When we write code that is not justified today but in our view is likely to be needed tomorrow we are in the business of predicting change. All our predictions that don’t come through end up as extra deadweight on our design - hobbling our agility.

Expressive Design

A healthy design means a healthy language, a language of shared images and metaphors that people carry around in their heads and use in every day conversations about the system. A language which is mirrored in the code base, in the names that are given to functions and variables, in the way that modules collaborate with each other to carry out a piece of functionality. This language will more than likely draw on existing published pattern languages. Having such a language in place means that less time is spent trying to “figure out whats going on” in some part of the design, there are no dark parts of the application that can only be changed by a specific Hero Programmer who happens to be the only being alive who knows how the part hangs together. In short expressive easily explained designs really cut down on maintenance times.

Correct Design

If you spend most of the time fire fighting bugs then you are not going to be in a position to embrace change. If you don’t have a bank of automated regression tests then you are unlikely to feel comfortable with change.



Agile Mind Map
Enlarge Mind Map

Contact us to discuss how CSE can help
emailE: cse@dcu.ie
phoneT: +3531 700 5427
Copyright © Centre for Software Engineering
Website: Red on Green Design