Wednesday, January 30, 2013

Software Architecture and Design in Agile World - Part 1

Part 1 - On a lighter note

You are an IT professional, more specifically, a software engineer. You and your teammates develop, test and maintain software products and applications. Iterative and incremental way of delivering software at a sustainable pace, collective decision making, , group learning through short feedback loops, daily standups, retrospectives are not new to you because you have practiced agile methods. Sometimes you feel that your team members rush to deliver features – as many features as possible. There is no software architect who proposes an optimal architecture. There is no designer who delivers design artifacts. All you have is an Agile team that delivers working software at regular intervals.  Think! What happens to software architecture and design in agile world? This blog post is to share my thoughts on this topic and answer your questions.

What is your view?

What comes to your mind when you stand in front of a monument like this and wonder its gigantic view? Terms such as ‘structure’, ‘architecture’, ‘design’, ‘aesthetics’, etc. come to your mind. I am sure you observe the thick walls and huge doors, their precision and aesthetics, etc. You want to know about the history. You go closer and look at the tall gates, and the iron spikes on the gates. You appreciate the designs of various parts of this monument. There is a place and purpose for every component. The entire structure has been architected and planned well.

Let us not ignore the takeaways!

It is not wise to compare civil engineering with software engineering. Taking a deep dive in such discussions has not been beneficial. However, it is wise to view such monuments and appreciate the takeaways from such alternate sources. There can be many takeaways. The number of takeaways is left to your imagination.

Obviously, I am not going to stretch this beyond limits. This is because our IT world is different. It is dynamic. There are moving parts. Products and applications witness many upgrades of operating systems and databases. Interoperability is essential in many cases. That is not it. Scalability, performance, security, fault tolerance and many such non-functional requirements cannot be given a slipshod attention.

Points to ponder

Do you think ‘Big Up Front Design’ (BUFD) done by architects or designers is set on stone and does not change? Is change cost-effective with BUFD?

Do you think the architects of this monument (see picture) handed over their specifications to the next rung of workers and moved on to other projects? Does the initial architecture of this monument emerged or underwent changes when the construction was in progress? Were new ideas and design elements accepted and put into practice?

                                          Software Architecture and Design in Agile World - Part 2  >>>>>>>>>>

No comments: