At times, enterprises may put all their efforts into technical capabilities but then find themselves continuing to struggle to develop software due to their lack of understanding of their culture and how teams communicate and interact. Software development is becoming increasingly complex and requires well-organized teams to interact and cope with the system’s demands.
Managers must build agile teams that operate independently and are structured around a stream or flow of work that responds to feedback and delivers value. Agile development principles and values emphasize teams working together, communicating and collaborating early and often, and adapting according to feedback.
In practice, product development is highly dynamic and generates the need for teams to interact with other teams, requiring coordination and support throughout the software development cycle. As many factors affect this process, including organization model, communication culture, management style, scenarios, context, complexity, and more, not all enterprises build and deliver software efficiently.
Agile Organization Model
The relationship between teams and culture as well as how teams communicate influences not only how software is developed but also its final outcome. Therefore, it’s critical to have teams well aligned to ensure the business’s success. This reasoning is not anything new; it was introduced by Melvin Conway in 1967 and is referred to as Conway’s Law.
The agile organizational model and its team structures are aligned to achieve the desired software architecture. Agile development teams adapt to the operating context and end users of its products (needs) to create successful outcomes. So, you need to form an outcome-based team with specific skills and capacities to build the right software.
Agile Teams Structure
Software development is a team activity that requires a team structure optimized for various aspects in order to deliver software consistently and at high velocity. Managers create agile teams and design an interaction model that motivates and encourages responsibility, accountability, and a lean-agile mindset focused on solving end-user needs.
The software development process requires empowered teams with structures that integrate and adapt to the workflows and react with agility. In addition, the flexibility of interactions between the company structures and the clear expectations of its members’ behavior helps keep a high trusting environment.
Agile teams are designed to evolve with the organization, its people, and its technologies based on collaboration and communication that promote healthy team relationships. Innovative organizations promote a flexible team-centric approach and encourage increasing awareness within the organization so the team can best adapt to changing product needs.
Managers assign responsibilities to agile teams according to the domain expertise of the individuals within the team while also considering their workloads and capacities to excel in their tasks. Agile teams are small and have sufficient autonomy to achieve their purpose and objectives while keeping workloads within their capacity limitations. A continuous evaluation of team interactions as well as making sure to restrict their workloads helps avoid bottlenecks without surpassing the team’s cognitive skills capacity.
It is critical to implement an organizational model to develop the right software, considering culture and organizational changes and creating a team structure in which members interact and collaborate to evolve in unpredictable and uncertain business environments.
Agile Team Design Principles
Organizations set up agile teams with the idea of interacting with internal and external collaborators and of being fully aligned to operate with new technologies and avoid silos (decentralized architecture). Agile teams are organized naturally based on the desired final product. So, it is critical to analyze the intended product architecture and communication patterns before forming the team.
Assigning agile teams to a project is a core competency essential for achieving business agility, as these teams are the ones who create and support software products. Therefore, the business depends on its team organization and technical competency for building reliable products.
Agile teams are organized with shared visions and purpose in a flow-based model with authority and accountability. Ideal teams are cross-functional, consisting of five to ten individuals who commit small batches of work in short cycles, adjust according to feedback, and learn and adapt continuously, thereby reducing handoffs and delays.
To accomplish the alignment of teams with the product architecture, teams work cohesively in smaller modules with minimum dependencies (loosely couple architecture), maximizing the ability to work in a fast flow of rapid changes and adaptations to new contexts.
Managers with technical expertise and an understanding of organizational structures are in charge of designing agile teams for a fast-flow team model. They also evaluate the communication, frequency, and collaboration styles within teams, between paired teams, and in conjunction with other teams.
Both the volume and patterns of communication show how team members interact and help identify the tools necessary for improving their communication flow and relationships.
Agile Team Interactions
Organizational agility begins by forming teams and assigning responsibilities (workloads) to agile software teams within their cognitive capacity (complexity) for delivering quality products on time. Agile teams are usually small (around five to ten people) and cross-functional, with low friction interactions, autonomy, and a sense of system ownership.
Agile teams take time to adapt; they must become familiar with each other and reach cohesiveness before they can start performing effectively. However, once teams are stable, they develop high trust and awareness and become highly productive.
Team cohesion is improved through coaching activities that nurture members to help keep the team’s needs above their individual interests and keep the team’s dynamics alive. By the same token, teams are properly incentivized and rewarded for their efforts.
Managers assign workloads to agile teams based on their level of expertise and domain complexity; in addition, they avoid context switching to reduce overloading and keep the team highly motivated. The size of the system and the team capacity are also evaluated for designing the software boundaries to optimize the team, considering the cognitive load and team size to maintain a productive workflow.
Agile teams define interactions (working patterns) to create good communication (interfaces) about their work information, code changes, documentation, and roadmap visibility to facilitate interaction with other teams. Separation of concerns (Soc) is another relevant aspect of maintaining the separation between teams.
Agile Team Design
Organizational design is simplified by creating teams with specific responsibilities and behaviors. Agile organizations design team structures around responsibilities and maintain team autonomy, fluent interrelationships, and independent work streams.
Wondering which team structure to adopt? Agile teams are organized around values (features) and components (technical solutions) that coexist and work on parts of the system, forming the basis of team structure. The SAFe agile framework describes the different types of teams that may be considered when designing agile teams.
- Agile Teams / Scrum— The main teams are organized around a value and are aligned to a single stream (flow) with a purpose around a business domain area or capability. Working with live systems (near the users), this team works independently, and other teams serve it.
- System shared services— These are subsystem teams with specialized skills that support other teams.
- Enablers— Enabling teams are specialists who assist other teams in acquiring new technologies, capabilities, and practices.
- Cloud/platform teams— Cloud/platform teams provide platforms, APIs, tools, and services to other teams.
Agile teams are aligned with other teams to deliver results, focusing on the flow of changes, sharing best practices, and continuously learning through feedback mechanisms, where information flows back from the running environment. Change is encouraged when teams reduce handoffs and work within their boundaries.
Teams that continuously improve from feedback develop a sense of awareness about their product users and market needs that helps them discover issues and problems and respond quickly (responsive teams).
Successful agile teams depend on aspects of the operations context, leadership, experience, and interactions with the surrounding environment (other teams) that must be addressed when designing agile teams.
Agile teams are self-sufficient. They share code when developing features with other teams in a coordinated fashion while maintaining a high level of discipline. They avoid the accumulation of technical debt, which improves stability.
Specific roles help manage and support interactions between teams to improve delivery cadence. Agile teams have external dependencies from IT operations functions (platform or enabling teams) who create services to be consumed on a self-service basis, thereby helping to keep the team’s autonomy and avoiding delays.
Value Stream Teams
The main teams are organized around a value and are aligned to a single stream (flow) with a purpose around a business domain area or capability. Working with live systems (near the users), this team works independently, and other teams serve it.
Scrum Master
It is a facilitator for an Agile development team. They are responsible for managing the exchange of information between team members. The Scrum Master is accountable for the Team’s effectiveness.
System Shared Services
These are subsystem teams with specialized skills that support other teams.
Cloud/Platform Teams
Cloud/platform teams provide platforms, APIs, tools, and services to other teams.
System Shared Services
Enabling teams are specialists who assist other teams in acquiring new technologies, capabilities, and practices. Enablers are used for exploration, evolving the architecture, improving infrastructure and compliance activities.
Stakeholders
People outside the Scrum team who have an interest in the product developed by the team. Could be direct managers, subject matter experts, account managers, salespeople or end users.
The interaction between development and operations teams and the need to improve their operational performance originated the DevOps movement. Development and operations teams work together to transform the software delivery process. Agile teams adopt DevOps practices and capabilities to add value to the stream to deliver applications consistently at high velocity.
DevOps teams are created depending on the enterprise’s operational context, the technical maturity of the teams, and the scale of the software needs. Applying DevOps practices helps balance the team’s commitment and ensures systems reliability.
Team leaders define responsibilities effectively and help build capabilities while making adjustments and splitting responsibilities to avoid the creation of dependencies. Agile team leadership set the methods for tracking responsibilities and help maintain the appropriate communication patterns, determining the impact or interference of dependencies in the workflow.
Agile Teams Characteristics
Flow-based Team Model
Aligned with a Shared Purpose
Team Size: Five to Nine Members
Cognitive Skills Capacity
Align Architecture to Problem Domain (Modularity)
Team Autonomy and Low Dependencies
Authority and Accountability
Full Ownership
Software Boundaries Match Team Capacity
Reduce Handoffs
Self-Sufficient Teams
Align Boundaries to Team Capabilities
Team Cohesiveness Enhanced Through Coaching and Mentoring
Agile Team Interactions Evolution
The organizational design focuses on creating team interaction modes that promote the flow and enable adopting the right approach to software delivery as required by the organization. Business conditions change frequently, and products adapt quickly to meet users’ needs. Therefore, teams in charge of building products also evolve parallel to the business. Agile teams adapt to changing business environments in order to remain competitive.
Agile teams change and adapt to new conditions, evolve in their communication, and provide services to support other teams. Therefore, careful communication and awareness of agile best practices and formalities among teams are necessary, as well as an understanding of how communication takes place and how teams collaborate, so members understand the boundaries and behavioral expectations.
Teams collaborate to explore, discover, and exchange technical information needed to solve problems and improve product designs. Another interaction is when a team provides a software component or code API that defines a service consumed by another team. This typically occurs with minimal verbal collaboration.
Agile teams also benefit from interactions with teams of enablers who facilitate and support other teams and capabilities to reduce problems and improve effectiveness.
Team interactions are designed to anticipate the intended software product and to continuously adjust according to the combinations and adaptations of the interacting team’s needs, requirements, or contexts.
Analyze your organization, technologies, and technical capabilities before designing agile teams.
Effective agile teams are the result of good technical behaviors and the right management style, leading to operational and delivery performance. Implementing agile and DevOps practices helps build and improve key capabilities to gain speed and stability.
Managers understand their teams’ capabilities and provide support to drive improvements. Capabilities are tied to outcomes and can be cultural, technical, or process-related. These capabilities impact software delivery and are built or adopted in the organization considering the context, goals, systems, and constraints.
Successful organizations consider people their most important asset as they build the software upon which their business success is dependent.