Agile Software Development Lifecycle
Software Development projects are generally unpredictable in nature. In order to cope better with this unpredictability, Agile proposes a more flexible approach to Project Management. Below is the Manifesto for Agile Software Development:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
- Scrum is one way to introduce agility in the development process.
- It is an iterative process for completing complex software development tasks.
- It breaks the envisioned product down into bite size chunks for developers to build.
- This allows regular feedback from the client as well as product increments in short iterations.
There are three important role players involved in a scrum team:
- Product Owner
- Scrum Master
At NML the client is typically the Product Owner (PO). The client is involved in the process of defining and prioritising the product backlog. The PO is also involved in prioritising features and may occasionally be involved in backlog grooming and sprint planning.
At the end of a sprint (we usually work in two week sprints) the client has a potentially shippable piece of code. The task is to make sure the different pieces of code fit together, and that the most important pieces get built first. This piece of code is then demonstrated to the client at the end of each the sprint (this depends on the client's availability).
The project managers at NML fulfil the role of Scrum Master. They are responsible for the removal of impediments, keeping the team focused on the goal of completing all tasks, facilitating scrum meetings and ensuring that the PO is updated on progress.
The development team includes the software developers and testers. The role of the scrum master is not to manage the development team, but rather to facilitate the scrum process. Development teams should ideally be self-organising and have autonomy in how they achieve their goals.