Which projects are best served by using an Agile methodology? This is an interesting question raised during and after the PCM webinar entitled "Agile Project Management Methodologies". This same question has been contemplated, discussed, and debated over many years.
I've had at least one person tell me that this is a "trick question". I'm not sure I would agree that it is a trick question, however, it is certainly not an easy question to answer. There is no one definitive answer (or at least not that I’ve found). I would, however, like to share with you, a couple of foundational elements that I have found to be necessary for successful Agile projects. For this exercise, I will reference a few terms from the Scrum methodology, but the principles translate to other Agile methodologies.
Business Requirements - For any project, it is important that you have resources on your team that have a well-defined method for gathering and documenting business requirements. In Agile, the only real difference is that User Stories are used to describe business requirements from a system user's perspective as they are to interact with the system.
If a project team is unable to capture, document, and articulate the business requirements in a way that provides enough information for your system architects to translate into a system design, an Agile project will encounter the exact same difficulties as would a classic/waterfall project. In fact, it may cause more difficulty because there is little time to make adjustments mid-Sprint, sometimes pushing intended functionality to a future sprint.
A pretty thorough description of requirements in Agile can be found at this link. My favorite excerpt is: "Both traditional requirements and use cases are meant to be successively refined into greater detail through detailed analysis."
Testing and UAT - Again, for any project, testing is fundamental and User Acceptance Testing (UAT) is no exception. It is often difficult to establish dedicated time from our business partners to perform User Acceptance Testing, for a variety of reasons, some of which cannot be planned for. In Agile, for each Sprint, testing and UAT are performed for the functions that are included in that Sprint. Therefore, your business partner is continuously engaged, which is a significant paradigm shift. However, without this, quality may be impacted and functionality may require a revisit in future Sprints.
I found a good description and breakdown of UAT in Agile at this link.
Of course, I don't expect this to serve as "the" answer. Rather, it is my hope that this serves as a catalyst to promote further discussion, and even debate, regarding the use of Agile!