1) Agile is focused on overall business needs, not detailed specifications
Most of the projects that people will do in their lives will start with an idea or a vision, a problem to be solved or an outcome to be achieved. And In many projects, customers may be unable or even unwilling to be specific about requirments that they do not yet understand in detail, even when they have a clear idea of the overall purpose and motive for the project.
Therefore with agile project management methods the process of developing an understanding for the requirments is built into the project via a process of progressive elaboration, experimentation, analysis, modelling and prototyping.
This is a healthy process. The project becomes a dialogue between the technology and the market, the costs and the value. However, it needs to be managed in a different way.
With agile approaches the baseline is at a high level, at the level of business requirments, so long as these can be expressed in business terms as benefits, costs and risks.
On projects with a binding deadline and target cost, the most important requirments cannot afford to wait for the least important. The project must be managed differently, because the scope is constantly being reassessed.
With the client and the contractor working together in a partnering arrangement and refining the needs as those needs become better understood, an agile structure and organisation can help the specification to emerge and evolve in some areas of the project, whilst other areas are being developed or implemented.
2) Agile puts the most important and urgent priorities first
In many projects management tends to treat all requirments as if they had the same priority. Thus the time – cost – quality triple constraint tells us that if we take less time, or invest fewer resources, then some quality will have to be sacrificed. Agile doesn’t work like this. Agile reinforces the principle that the quality equation is in the trade off between time, cost and scope. Time is handled like a ‘timebox’, and cash like a ‘cashbox’. It’s a bit like packing a suitcase. We leave out what is least important, but still manage to finish on time and within the available resources.
The word ‘timebox’ comes from the world of journalism. Newspapers, like the weather forecast, have to be out on the streets always on time, even if they are never perfect, but instead contain the most important information available within the time constraint, and everything else has to wait until the next version. Thus quality is not in the quantity of functions, but in the importance and the urgency of the functions.
3) Agile project plans use testing to reduce the most important risks early
Agile projects are learning projects. In an agile project the team sets out to remove the most troublesome unknowns, uncertainties and threats as early as possible, whilst of course seeking to optimise opportunities by being able to make the right decisions before spending too much.
In an agile project, the team first works on making the right solution – by doing just enough brainstorming, analysing, modelling and prototyping – and then switches to making the solution right.
In a modern development environment, there are a great number of tools that are suitable for producing cost effective models of products, processes, systems and services early before irreversible decisions have been made. An agile team builds a plan based around the need for frequent checking, verifying and testing, in order to gain understanding: from a business perspective (will it be useful), a usability angle (will it be usable), a performance angle (will it be used), and from a technical standpoint (will it be operational).
4) Agile projects requir close cooperation between users and developers
Constant feedback demands constant input on value, from the customers, and on cost, from the developers. An agile project also benefits from good role definition so that the customer viewpoint is channelled and the developer response orchestrated. The organisational funding view should be represented by a strong sponsor, whilst a visionary role can contribute a sense of convergence between the technical view and the business standpoint. In an agile project, parties can work at a physical distance so long as all parties are able to keep an eye on the big picture. Agile projects emphasis the role of people in processes. Because fitness for purpose is the criteria for success, it should be possible to measure results in user-defined and business terms.
5) Agile projects benefit especially from good design
An ideal architecture for an agile project is modular and separates the components that are likely to remain stable and generic, and which may be invisible to the users, from those components which may be volatile, which need to be customized, and which are visible to users. A good agile architecture takes into account the need to test incrementally, to reflect conceptual models in the design of the system, to enable learning, to tolerate errors, to reuse components, to reconfigure for different kinds of users, to rescale as new users adopt the system, and also to facilitate evolution as new requirments emerge. Agility and good design principles are complementary and go hand in hand. One encourages the other.