Over the past couple of years I have been involved in two particularly large scale and innovative architectural engagements. One was for a Critical National Infrastructure program running into the £100s of millions with many life critical elements, high performance and extremely high availability. The second I am still working on and involves a .com start-up - this has many similar distributed computing challenges of the former but I am seeing some other trends which are less technical but possibly more intriguing and of possibly greater impact.
Architecting both systems with such massive scope has been very challenging, especially when working solo. There is just so much to consider - so many perspectives, constraints, requirements, non-functionals, unknowns (known or otherwise!). So, observation number one (and this could just be a personal thing): "pair architecting". Maybe not always pair architecting, but at least the practice of regularly pairing up with Subject Matter Experts. The synergy of the pairing is phenomenal. The sustainable pace, the rate at which ideas are put forward, evaluated, refined, distilled and so on is just amazing. The only drawback is that documentation cannot be created at the speed of thought! January last year I spent a couple of weeks pair architecting with ex-colleague and friend Charles Young. Shut away in an office with a white board we thrashed through a lot of architecture with a great deal of critical thinking.
So when Ron Jacobs recently podcasted about "Scenario Based Architecture Validation" it really struck a chord with me. The saying "It is hard to soar like an eagle when you are surrounded by turkeys" works very well in the opposite: when you are surrounded by inspiring people and get to pair up you can achieve some amazing things.
Another observation, but perhaps more on the cautionary flip side, is to beware "Group Think" and "people’s innate need to be consistent". The first is defined as: a mode of thinking that people engage in when they are deeply involved in a cohesive in-group, when the members' strivings for unanimity override their motivation to realistically appraise alternative courses of action. I see this "Group Think" happening sometimes when someone comes up with a really fabulous idea, everyone is excited about it, and the group members proceed to become great advocates of it - defending it vigorously against alternatives quite possibly at the cost of evolving to the best architecture. The biggest danger here, is that the group may not see that they are in the grip of this behaviour. Architect's egos must be checked at the door, common sense and open mindedness must prevail at all times. Openly invite external review and accept constructive criticism as exactly that - constructive. Force someone to play devil's advocate and so on.
It was actually Scott Adams' post here that actually made me think about putting this post together. It is the notion that when researchers asked people to write essays in support of a random point of view they did not hold, months later the majority held the opinion they wrote about, regardless of the topic. Once a person commits an opinion to writing – even an opinion he does not hold – it soon becomes his actual opinion. The post vaguely supports the notion of a cohesive team, documenting their architecture could become irrational through their innate desire to be consistent with it even in the face of logic to the contrary.
I am not advocating not documenting an architecture in fear of becoming irrational and dissolving the chance of evolving to the best architecture, but I believe that a team that is incredibly passionate and devoted to building an innovative proposition and architecture should make sure measures are in place to defend against these psychological barriers to being the best!