Agile is one of the critical drivers of software development that helps innovate, learn, and adapt rapidly. There are multiple benefits while adopting the agile methodology. However, besides its benefits, it also comes with numerous challenges.
Adoption of the agile mindset
Transitioning from a fixed mindset to a growth mindset is one of the challenges while adopting the agile methodology. To work in an agile environment, we need a set of attitudes and beliefs which form the basis for an agile mindset. An agile mindset is a willingness to be adaptive, open-minded, transparent, people-centric, respecting one another, collaborative, with a learning mindset, adapting quickly to change positively, taking ownership, and having a common goal to deliver the greatest value possible for the customer.
Agile helps us to fail early as well as helps us learn and act consistently. As opposed to a fixed mindset, where people want to avoid failure by not taking risks and be in their comfort zone by focusing on the skills they already know, a growth mindset is all about willingness to learn new skills which would make them better with each day.
Making an agile team successful in a geographically distributed environment is one of the topmost challenges. Business continuity is maintained with distributed teams, but it comes with its own set of difficulties. Projects, when operated from different global locations covering different time zones sometimes, can lead to multiple handshakes, causing communication gaps. Hence, impacting the project timeline and expected customer delivery.
Early morning or late-night meetings lead to frustration for the team and overstretching impacts work-life balance. For distributed teams to work, clarity and frequency in communication are critical.
Communication plays a crucial role in agile. It forms the backbone to build trust and good relationships among the agile team members and team members must communicate efficiently and constantly to make the project successful.
A collaborative work environment is the basis of agile project management. Communicating to make the team understand the value agile brings, is yet another challenge. Sometimes the team sees it as an overhead. Often it needs to be supported by metrics and scorecards to show the progress and benefits it brings to the table.
Inter and intra-team communication for dependent deliverables is the key to successful deliverables. Psychological safety is another important aspect of the continuous improvement of agile processes. Inclusive team culture is also fundamental for agile to succeed. Timely stakeholder and customer communication are challenging when there are changing requirements.
At times there are changes in requirements during a sprint for several reasons, even though this is not encouraged in an agile framework. This means that work already half-done needs to be discarded or modified, which changes the scope of the feature unexpectedly. This significantly impacts the product quality as well as the delivery deadlines.
Scope creep is one of the challenges when requirements, goals, or vision changes go beyond what was originally agreed upon. Scope creep not only impacts project but the agile team as well. It sometimes even impacts the trust in leaders and the agile process. Also, it can hit the costs and focus of the product.
It is important to handle scope creeps effectively and prioritize all over again for the successful delivery of the project without affecting quality and deadlines. Focused efforts on backlog refinement are also important.
Quality deliverables with adequate testing
Completion of testing within the sprint as part of DoD (Definition of Done) is a challenge. Sometimes, code changes for unanticipated issues identified, lead to a challenge in incrementally delivering quality software. Ensuring adequate test coverage and identifying the impact of code changes in the middle of the sprint sometimes add overhead for the testers.
If frequent code changes happen, without automated testing, it leads to extra manual testing efforts and a lack of confidence in delivering quality customer deliverables.
Communication with product management is vital for testers to understand customer requirements along with close interaction with developers. The entire team should take ownership of quality assurance and should be passionate about quality. Continuous testing and continuous feedback are a few of the agile testing principles.
Agile testers usually rely on automation to ensure new code changes have not broken the existing functionality. It is sometimes a challenge to include automation as part of the DoD (Definition of Done) of the story due to the lack of vertical slicing of features and increased estimates. This often hampers product quality deliverables due to a lack of tools to validate recent and incremental code changes for backward compatibility.
Team engagement for a common goal
The agile manifesto emphasizes “human interactions over processes and tools.” Thus, the agile principle encourages motivation, support, and trust in the people involved in the project.
For a leader, while following agile, servant leadership and being a coach are especially important. Frequently changing requirements can sometimes be difficult to adapt for some of the team members while extra efforts need to be taken to make them understand the reasoning behind the changing needs and prioritization. This is important to gain back the confidence and team spirit to deliver quality, promptly.
The product manager, who is responsible for developing user stories, may have an idea about a new feature but may not be aware of the specifics. This means they cannot draft good-quality acceptance criteria. If there is missing information about requirements, the team cannot build comprehensive features. Starting the development with half-cooked requirement sometimes lead to extensive refactoring and design changes leading to poor code quality.
Celebrating failures is important for continuous improvement in the agile world. Each team member has a unique strength to make the agile team successful. An agile team is a perfect blend of unique skills which include developers, testers, products, and scrum-masters to make the team self-sufficient on the path to success. Teamwork is what makes the agile team successful and ensuring each team member understands this is particularly important.
Team members commit early on, and later, struggle to meet the delivery deadlines due to changing requirements or scope creep. They spend late nights and/or early mornings stretching themselves to keep project deliverables on track. However, somehow the project gets completed with mistakes the team members would usually not make, and the project suffers quality issues. The team becomes frustrated and starts complaining, usually leading to conflicts within the team.
To solve this problem, we need to ensure that agile teams appropriately re-estimate and commit to the work daily, in case of changing requirements. We can split the stories and communicate to the stakeholders early instead of working extra time to somehow complete it in the same sprint and causing fatigue.
Lack of clarity with roles
A Scrum team usually consists of three roles: the scrum master, the product owner, and the development team. Lack of clarity in each role and accountability in each role leads to project delays impacting deadlines. Each role assumes that the task belongs to someone else if not defined appropriately.
A team must consider formalizing some specialized roles like test manager, release manager, etc. to clearly define accountability.
Agile: Journey, not a destination
The moment we are convinced that we have mastered agile; we see new challenges surrounding us. Beauty lies in the team’s ability to respond to new challenges. An agile mindset allows to take risks and overcome challenges to deliver the highest customer value.
— Ms. Aarti Wagh, Senior Engineering Manager, Product Management, CDK Global India.