Back in the day, we had these Rules of Simplicity in Extreme Programming:
In order of importance...
- Passes all the tests
- Contains no duplication
- Expresses all the ideas that need to be expressed
- Minimises classes and methods
- It has to work. It has to be easy to verify that it works and keeps working.
- It has to be maintainable. A single change should be a single change.
- It has to be understandable otherwise it won't be maintainable.
- Less things built means easier to maintain.
So what's different when you look at enterprise architecture? I'm encountering a distressing lack of awareness of the importance of testability and maintenance in the inhabitants of this culture. It's all about scaling and partnership relationships instead.
Instead of a culture of simplicity (i.e., you must justify why you're building more than you need to, you must justify why you're building something that is expensive to test, etc.), there is a culture of anticipation (i.e., you must justify why you're not building something that handles every imaginable change).
Well so far, I have not encountered a single organisation where that culture of anticipation has shown observable evidence of effectiveness. I do see a lot of examples of anticipated generalisation that didn't pan out and added significant maintenance overhead that lasts decades.
It's not that all anticipation is unjustified. For example, I would be watching out for decisions that eliminate options. However, YAGNI and simplicity should be the default with exceptions to be justified, not vice versa.


2 comments:
Nice post Jason
Think I'll steal those 4 points for my tag line on work emails, for a few week!
+1
From: Enterprise Architect
Post a Comment