What is Agile in Software Engineering?
Agile approaches help teams respond to unpredictability through incremental, iterative work cadences and empirical feedback. (AgileMethodology.org, 2008)
Advantages of Agile
- Flexibility
Potentially the main advantage to Agile is the ability to be more ?flexible? or ?agile? in terms of evolving a project as it develops as opposed to taking on a mammoth list of project requirements and only being able to show the customer the end result at project completion. (Kelly Waters, 2007) - Visibility
By undertaking a defined list of ?tasks? per ?sprint?, it allows all involved business units and customers to see the project unfolding at regular checkpoints before their eyes and provides the ability to make informed decisions about what additional backlog tasks should be added or removed for an overall better final project goal. - Ability to make iterative changes
Taking on smaller pieces of work allows developers to not be stuck with large refactoring of code when big sections of the project need to be re-worked at a later stage. (Alexander Mikula, 2015) - Development led project management
By giving project management tasks back to the development team, team members are aligned in what needs to be done and they have an knowledgeable invested interest in excelling at their individual tasks laid out by themselves. - Cost control
Undertaking sections of work at a time highlights how much of the project has been completed and what still needs to be done. This allows feature requests and backlog items to be aligned with remaining budgets allocated to the project.
Disadvantages of Agile
- Scope creep
Customers/analysts add features/tasks as the project evolves, making it difficult to complete the project without adding additional scope. (Stephen Haunts, 2014) - Does not scale well
Teams should be no more than approximately 10 members otherwise it gets harder to manage (Robert Galen, 2015). - Requires more re-work
Tasks undertaken separately without knowledge of the wider project roadmap, code often needs to be refactored to make room for additional specifications at a later stage. - Demanding on participants time
With developers involved in: planning, design, implementation, demos, retrospectives and more; it can be difficult to allocate a decent amount of time towards ?coding? per sprint. Often spending over 20% time on discussions per sprint. (Andrew Odendaal, 2016) - Testing costs can be higher
Need for QA to test each feature each sprint as opposed to only at the end of the project, this can add a lot more cost and resource. (Donald Patti, 2010)
Agile can be negative on a project when you have inexperienced developers that need hand-holding and are not able to take on tasks by themselves, there is a steep learning curve and more senior developers will need to spent a lot more time managing the processes.
On the other-hand, agile can be positive when a project?s conceptualisation has not quite been fully developed into a working prototype and the team needs the ability to be flexible with the end result.
References:
“The Agile Movement” (2008) – Available from: http://agilemethodology.org/
“Kelly Waters” – “10 Good Reasons To Do Agile Development” (2007) – Available from: http://www.allaboutagile.com/10-good-reasons-to-do-agile-development/
“Alexander Mikula” – “What are the pros and cons of the waterfall and agile/scrum project management approach?” (2015) – Available from: https://www.quora.com/What-are-the-pros-and-cons-of-the-waterfall-and-agile-scrum-project-management-approach
“Donald Patti” – “Ten Weaknesses of the Agile Methodology” (2010) – Available from: https://pmhut.com/ten-weaknesses-of-the-agile-methodology
“Stephen Haunts” – “Advantages and Disadvantages of Agile Software Development” (2014) – Available from: https://stephenhaunts.com/2014/12/19/advantages-and-disadvantages-of-agile-software-development/
“Robert Galen” – “THE 3 BEARS OF AGILE TEAM SIZE” (2015) – Available from: http://rgalen.com/agile-training-news/2015/8/22/the-3-bears-of-agile-team-size