For the past 10+ years, I have struggled with concept called Enterprise Architecture. I began as a programmer delivering not really great systems, but they were usable and delivered pretty fast. After I finished my computer science education, for many years fulfilled software architect positions and last 7+ years I was often called enterprise architect, although I don’t like the term at all.
Well, I learned so much B.S. about enterprise architecture, that I eventually started searching for a completely new ways of dealing with the question like “Why do we need enterprise architecture?”. I didn’t find the answer in explanations from others. Maybe only bits of it. Scattered all over the internet and books.
Many years ago I have embraced Agile Manifesto as a really great improvement in our profession. The only problem is, the are still no real answers how to deal with IT architecture and related questions.
Scott W. Ambler is probably the most known figure in the combination of Agile and Enterprise Architecture, but his article about Enterprise Architecture starts like this:
When project teams work under the assumption that they can do anything that they want, that they can use any technology that they want, chaos typically results. Functionality and information will be duplicated and reuse will occur sporadically if at all. Systems will not integrate well…
I don’t know about you, but I find this nonsense. Even disrespectful towards guys and girls who actually build the systems.
So, based on Agile values I’ve started for number of years defining and applying my own way of dealing with IT architecture on project, programme and enterprise level.
This can be compiled into following principles. The correct formulation is still work in progress, so I welcome any feedback:
- Teams committed to deliver parts of the enterprise landscape should also be responsible for the overall enterprise level architectural needs.
- Any architectural framework, methodology or best practice is a potential waste unless proven otherwise by directly contributing in delivery of business value.
- Enterprise architecture is defined just-in-time and emerges in the landscape driven by current business needs. At the same time directed by long term vision.
- Simplification of an enterprise architecture should be about the removal of unnecesary IT components instead of making nice looking drawings which usually oversimplify the real life complexity.
- The best enterprise architecture is also most refactored one.
So, this is my first blog about dealing with enterprise architecture questions the agile way.