Agile (adj): used for describing ways of planning and doing work in which it is understood that making changes as they are needed is an important part of the job
Agile is a globally accepted philosophy for handling and managing software development projects. Unlike other project management methodologies which are based on rules, frameworks and set procedures, Agile provides the freedom to keep up with changing demands as well as the opportunity to fully utilise the versatility of software development. Rather than getting bogged down in the extensive documentation that can detract from customer requirements, Agile encourages increased efficiency and performance.
The Agile philosophy is centred around the Agile Manifesto which consists of 4 high-level values and 12 supporting principles.
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
That is, while there is value in the items on the right, we value the items on the left more.
Scrum (n): A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.
Scrum is a framework within which different processes and techniques can be employed. The essence of Scrum is a small, highly flexible and adaptive team of people.
Courage
Scrum Team members have the courage to do the right thing and work on tough problems
Focus
Everyone focuses on the work of the Sprint and the goals of the Scrum Team
Commitment
People personally commit to achieving the goals of the Scrum Team
Respect
Scrum Team members respect each other to be capable, independent people
Openness
The Scrum Team and its stakeholders agree to be open about all the work and the challenges with performing the work
Scrum principles are the core guidelines for applying the Scrum framework and should be used in all projects. (Aspects and processes, however, can be modified to meet the requirements of the project or the organisation.)
There are 6 main principles that apply to the Scrum framework:
Lean (adj): using fewer employees or less money in order to decrease waste, while continuing to operate effectively
The Lean Software Development methodology emphasises speed and efficiency, relying on rapid and reliable feedback between customers and programmers. With a concentration on ensuring everyone is as productive as possible at all times, Lean focuses on fast and efficient decision-making abilities of small teams and individuals.
Originating from Kanban (n): A Japanese manufacturing system in which the supply of components is regulated through the use of an instruction card sent along the production line.
Kanban is a method used to manage and improve work across systems. It aims to balance demands with available capacity. Work items are visualised to give the team a view of progress and process, from start to finish—usually via a Kanban board. Work is pulled as capacity permits, rather than being pushed into the process when requested.
Extreme Programming or XP is a popular (and controversial) methodology. A highly disciplined method, it’s characterised by the aims to produce higher quality software (delivered in intervals of one to three weeks) and providing the development team with a higher quality of life.
Crystal methodology is a lightweight and adaptable approach. The framework focuses on individuals and their interactions as opposed to processes and tools. It emphasises direct team collaboration and de-emphasises documentation and reporting based on the beliefs that teams can find their own ways to improve and optimise their workflow and every project is unique and always changing.
DSDM (formerly known as Dynamic Systems Development Method) focuses on the entire life cycle and is a method built around the philosophy that ‘any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the business’.
Feature Driven Development, or FDD, is a lightweight, iterative and incremental software development process. Its main purpose is to deliver tangible, working software repeatedly in a timely manner.
An Agile team working in Scrum has 3 main roles.
The Product Owner (PO) serves as the client proxy and is responsible for defining User Stories and prioritising the Team Backlog. This member of the Agile Team has a significant role in quality control and is the only person who can accept User Stories as done.
The Scrum Master is responsible for ensuring that the Agile Team lives agile values and principles and follows any processes and practices they agreed they would use.
The Scrum Team is a collection of individuals which usually consists of between 5 and 9 members. Following a common goal, they work together to ensure the delivery of product increments.
Also known as Daily Scrum Meetings, Daily Scrum meetings are brief sessions which take place each day so the team can share information and stay informed.
Each member of the team answers 3 questions:
A User Story is a brief description of a function wanted by an end-user written from their perspective and in the language they understand.
Automated testing offers a fast and efficient way to find bugs, eliminating defects at their source while protecting other features so that a working software package is delivered to the client.
All software development is regularly and automatically complied, built, deployed and tested.
There are 3 levels of development planning in Agile.
Release Planning
Clients and Developers work together to decide which User Stories to include in each release.
Iteration Planning
The client defines and prioritises the User Stories and the developers estimate how much effort is required to develop each feature.
Task Planning
User Stories are broken down into steps by the development team. Each team member is assigned a task and will provide an estimate of how much effort is required to perform the task.
An Agile approach encourages collaboration and helps to reduce the risks associated with software development.
Studies comparing Agile to traditional methods of software project management have found that Agile projects offered:
Agile provides multiple opportunities for team and client engagement. By involving clients in every step of the project, the team can truly understand their requirements.
From prioritising features to frequent software builds, clients are able to see their project work in progress.
Thanks to fixed Sprints of between 1 and 4 weeks, new features are delivered quickly and predictably.
By using time-boxed and fixed Sprints, the cost and amount of work are easy to predict which can help the client prioritise features.
New items in the backlog can always be planned for the next iteration. The is always the opportunity to refine and reprioritise the product backlog.
Because the client determines the priority of the features, the team can deliver on what provides the business with the most value.
Agile focuses on the needs of real users. Incremental delivery of the product from the very beginning allows for regular user testing and valuable feedback ensuring that changes be made as needed.
Frequent builds and testing ensure that high quality is achieved as defects are detected and corrected at every stage of development.