What is Agile?
Agile is a set of values and ideas that encourages flexible response to changes. The emerging requirements and their solutions are collaborative efforts of different teams, organisations and customers.
In software development, adopting Agile practices means welcoming changing requirements, adaptive planning, early and continuous delivery and collaboration between clients, developers, testers in order to improve the quality of software and the agility of teams and software professionals.
Agile is not a tool or some framework, but rather a set of values emerged from the Manifesto of agile software development. The philosophy behind Agile development is very simple:
- 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 to say, the items on the left are valued more than the items on the right.
Tools and processes are important, but it is more important to have competent people working together effectively. Good documentation is useful in helping people to understand how the software is built and how to use it, but the main point of development is to create software, not documentation.
A contract is important but is no substitute for working closely with customers to discover what they need. A project plan is important, but it must not be too rigid to accommodate changes in technology or the environment, stakeholders’ priorities, and people’s understanding of the problem and its solution.
Agile software development principles
The Manifesto for Agile Software Development is based on twelve principles:
- Welcome changing requirements, even in late development
- Deliver working software frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the primary measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective, and adjusts accordingly
What is Agile Project Management ?
Manifesto of Agile Software development and 12 principles were established by software developers and testers to tackle the common problems that software developers faced. Agile provides a common solution to common recurring problems and can be utilized in other various activities.
Agile management is an interactive, incremental method of managing and delivering a project in accordance with the principles expressed in the Manifesto for Agile Software Development.
Iterative or agile life cycles are composed of several stages towards the completion of a project. In each delivery cycle (iterations), Agile methods complete small portions of the deliverables, while iterative methods evolve the entire set of deliverables over time, completing them near the end of the project. One of the aims of an agile or iterative approach is to release benefits throughout the process rather than only at the end. Most importantly, Agile Projects should manifest collaboration, flexibility and behaviour of trust as its core value.
Agile Metrics
Metrics that can be collected for effective usage of Agile is:
- Drag Factor
- Effort in hours which do not contribute to sprint goal
- Drag factor can be improved by reducing the number of shared resources, reducing the amount of non-contributing work
- New estimates can be increased by a percentage of drag factor – New estimate = (Old estimate+drag factor)
- Velocity
- Amount of backlog (user stories) converted to the shippable
- Functionality of sprint
- Number of Unit Tests added
- Time interval taken to complete daily build
- Bugs detected in an iteration or in previous iterations
- Production defect leakage
Agile Planning Processes and Methods
Agile planning activities for large-scale development efforts can be broken down into five levels:
- Product Vision
- Product Roadman
- Release Plan
- Iteration/Sprint Plan
- Daily Commitment / Scrum
What are the benefits of Agile Development?
Agile allows early testing and rejection, the tight feedback loops provide benefits in agile that are not very noticeable in the waterfall.