The problem with deciding if something is truly agile is that different people interpret the Agile Manifesto and the following 12 principles differently.
However, if something is claiming to be agile, it should at least somehow satisfy these 12 principles.
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Agile teams deliver small increments of the product as soon as possible, ideally at the end of the first sprint. After that they continue with delivering continuously throughout the whole duration of the project.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Agile teams utilize the Product Backlog which is a living document. This document includes all items that will be developed on a project and changes to this document are possible until the end of the project. Agile team does not try to limit the change, it embraces the change.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Agile teams release working software during the project. The frequency of the release is usually lower than of a sprint. Sprint delivers potentially shippable increment, these increments are then compiled together into a release which makes sense from a user’s perspective to be released together.
If it is needed, the increment at the end of each sprint can be released, so the sprint and release frequency can be the same.
Business people and developers must work together daily throughout the project.
Agile teams are cross-functional, they do not separate people with same area of expertise into separate teams. In one team you will find analysts, programmers and testers working closely together.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Agile teams are not micro-managed by their manager. They self-organize and solve the issues by themselves. They are provided with the support they need without interference.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Agile team shifts the focus from documentation to discussion. The team captures requirements in a user story format and then clarifies the user story in shared discussions.
Working software is the primary measure of progress.
Agile team measures progress by the amount of delivered product increments. Agile team does not value any type of work which is partially done. The work is either not started or done. Anything which has no value to the end user is not taken into consideration regarding the progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
All of the stakeholders should continue on working towards their goal on a sustainable pace. Sustainable pace is consistent, it means that team should not be relaxed at the beginning and start to work overtime when the deadline is close.
Continuous attention to technical excellence and good design enhances agility.
Agile team is delivering product increment in short durations. To make this possible they should embrace some of the technical practices that enable the team to work in such short iterations.
Simplicity–the art of maximizing the amount of work not done–is essential.
Our goal is to deliver the highest value with the fewest number of items. Eliminate waste by asking yourself: “Is this item adding any value to the overall product?” Creating simple and clean product requires intent and talent.
The best architectures, requirements, and designs emerge from self-organizing teams.
Self-organizing teams are able to produce the best products as they have various opinions and knowledge sharing embedded in the agile development process. By not relying on the expert’s opinion everyone is engaged in the decision-making process so the mistakes are uncovered sooner.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile team uses retrospective after each iteration to reflect on its behavior. They identify areas of improvement and commit to doing specific actions in the following iteration to improve. This is done periodically after each iteration.