Few weeks back I attended a wonderful session – Architecture & Agility:Married, Divorced or Just Good Friends? by Kevlin Henney. I was particularly interested in knowing Kevlin’s view on scalability , extensibility of Architecture especially using Agile methodologies like Scrum.
Before you read further let me caution you that I’m not an expert in the field of (software) “Architecture”. My expertise is in facilitating adoption of best methods and techniques for developing great products and coaching teams. I have a seen very high co-relation between great teams v/s architecture and Agility. In this article I’m sharing few notes I had made during the session and a question which I’m pondering upon about software architecture.
Kelvin’s session started with many quotes and definitions of Architecture and their limitations and interconnectedness. He shared the various views people have expressed to define architecture.
I personally use the definition provided by ANSI/IEEE , which states – Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
Kevlin spoke about all the points – components, relationships, environment, principles and subsequent design and evolution with appropriate example and quotes.
He made it very clear that (irrespective of the various definitions used)
- central to your software system
- it has to be represented (Abstraction)
- it has to be implemented (code!)
In my own experience over the years, I have noticed that different levels of importance is given to “Architecture” in Software Development efforts. I have seen huge shift in the activities related to defining architecture.
In the pre Agile era, in many organisations small group of people created huge set of design documents and they called it Architecture and very few created models by using tools. Also few teams sometimes created additional documents to meet their internal policies , procedures or contractual obligations/milestones with lot of resistance!.
In the current Agile era, surprisingly, teams are not too keen to spend lot of time on solution architecture. They are busy rolling out features every sprint and resolve architectural challenges as and when they encounter it.
In both pre-Agile era and Agile era( i.e. now), wherever the team is good and have at least one or two people with an “Architectural” mind set, the solutions have evolved exceedingly well.
Kevlin made it very clear that our architecture (Representation) and code base (implementation) are not different. He made us look at the Twelve Agile Principles – “Architecture and Agility” are embedded in each of these principles.
Final point from Kevin’s talk was that -it is NOT about being rigid w.r.to architecture. It is not about saying – “this is it”. It is about being open to changes.
On my way back I was thinking about numerous interesting quotes and examples shared during the session. I saw the beautiful tower of the Shard* and I stood admiring it’s beauty when a thought came to my mind. Before the tower was built, lot of work might have gone in defining the architecture. Then there was the labour of constructing the structure and finally the building has come into existence. What is the force that binds and continues to hold all these elements together? In the case of Shard it is “Gravity” that is holding it together. So all architectural decisions are based on it. In case of Software Systems – what would be the equivalent of “Gravity”? Unlike Shard our systems continually evolve. They are not static, standalone systems. Are the set of all “Customer Requirements” the “Gravity” that holds our Software systems? or is it something else? I don’t know but it will be a good question to ponder on.
Raghavendra (Raghav) Mithare is a professional coach and a scrum master, regional head for ProcessWhirl based out of London. Feel free to share your opinions, comments and feedback. You can reach him firstname.lastname@example.org or +44 78216 45866
Session Image courtesy : Learning Connexions Twitter Feed (@lconnexions)