This post originated from an RSS feed registered with .NET Buzz
by Jonathan Crossland.
Original Post: A point about AgileDesign
Feed Title: Jonathan Crossland Weblog
Feed URL: http://www.jonathancrossland.com/syndication.axd
Feed Description: Design, Frameworks, Patterns and Idioms
Two comments came through to me regarding AgileDesign. It was pointed out that Agile is a loaded term, and perhaps I should look to rename it. Another aspect mentioned to me in an email, was that Extensible and Agile are probably the same or too similar to be different principles. The thing though, is that my AgileDesign, is exactly "Agile" Design, and although Extensible and Agile are both concerned with change, there is a very important difference between them.
Agile has a few definitions.
Moving lightly, briskly and nimbly Speed of operations as a result of a request Dealing with change Ready to move
You are agile, when you can change quickly and efficiently.
AgileDesign is a principle which highlights the approach design from an agile perspective. This is what comes from using Design Patterns, following good heuristics, and having an agile mind to cope with change better.
In the AgileDesign approach it contains a list of patterns, from TemplateMethod (GoF) to Pair Programming (XP), which are both aids to accomplishing the goal of an AgileDesign.
When you Design a software solution, it is not just about 'how good you are', or how elegant a solution is. It is not about how 'awesome' or not the code is. What is very important is the amount of agility, and where the agility lies.
In Framework texts, you find mention of FrozenSpots and HotSpots (Pree). AgileDesign covers both areas. AgileDesign covers mutable, sometimes even seemingly immutable portions. However, ExtensibleDesign is the adding of something new, and extending. Therefore ExtensibleDesign and AgileDesign are concerned with change, but offer a different set of solutions.