Agile is an iterative approach to project management and software development that helps teams deliver value faster and with fewer headaches”.
Agile teams break down projects to work in “small, consumable increments”
Agile methodologies include Scrum, Extreme Programming and the Dynamic Systems Development Method.
Agile values are differentiated to traditional software development by focusing on:
- Individuals & interactions over process & tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The Principles Behind the Agile Manifesto
When Agile was first formulated by a group of visionaries, it was founded on the following 12 principles:
- Prioritise customer satisfaction through early and continuous delivery of valuable software
- Allow for change even during the later stages of development, in order to cater for the customer’s competitive advantage.
- Frequent development and a shorter timescale in delivering working software.
- Collaboration between business people and developers on a daily basis
- Create an environment and build projects around motivated individuals that are supported
- Face to face conversation is the most efficient and effective method that a development team should use to convey information
- The primary measure of progress is working software
- The developers, sponsors and users should maintain a sustainable level of development and progress.
- Enhance agility through continuous attention to technical excellence
- Simplicity, the art of maximising the amount of work not done, is essential
- Self organising teams produce the best architectures, requirements and designs
- Teams should regularly reflect on ways to become more effective and work to adjust their behaviour accordingly .
Agile Breaks Project into Iterations
The absence of standardised terminology allows interchangeable use of terms, depending on what is preferred. This can occur without disrupting the ability to conduct effective coordination with other groups within the organisation.
Agile Breaks Project into Iterations
Agile consists of 4 steps to help teams become organised and effectively work through a complex project.
Step 1: MAKE A LIST
Create a to do list for the project by making a list of user stories that the customer would like to see. Shift the focus of the team from writing about requirements to talking about needs. Place user stories in the backlogs:
- Product Backlog
- Collects all the work flowing to the team
- The product owner will prioritise the tasks, signalling to the team which is most important
2. Iteration Backlog
- From the product backlog, the team will pull the work they plan to do and forward it to the iteration backlog
This is not done by the team manager or stakeholders, but arranged by the team itself.
Agile works best when the team is self-organising
Step 2: SIZE THINGS UP
Assign an approximate effort to each work items
2.1 Estimating User Stories
Once a user story has been written, the team then needs to estimate how much effort it will require to implement – which is helpful in planning an iteration
- Best guesses
- Based on current information
- Refined as we go and gain more information
- Too much detail or precision
- Designing while estimating
- A reluctance to commit
2.2 Steps to a Team Estimation
- Start with one user story and place it on a scale – EASY to DIFFICULT
- Place the other user stories to the left or right of the first user story, depending on whether they are more or less difficult to implement
- Take the time to rearrange the user stories as necessary
- Arrange the user stories into columns and assign each column points/score (of relative level of difficulty)
Step 3: SET SOME PRIORITIES
Based on the customer’s list of prioritised tasks, start with the most important first.
Step 4: START WORKING
Work your way down the list and begin delivering value, building, iterating and receiving feedback from the customer along the way.
To track the progress of work, place user stories on a Kanban board and move them along each column as and when progress is made.