Waterfall and Agile are by far the most commonly used software development processes, however, within them, there are many different styles of software development used in the management of software development projects.
While each has their own advantages and disadvantages, we will focus on Agile as it has rapidly grown in popularity over the past few years and is widely accepted throughout the software development discipline and across a wide range of industries of all sizes.
Agile is the overall encompassing name for a collection of software development methodologies that focus around iterative and incremental progression of a project.
Among the various methodologies, the popular ones include Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD) (Agile101, n.d.).
The Agile Alliance – A Global Nonprofit dedicated to promoting the concepts as outlined in the Agile Manifesto (AgileAlliance.org, 2018) – have lain out twelve vital principles to keep track of (Agile101, 2018); in summary:
- Satisfy the customer through early and continuous delivery
- Welcome changing requirements, even late in development
- Deliver working software frequently
- Business people and developers must work together daily throughout the project
- Build projects around motivated individuals
- Face-to-face conversations
- Working software is the primary measure of progress
- Agile processes promote sustainable development
- Continuous attention to technical excellence and good design enhances agility
- Self-organizing teams
- Adjust ways of working in regular intervals to be more effective
When working in an organization and undertaking software projects, it is very advantageous to adopt the Agile methodology as it allows for a greater level of control around the software that is delivered.
Development teams (Scrums) work on predefined tasks that can be completed within a given Sprint cycle which commonly lasts for two weeks (Berteig, 2014).
The goal of a Sprint is to undertake Groomed tasks (tasks that have a clear definition and analysis) that can be delivered at or before the end of the same Sprint; this is defined at or before the beginning of the effective Sprint during a Planning session.
At the end of each Sprint a Retrospective session is carried out which allows all participants to provide feedback of all positive and negative experiences in the finished Sprint; this allows for incremental changes to the delivery pipeline so that identified problems can be avoided going forward.
One of the key advantages to Scrum is that each day at a convenient time a short Standup is held with all participants to determine what each individual is working on and if any of their tasks are blocked. This allows for incremental reporting and a guarantee if the Sprint’s goals will be met on a daily basis, as well as the ability for others to help unblock relevant tasks where they can (Lum, 2016).
A well-oiled Agile team is able to continually evolve into a higher performing and self-organising team that repeatedly delivers on an incremental and changeable product backlog.
Agile101 (n.d.) What is Agile? [Online] VersionOne.com, Available from: https://www.versionone.com/agile-101/ (Accessed on 24th March 2018)
Berteig, M. (2014) 21 TIPS ON CHOOSING A SPRINT LENGTH [Online] AgileAdvice.com, Available from: http://www.agileadvice.com/2014/06/12/howtoapplyagile/21-tips-on-choosing-a-sprint-length/ (Accessed on 24th March 2018)
AgileAlliance.org (2018) The Agile Alliance [Online] AgileAlliance.org, Available from: https://www.agilealliance.org/ (Accessed on 22nd March 2018)
Agile101 (2018) 12 Principles Behind the Agile Manifesto [Online] AgileAlliance.org, Available from: https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/ (Accessed on 22nd March 2018)
Lum, M. (2016) 5 Scrum Meeting Best Practices: Master the Daily Stand-Up [Online] Sprint.ly, Available from: https://sprint.ly/blog/scrum-meeting-best-practices/ (Accessed on 24th March 2018)