In this age of digital transformation, every organization is working to build teams that produce predictable outcomes and deliver software that meets user demands and timelines. Following agile methodologies and practices has become the norm for such teams to meet these business requirements. Every business stakeholder expects their teams to exhibit high performance and frequently release working software to production.
But following an agile process alone will not guarantee your teams will be high performers. Teams undergo various challenges while transforming into a highly productive team. Let’s look at the areas where teams generally struggle in adopting agile principles and the typical root causes for those struggles, as well as the behaviors that can help drive teams toward greater success.
Where and Why Agile Teams Struggle
There are many areas where agile teams struggle while working to become high-performance teams. Issues with a change in culture, effectively utilizing individuals’ expertise and experiences, adopting to new ways of working, socializing and collaborating with stakeholders, and understanding the business can all be challenging.
The following table depicts the typical areas where teams struggle in their journey.
Let’s look into each of these areas in more detail.
Alignment on Common Objectives and Goals
Absence of a shared belief in the team and a lack of understanding of each team member’s role will hamper the team’s speed. Roles that are still aligned with traditional functional silos will often not be on the same page as other team members and will not be effective.
Adopting New Tools and Practices
With the evolution of agility in software development activities, new tools and practices are necessary for efficiency. Application lifecycle management (ALM) tools such as JIRA and Rally, continuous integration (CI) tools such as Jenkins and Bamboo, distributed software configuration management (CM) tools such as Git and GitHub, and lightweight test automation tools such as Selenium and JUnit all become critical.
New practices such as test-driven development (TDD), behavior-driven development (BDD), and DevOps also are introduced during this transformation. A lack of formal training and hands-on experience with these agile tools and practices will often result in a team that struggles to meet its commitments and to reach its full potential.
Incorporating Agile Testing and Automation
Teams often struggle with how to build and test software in concert, as they are used to following traditional testing practices that often start testing after code is frozen and automation is only done as an afterthought. But following these traditional practices results in delayed feedback to the developers about the quality of their code, as testing gets deferred to subsequent iterations. It can also lead to delays in deploying tested features into downstream test environments.
Decomposing Epics into User Stories and Considering Acceptance Criteria
One of the most important activities in agile planning is properly decomposing epics into user stories and estimating their size. Teams often lack the focus and ability to scrutinize requirements from a user-centric perspective, resulting in ambiguous user stories that are difficult to properly implement and test within the time the team planned for.
Dealing with Cultural Transformation
While teams are doing their best to transform to agile, there are organizational and cultural aspects that impact their performance, such as resolving dependencies with other teams in the same program or portfolio, new release management processes that must be followed, coordination with multiple stakeholders on priorities and feedback, and learning new communication and interaction channels. Not addressing these cultural challenges often results in pseudo-agile behavior where agile principles are followed in name only.
Being Operationally Disciplined
Being operationally disciplined means adhering to a set of well-defined, proven, and well-thought-out processes and consistently performing them correctly. In agile, this means conducting agile ceremonies diligently, such as having periodic meetings and discussions with stakeholders for planning, user acceptance and sprint reviews, sprint retrospectives, team brainstorming sessions, and daily Scrum meetings. These collaborative activities demand a lot of commitment and discipline from the team members in order for them to be productive.
Understanding the Business Purpose
It is very important for every member of the team to understand the business purpose of what they are working on and what impact new features will have on the users of their software. Often, the tendency of a new agile team is to focus only on their individual software component or feature, the technical details in developing it, or the immediate delivery need, while ignoring the bigger picture of the project. This results in teams that veer off track, away from customer value and needs.
Having an Encouraging Atmosphere
Agile is not only about following certain practices and ceremonies or using automated tools and technologies to speed software releases. It also demands that teams have no fear of failure, can deal with lots of unknowns, and can manage and embrace conflicts. It is also about the ability to try out innovative ideas, experiment frequently, and fail fast if failure is going to happen. Lack of having a safe environment will lead to demotivated individuals who are afraid to try new practices and processes and will not produce innovative solutions.
Becoming a High-Performance Team
While coaching helps get teams on the right path, it’s the team’s responsibility to embrace agile principles and sustain the efficiency in their activities and effectiveness in their outcome. I have found that the following eight practices help a team become high performers.
1. Aligning with Leadership Regularly
Agile teams should have regular interactions with the program sponsors or leadership and have a common understanding of project goals. Teams should understand their role in addressing the business objectives, and the entire team should speak with a “one-voice” approach when communicating with stakeholders.
If leadership asks the team to act in a way that does not align with agile principles, it is incumbent upon the team to respond in a unified voice that what is being asked isn’t acceptable agile behavior.
2. Sharing Knowledge and Experiences
Sharing new knowledge and experiences across all teams is critical to getting your entire organization up to speed as fast as possible. By actively participating in team product demonstrations, showcases, and established agile communities of practice, organizational knowledge grows much quicker than if each team attempts to learn everything on its own. Sharing experiences frequently also builds relationships among teams and increases the likelihood of effective collaboration.
3. Adopting Test-Driven Development and Behavior-Driven Development
TDD is a development practice in which low-level unit tests are used to drive successful software implementation. BDD and ATDD (acceptance test-driven development) are similar practices for specifying expected software behavior for stories and use cases using tests. All allow the business, testers, and developers to collaborate on understanding the requirements and properly building and testing the right functionality. Embedding these practices into day-to-day activities of the team not only fortifies the quality of deliverables, but helps the team reduce rework and communicate what needs to be done more clearly.
4. Defining User Stories and Requirements
The effective decomposition of epics into appropriate user stories is one of the most important activities for agile development. This not only helps provide clarity to the agile team on the requirements, but also aids them in estimating their work properly.
A proven practice for effectively breaking down epics is to use a Three Amigos approach, where representatives from the business, development, and testing have collective conversations on deriving the behavioral aspects and acceptance criteria for every user story. Your entire team should also participate in backlog grooming sessions to share their ideas and define the guidelines for a definition of “done” to determine when a user story is ready to be picked up for development.
5. Participating in Organizational Change Management
When an organization is undergoing transformational change, it is not only the responsibility of the management, but also the individual teams, to contribute positively to the process. Teams should consistently demonstrate their commitment toward achieving business goals through continuous collaboration with business stakeholders while helping to instill a high-performing agile culture in their team and overall organization. A key aspect of this commitment is delivery of promised functionality during each sprint.
6. Practicing Good Collaboration and Communication
Achieving high performance within the team and software delivery process without strong communication and collaboration will be very difficult. Team must exhibit the behavioral aspects of discipline, close collaboration, and commitment with stakeholders during iteration planning, and be open to feedback during review and retrospective meetings. Availability of high-end infrastructure, such as video conferencing, messaging systems, and other collaboration tools, at the team’s workplace will help distributed teams effectively collaborate and communicate.
7. Having Systems Thinking and Mindfulness
It’s very important that each team has a complete picture of the project and program within which they are working. To achieve this, teams should develop a deep understanding of business domain, business rules, enterprise architecture, and applications of client organization and align this knowledge with the software modules they are working on. As much as possible, teams should not focus on optimizing their specific aspects of a larger program, but help the entire program optimize its efficiency.
8. Generating a Positive and Energizing Work Culture within the Team
If team members are not open with each other and with their stakeholders, there will be very little trust. Team members that trust others, are open-minded to feedback and suggestions, are cheerful, and encourage others will make it easier for all to express and articulate new ideas. These attributes can be spread among team members through activities such as discussions without agendas (e.g., lean coffee), celebrating small achievements, and constant inspiration from leadership.
Making Agile Really Work for Your Team
When transitioning to agile, teams undergo training on whatever methodology they’ll be adopting, such as Scrum, kanban, or Extreme Programming. However, they are often not given as much help understanding the interpersonal dynamics necessary for agile to be successful. This is how teams fall into the habit of agile antipatterns.
To become a successful, high-performance agile team, it’s important to identify and act on any interpersonal or cultural issues that may be standing in the way of true agility. By adopting the eight practices outlined above, your agile team can realize the benefits of improved communication, more frequent software releases, happier customers, and overall higher performance.