Agile has become very popular in the last few years. Its iterative and flexible approach is considered more and more suitable to manage information technology development projects in fast changing organizations.
There are multiple Agile software development methods that can be adopted, Extreme Programing (XP), SCRUM, Lean Development (LD) and Dynamic System Development Methodology (DSDM) are some of them. From those, SCRUM is the most popular and widely used. The Guide to the Project Management Body of Knowledge (PMBOK® Guide) includes Agile methods under the Project Lifecycle definition: “Adaptive life cycles are intended to respond to high level of change and ongoing stakeholder involvement. Adaptive methods are also iterative and incremental, but differ in that iterations are very rapid (usually with a duration of 2 to 4 weeks) and are fixed in time and costs”. PMBOK ® Guide Fifth Edition, page 46.
When an Agile method should be applied to a project? In order to take that decision you may verify the following characteristics in your project:
Project size: Agile works better in small projects where you can provide small and punctual deliverables in very short periods of time in order to build gradually the final product. It is also good to use Agile in complex projects where the customer has difficulties to define the requirements or those are subject to change very frequently. You may also break a big project into smaller parts and apply Agile to manage those parts individually.
Customer / stakeholder’s availability: Agile requires high stakeholder engagement as deliverables are to be produced in very short periods of time covering multiple iterations. Stakeholders provide high-level input to produce those deliverables and they normally participate in the testing process. Collaboration between stakeholders is very important.
Project objectives and requirements: if requirements change frequently, Agile provides a flexible approach that let you prototype ideas to the customer in a fixed time-scale, allowing modifications to deliverables in each iteration. In an Agile approach requirements emerge gradually by constant feedback cycles and interaction among project participants.
Project team: in Agile, the team is empowered and self-organized to accomplish the tasks. They work in a truly cooperative environment where leaders collaborate with team members to produce the deliverables in an incremental way. It is important to take on account if the team is collocated or geographically dispersed in order to evaluate the organization and communications difficulties you may face.
Project estimation and planning: when using Agile the iterations are the planning units for your project. In every iteration, a set of activities related to certain deliverable(s) is completed. You may not get the deliverable(s) for that iteration totally correct, then you would refine them in the next iteration and so on. If planned deliverables cannot be
Organization’s experience in Agile methodology: if your organization is new to Agile concepts it will take more time and effort to adopt those processes before you can applied to a project. If that is your case, you may start talking about Agile and promote its use among your teams.
Some projects suit Agile more than others. For example. if your project’s main objective is to implement an ERP module where the supplier has a pre-defined process and detailed steps, it might be better to adopt a water fall approach. By contrast, if your project is related to a reporting system where multiple reports will serve diverse business units or it includes the deployment of a system that requires multiple iterations to be setup and tune, an Agile approach would work better.
In my next entry I’ll talk about the project manager role in Agile projects.
Are you using Agile already to manage your projects? Share your experience with us, we’ll be happy to hear from you.