Usefulness of a flexible architecture
A flexible architecture can only come to its full potential when the organization itself is flexible.
Recently I worked at a classical, hierarchal organization with all kinds of rigid procedures. The organization probably has (or at least had) very good reasons to have these procedures: when something goes wrong it will be headline news. For that reason they are quite anxious for things to go wrong. This has resulted in a standard waterfall development process. Because of this, it takes a long time to develop new applications. In some cases it takes even longer to deploy a new application in the production environment due to a complex and document heavy handover to the operations department.
About 5 years ago this organization decided to change to a flexible architecture1) by means of a SOA. The reason for this was mainly to be able to respond more quickly to business requests. In general the key benefits of a SOA are among others: IT-business alignment, improved development speed and re-usability of services. This should lead to a lower Time to Market, hence the decision for the organization to choose this architecture.
Noble benefits, but what are the added values of a flexible architecture to this kind of static organizations when time related business requirements are involved?
In my opinion there are none. The flexibility of the architecture is outbalanced by the rigidity of the design, development and deployment process. A (very) small project would probably take 4-5 months to design, 2-3 weeks to build and test and something like 3-4 months to deploy. That includes all the paper work. A flexible architecture would probably shorten this by a few weeks. Instead of 9 months it would perhaps take 8.5 months. The processes involved are simply too time consuming to take a reasonable profit of a flexible architecture.
A flexible architecture can therefore only come to its full potential when the organization itself is flexible, for example by a more iterative and incremental way of working.
More about this, in relation to Conway's law in a next blog.
1) Flexible architecture = an architecture which meets changing business demands without major changes to the architecture itself first.