Sunday, August 19, 2007

Effective enterprise architecture comes from a culture of simplicity

Back in the day, we had these Rules of Simplicity in Extreme Programming:

In order of importance...

  1. Passes all the tests
  2. Contains no duplication
  3. Expresses all the ideas that need to be expressed
  4. Minimises classes and methods
To put that in another way...
  1. It has to work. It has to be easy to verify that it works and keeps working.
  2. It has to be maintainable. A single change should be a single change.
  3. It has to be understandable otherwise it won't be maintainable.
  4. Less things built means easier to maintain.
We also had this slogan, You Ain't Gonna Need It (YAGNI), which meant that you weren't supposed to build features until you needed to build them.

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:

Gnoll110 said...

Nice post Jason

Think I'll steal those 4 points for my tag line on work emails, for a few week!

Josh G said...

+1

From: Enterprise Architect