Agile development has become the standard methodology for software teams building customer-focused software with sustainable practices; that said, critics often cite the following shortcomings as key hindrances and stumbling blocks to its adoption. Here are some common challenges faced by Agile practitioners and ways they can be overcome.
1. Lack of Specifications
Since by nature, Agile methodology (whether it be Scrum, Lean, or XP) embraces the unknown as part of development process—speed, iteration, and customer feedback are emphasized to mitigate this challenge. Frequent releases and little or no documentation are characteristic of Agile, and can be unnerving for developers who are accustomed to dealing with clearly defined specifications. Developers must be encouraged to shift their mode of thinking and focus on shorter development cycles and tasks. Communicating the fact that Agile will actually save developer time and frustration by eliminating wasted effort on ephemeral definitions, specifications and deliverables may help to convert the developer’s mode of thinking.
2. Shift in Attitude
Some developers may adopt a lax or counterproductive attitude or demeanor due to a misunderstanding of Agile methodology. Ultimately, it is up to the team captain (e.g., scrum master) to keep the team motivated and communicated, firing on “all-cylinders,” so to speak. Agile is by nature a highly collaborative approach to software development, and team members work in close proximity and scope. Since communication is open and frequent, often times spotting problematic behavior amongst team members early on is easier in such environments. It is up to all members to be cognizant of any individuals exhibiting problematic behavior. Addressing issues due to lack of motivation or energy at the onslaught will prevent a downward spiral of events that may put the project at-risk for the whole team.
3. Intensity of Iterations
Because each iteration of software development in Agile is intense in focus and frequency, developers may become burned out and fatigued. It is thus important to break down and assign tasks appropriately and subjectively– every team members brings their own strengths and weaknesses to the table. Developers should be empowered to decide what to do, and get the resources they need to accomplish their task. Also, teams may need to expanded and/or augmented as a relief measure if it is found that there is too much “heavy-lifting” with each iteration. Also, each team is has its own “rhythm”—find a pace that is sustainable for your particular team members.
4. Continous Testing
With Agile, testing is part of the ongoing development process, as opposed to a post-development phase of activity. This can increase project cost and time-to-market—though arguably, “baking-in” quality during the development process effectively offsets this discrepancy. That is to say, the cost of employing testers and testing activity during development is offset by the elimination of a potentially long and variable test phase once development is complete. Additionally, methods and tools around Agile testing such as functional and unit testing enable testers and developers to build and test nimbly/efficiently, in tandem.
5. Close Collaboration
The intensely collaborative nature of Agile methodology may prove taxing to some team members. This is especially the case among differing personalities, and invariably—differences will exist. Team members should be encouraged to embrace differences, the same way they embrace change in Agile. It’s a given that you collaborate better with people you know and are more than familiar with. Team building events and informal meetings and activities may encourage casual dialogue and help lighten the load of close collaboration.
6. Decreased Predictability
Software functionality is ever-changing/evolving with Agile methodology. Subsequently there is unpredictability in final deliverables and subsequent price negotiation challenges may occur. It is therefore important to help the customer focus on a fixed-budget, as opposed to a fixed-price. This can be communicated to the customer by expressing the benefits of such an arrangement: better quality, and the flexibility to modify/prioritize requirements.
7. Management Downward Flow
Commitment to Agile must be initiated from top management move downstream to the team and back up again, due to the varying techniques employed within the methodology. To this end, Agile adoption must be championed by upper management—it helps if they have even a cursory read on the subject to understand the implications. Additionally, no one is more important than the other among team members—even the team captain or scrum master is in essence, more of a facilitator.
8. Slope Creep
Because of the lack of requirements/specifications with Agile methodology, there is an inherent risk that projects may continue on beyond sustainable measure—the dreaded “ever-lasting project.” It is therefore important to maintain a clear vision and high-level grasp of a project’s ostensible goal, coupled with the ability to manage client expectations. Furthermore, the customer more often than not has the same desires to bring a product to market in a timely manner. Managing and communicating timescales effectively to clients may help mitigate or prevent projects from perpetual evolution.