The misconception of “Software Architecture”

Coming up with a better metaphor for the creation of software.

--

One thing that bothers me for quite some time is the term “Software Architecture”. It somehow implies that a huge software system can be build like a skyscraper by tediously designing, specifying and then finally executing on the plan. We realized a long time ago that this does not work and the rise and success of agile methodologies like Kanban and SCRUM are the proof.

Still the term architecture is widely used among developers. When I think about architecture in my mind comes something like this intricately designed building:

The Dancing House in Prague (photo by LenaSevcikova)

Also when I look at the wikipedia definition it does not sound very much like a real world agile software project to me:

Architecture (Latin architectura, from the Greek ἀρχιτέκτων arkhitekton “architect”, from ἀρχι- “chief” and τέκτων “builder”) is both the process and the product of planning, designing, and constructing buildings and other physical structures.

When I thought about a new metaphor to capture the way real world software is build, I thought about the way temporary events like culture and music festivals are set up:

Random Open Air Stage (photo by dariogerussi)

The structures are all very flexible and can be adopted to the environment. They consist of modular and composable parts, that can be used to build a small or big stage. It can be set up on different grounds and moved to other locations in a moderate amount of time.

Dependent on the artist currently performing the details and decoration on the stage will be changed all the time. There are more visitors coming than expected? No problem! Just add some more toilets and food stands. There is a storm approaching? Just pull down the banners and covers for a couple of hours, until it clears up again.

This is how I expect modern software tools and frameworks should behave: Resilience in the face of constant change and fast reaction to external events!

So perhaps instead of “Software Architecture” we should think about it more like an ongoing event that has to be organized and managed? I admit “Software Event Management” is not as handy a term as “Software Architecture”, but it would be closer to the truth for sure!

--

--