Project management methodologies#
Why choose a project management methodology?#
Without a design approach, programmers resort to designing as we go, typing in code, trying what works, and making it up as we go along. When trying to collaborate to make software with others this can result in lots of wasted time, software that only the author understands, components built by colleagues that don’t work together, or code that the programmer thinks is nice but that doesn’t meet the user’s requirements.
Traditional versus Agile#
The traditional approach (Waterfall) argues that the elements of design should occur in order: first requirements capture, then functional design, then architectural design. This approach is based on the idea that if a mistake is made in the design, then programming effort is wasted, so significant effort is spent in trying to ensure that requirements are well understood and that the design is correct before programming starts.
Agile project management is an iterative approach to delivering a project throughout its life cycle. Iterative or agile life cycles are composed of several iterations or incremental steps towards the completion of a project. Iterative approaches are frequently used in software development projects to promote velocity and adaptability since the benefit of iteration is that you can adjust as you go along rather than following a linear path. One of the aims of an agile or iterative approach is to release benefits throughout the process rather than only at the end.
- Association for Project Management (APM)
- Figure from Association for Project Management
The Agile Manifesto#
We are uncovering better ways of developing software by doing it and helping others do it.
The Agile principles:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
- Manifesto for Agile Software Development
Agile is not absence of methodology
The Agile movement is not anti-methodology, in fact, many of us want to restore credibility to the word methodology. We want to restore a balance. We embrace modelling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment.
- Jim Highsmith from The Alan Turing Institute
Elements of an Agile Process#
Ongoing design
Iterative development
Continuous delivery
Self-organising teams
Agile methodologies#
There are several methodologies that can be used to manage an agile project, including:
DAD (disciplined agile delivery)
DSDM (dynamic systems development method)
Kanban
Lean
LeSS (large-scale Scrum)
RAD (rapid application development)
SAFe (scaled agile framework enterprise)
Scaled agile
Scrum
Scrum of scrums
XP (eXtreme Programming)