Balancing Emergent Design and Intentional Architecture in Agile Software Development

Dilanka Muthukumarana
5 min readNov 2, 2023

--

Agile software development methods specifically avoid the Big Design Up-front (BDUF), instead encouraging teams to make architectural decisions by viewing them as the center of value production. With emergent design, it is encouraging that you only need to focus on the architecture enough for the next iteration of functionality.

On the other hand, it is not easy for teams to predict or forecast things that will occur outside their team environment or outside their boundaries. It is not possible for individual teams to understand the whole system landscape and avoid unnecessary/conflicting design decisions and practices.

Simply, teams alone may not be able to see the big picture and may not be able to implement or design expected changes, many of which are beyond the team’s control. Therefore, teams need a framework for design, performance, usability, and direction for cross-team design and implementation.

At the organizational level also needs a general architectural framework for sustainable technical excellence, especially in the following areas:

  1. Reducing delays by preventing unnecessary redesign.
  2. Facilitating the integration, verification, and maintenance of systems.
  3. Increasing quality by reducing Nonfunctional Requirements (NFRs).
  4. Avoid unnecessary effort and reduce waste by using proven practices whenever possible such as referential architecture.
  5. Keep everyone at the same phase/synergy of each iterations to avoid one or few person’s delay would cost for the team.

Nowadays intentional architecture methodology is useful to prevent these problems. While emergent design enables teams to respond appropriately to changing requirements without producing unnecessary analysis and design, intentional architecture provides the necessary guidance for the entire system to have conceptual integrity and to proceed in accordance with its wider purpose.

To achieve intentional architecture practice and emergent design in a SaaS product development company, it’s essential to define and allocate roles and responsibilities within the teams. We can consider a number of roles and responsibilities for various teams and their contributions to the architectural framework.

  1. Architectural team.
  2. Tech-Lead and the development team.
  3. Product owners team.
  4. Quality Assurance/Testing team.
  5. DevOps and Infrastructure team.

The Architecture Team provides high-level architectural guidance and framework, while development teams, product owners, QA, and other teams play important roles in implementing and validating the architecture. Effective communication and a shared understanding of the architectural framework are important to achieving intentional architecture while allowing for emergent design within the product development company.

Let’s look at how traditional agile development teams are organized.

The below diagram illustrates how traditional agile teams organize. Each team will have an Architect, a Tech Lead, and the rest of the team members.

Traditional agile teams

The traditional agile team organization diagram highlights the key roles and responsibilities of the team members involved in developing software using the Agile methodology.

At the top of the diagram, there is an Architect, who is responsible for the overall design and architecture of the software system. The Architect collaborates with the rest of the team to ensure that the system is designed and developed in accordance with the customer’s requirements and is scalable, maintainable, and extensible.

Next is the Tech Lead, who is responsible for the technical aspects of the project. The Tech Lead works closely with the Architect to ensure that the technical implementation aligns with the system design and that the development process follows the Agile methodology. The Tech Lead is also responsible for guiding the team members in their work, mentoring them, and resolving technical challenges.

Finally, the rest of the team members are responsible for developing the software system. These team members are cross-functional, meaning that they have a range of skills and expertise that they can apply to the project. They work collaboratively with the Architect and Tech Lead to ensure that the software is developed in line with the system design and that it meets the customer’s requirements.

Let’s look at how Agile Architecture development teams are organized.

The Agile architecture team organization diagram highlights the key roles and responsibilities of the team members involved in developing software using the Agile methodology, with a particular emphasis on the role of the architects.

Agile architecture teams

At the top of the diagram, there is a Head of Architecture, who is responsible for managing the pool of architects and ensuring that they are aligned with the business and development needs of the organization. The Head of Architecture collaborates with the development teams to ensure that the architecture is aligned with the organization’s strategic objectives.

Below the Head of Architecture, there is a pool of architects who are responsible for the overall design and architecture of the software system. The architects work together to refine requests from the business stakeholders and technical debt from the development teams, ensuring that the requirements are clearly defined and aligned with the organization’s strategic objectives.

Each architect is then assigned to a specific area of development or business strategy, working closely with the development team to ensure that the software is developed in accordance with the architecture and meets the customer’s requirements. The architect collaborates with the development team, providing guidance and support in the design and implementation of the software system.

The Agile architecture team organization structure is designed to promote collaboration, communication, and efficiency in software development. The focus on the pool of architects and their collaboration enables the organization to respond quickly to changing business requirements and customer feedback, ultimately resulting in the delivery of high-quality software that meets the organization’s strategic objectives.

Overall, the Agile architecture team organization structure is well-suited to organizations that have complex software systems or multiple business units, where a centralized architecture team can provide guidance and support to the development teams. This structure enables the organization to align its software development efforts with its strategic objectives, resulting in a more effective and efficient software development process.

--

--

Dilanka Muthukumarana
Dilanka Muthukumarana

Written by Dilanka Muthukumarana

TOGAF® Enterprise Architecture Practitioner | Consultant For Services: https://devinsights.tech/ Buy me a coffee: https://buy.stripe.com/8wMbMpdvO31ycsUbII

No responses yet