Which IT Project Methodology? Agile – why and why not?
Welcome to the latest in an occasional series on the different IT Project Management methodologies, last time we looked at Waterfall, now let's focus on Agile.
Agile. What Is It, When Should You Use It?
The story goes that seventeen software thought leaders, programmers and developers met at The Lodge at the Snowbird ski resort, in the Wasatch mountains of Utah. They skied, ate, and talked. What came out of those two February days would be ground breaking, the Agile ‘Software Development’ Manifesto would change project management - forever.
When thinking of the term agile you think of something that is faced paced and able to change direction in an instant, for example, a Manchester United footballer. The terms ‘faced paced’ and ‘change of direction’ are extremely applicable to Agile projects.
Agile projects move extremely quickly, the methodology allows you to work quickly in order to deliver new software to your clients on a faster or more regular basis. Agile projects don’t literally change directions, but teams do have to make decisions that can potentially change the course of their project, for example, when a particular issue must be solved quickly, Agile suits this environment to ensure that delivery isn’t delayed.
This is how I summed up Agile in an introductory, flyover piece on methodologies ...
Although Agile hasn't been around as long, it is now also considered one of the "old faithful" methodologies. Agile is one of the most popular Project Management approaches and for many PMs, it is their default.
When Is It Most Effective? Where it is advantageous to see incremental deliverables – e.g. software development or to “box” up elements of functionality, build it, review it and amend, or multiple streams at the same time. So, Agile benefits projects that are incremental, evolutionary or iterative and collaborative projects, requiring cross-departmental communication. Agile was created to address some of the perceived limitations of Waterfall and as such it is perfect for fast-moving environments where greater flexibility is key, the most obvious example being software development.
The "Manifesto for Agile Software Development" defines the ethos behind the methodology nicely, placing individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation and responding to change over following a plan. The 12 principles of Agile (more detail in the stand-alone post on Agile) leave users with clarity of purpose but lots of room for creative thinking.
What do advocates of the agile methodology say?
Continuous Delivery And Constant Visibility - Agile allows for a continuous stream to be delivered to your customer. Throughout the project, customers may be ‘drip-fed’ different iterations and incremental chunks, new versions of the software may be delivered continuously over a certain time frame, for example, once a week. With each delivery customers may be given a list that details the various features that have been added during the latest phase of the project.
More effective Short to Mid Term Planning - One of the main attributes of Agile is momentum, it allows a project to run fluidly through the various short-term phases of development. Issues may arise towards the end of a phase, rather than allowing this issue to delay completion developers can plan to resolve the issue in the following phase of the project, this, therefore, reduces the chance of delays whilst ensuring issues are resolved.
Ongoing Testing- Agile allows for modular testing to be carried out throughout a project. The Agile Manifesto states, “Working software is the primary measure of progress,” therefore ensuring any issues that arise throughout a project are addressed is vital. The agile methodology allows for testing to be carried out throughout the project and can, therefore, be rectified. This reduces the risk of issues de-railing a project towards the end.
Rapid Evaluation and Delivery - Agile can also allow your team to quickly produce a fully functioning piece of software in a shorter timescale. Evaluation is fast and actionable increasing the effectiveness of software development teams.
Flexibility And Better Change Management - Change can occur at many stages during a project, whether during planning or during a certain phase of the project and while some consider change as a problem, Agile allows change to happen in small manageable chunks. Smaller changes can also be easily reversed (in comparison with larger changes or when using other methodologies). If the change is not suitable to the project, Agile facilitates quick restoration of previous iterations or for a new, more acceptable change to be made. Overall, these factors ensure that individuals start to see change as a positive rather than a negative.
What Do Its Detractors Say?
Need For Cultural Change - The demands in which Agile teams are placed under are in stark contrast to various other methodologies, this can be an issue for those used to alternative approaches. Agile requires teams to work closely aside one another in a disciplined manner. Teams that are not used to these demands can struggle with this and often a cultural re-frame is needed. In order to counter this, in-experienced teams could be mentored, enabling them to cope with the demands of Agile, whilst also learning the necessary skills.
Need For New Skills - In order for Agile to be successful teams need to possess a set of advanced skills. This is again a key issue for inexperienced teams who may not yet have developed those skills. Teams need to be able to work quickly in a pressurised environment whilst having the capacity to solve complex issues. In order to work effectively within these environments, teamwork led skills, such as communication, are vital to ensure the team works as a collaborative unit. Again, inexperienced teams can be mentored.
Need For Extra Training - Ensuring teams are adequately trained is vital for Agile project success, many detractors point to the fact that insufficient training can lead to an increased risk of failure compared with other methodologies. This is true but could be said of anything, lack of driver training could result in more car accidents but that doesn’t mean you should abandon the car – you stick on the ‘L’ plates and learn. Those that are used to other methodologies often assume that the rules are more relaxed on an agile programme due to the decreased reliance on other development processes. This is however not the case, teams must follow the tasks that are prescribed to them in order to ensure their project is a success.
Clarity Can Be An Issue - Agile is extremely dependent on the clarity given by the client. When a client is clear in terms of their intended outcome your team will have a clear goal to work towards. However, when a client is less clear agile projects may go off at a tangent quicker than other methodologies, if left unchecked. Again, this can be solved by ensuring that your team has experienced members! Experienced individuals will know when further consultation is needed to fully understand the client’s desired outcome and expectations. These consultations gift you the chance to ask any potential questions whilst also gaining feedback from the client and should be carried out at each phase of the programme. Do this and an agile project will remain on track in terms of reaching your client's desired outcome.
There’s Danger of Excessive Risk-Taking - Agile's detractors believe that within inexperienced teams there is a risk of trying to complete too many tasks within one phase of the project, therefore placing an increased amount of pressure on the team. We have all seen over-ambition fuelled by the apparent simplicity and organisation of Agile processes and this is another area where experience is key in Agile teams. Experience teaches you what your limits are and the discipline to plan each phase accordingly.
In conclusion, on balance, I think Agile is the methodology most suited to most project types and probably the best foundation for a hybrid approach. Agile comes with more demands but with proper training and execution, the rewards can be much greater.