Wednesday, January 30, 2013

Software Architecture and Design in Agile World - Part 3

Part 3 – Let us inspect and adapt

Our expectations

What is the role of an architect? What do we expect from an architect? Obviously, technical skills and experience are the building blocks to become an architect because the primary role of an architect is to understand requirements, suggest architectural alternatives, analyze the pros and cons and arrive at an optimal or feasible architectural recommendation. To do this, architects need to be avid learners. They have to be hands-on in performing design activities. They have to be expert programmers and participating in coding. Architects have to have mentoring and coaching skills. They have to be great influencers and negotiators. They have to be great leaders.

What do architects deliver? Do they deliver a presentation or a document with block diagrams or guidelines or all these? Do they go beyond architecture definition and contribute to architecture implementation? Do they write code or deliver various components that constitute the architecture framework? These questions make us reflect on the ground realities on what is delivered by architects in projects that do not follow agile methods.

The impact

When a product or application is delivered to customer or rolled out in production, production support, sustenance, technical support and consulting teams play a significant role ensuring customer satisfaction. How do architects contribute to these teams? Do the activities or contributions of architects add value to the work life of someone who is involved in production support, sustenance or technical support or consulting? In order to debug or to understand the regression issues, do we get an up-to-date schematic or map that improves the efficiency of such activities? Or have we let these teams wade through thousands and thousands of lines of code and find a solution?

Agility and agile methods

Agility is about the ability to both create and respond to change in order to profit in a turbulent business environment. It means adaptability rather than predictability. Agile methods focus more on people rather than detailed development processes. They are based on collaborative values and principles. They are light-weight and barely sufficient methodologies. They adhere to Agile Manifesto and Agile Principles. Team members in agile teams believe and experience term such as, ‘deliver early’, ‘delivery in short intervals or time-boxes or iterations’, ‘work in sustainable pace’, ‘deliver business value’, ‘self-enabled or led teams’, ‘customer collaboration’, ‘responding to change’, ‘fail early, fail fast’, ‘inspect, learn, adapt’, etc. For them working code is the true measure of progress.

Two schools of thought

Architects from the traditional school of thought live in the world of ‘architecture thinking’. The script that plays in their mind is, “I am the expert. I will convene meeting with some of the senior members. I will decide and suggest the right things. I believe in Big-Up-Front-Design (BUFD). Architecture is a complex, esoteric entity. I am autonomous. I am up in the org hierarchy. Coding is what I used to do several years ago.”

Agile practitioners believe in ‘agile thinking’. The script that plays in their mind is, “We do ‘just enough’ architectural activities. We don’t do BUFD. Often, BUFD results in waste and rigidity. I am here to work with my team members. I am their mentor. We believe in emerging architecture and design. Our approach is to create systems that can accommodate changes in a cost effective manner. For this we will work as a team to evolve the right architecture or design. We will provide the right diagrams and documents as and when necessary to help our teams.”

Architects in agile teams are not confined to their office or cabin. They work in open space with team members throughout the project. They nurture young architects through mentoring and working together. In mature agile teams everyone plays the role of architect or designer. In agile world, architecture and design are not dead! Agile projects need architects and designers who follow agile principles. Architects and designers can add value in agile projects.

How can they add value? What are the key factors that influence the architecture approach? Let us discuss this in the next post.

<<<<< Part 2                                    Software Architecture and Design in Agile World - Part 4

No comments: