Agile tools shine at managing projects and providing quality. But what is required to “manage” a project to success?
What is the purpose of a project?
The purpose of a project is to provide a deliverable: a product or service. A deliverable is defined using specified requirements. Quality is meeting the specified requirements using measurements based on quantitative objective evidence.
To provide a deliverable, the following are required:
- Tools necessary to provide the deliverable such as buildings, wrenches, computers, specifications, education material, etc.
- Instructions provided by operation procedures, manuals, safety standards, specifications, requirements, etc.
- Qualifications of those who are providing the deliverable. Are the people qualified? Are they being trained so they have the necessary knowledge required to be “qualified”? Are they competent (qualified and have “common sense”)?
- Accountability through responsibility and authority are required of those who are providing the deliverable.
When an organization comes up short on any of these key attributes those involved will try to fill in the gaps:
- Lacking Tools - Those involved will attempt to use the tools they have to “do their best” to provide the deliverable.
- Lacking Qualifications - Those involved will attempt to work within the knowledge they already have to provide the deliverable.
- Lacking Instructions - Those involved will attempt to estimate and then assume what is required to provide the deliverable.
- Lacking Accountability - Without accountability, there is no incentive to provide the deliverable: everyone involved must be made responsible for meeting the deliverable.
- Lacking Authority - Without authority, those involved will not be able to remove hurdles that are stopping them from providing the deliverable.
Those involved then meet their own expectations, as opposed to the key stake holders expectations, and claim success against “overwhelming odds”! This means there is a gap between what is delivered and what was promised to be delivered: the specifications. What you have then is project failure.
How Does Agile Assure Success?
The following are just a few examples of how agile assures that a project is successful:
- The team is responsible for building the project. They have the authority to request that the Agile Master remove impediments. Examples include requesting any missing or required tools, instructions and/or missing qualifications.
- The Agile Master is responsible for assuring the agile rules, agreed upon by everyone, are followed. The Agile Master has the authority to act in all cases where the rules are not followed. For example, they can ask the CEO to leave a daily iteration meeting if the CEO isn’t following the rules. This is a lot of authority (of course, the CEO can always fire the Agile Master).
- The product owner is responsible for the specifications of the project. The have the authority to get any information required provide the specifications. This includes working with the key stake holders or key people who are knowledgeable about the business domain.
- For software, agile requires that a detailed definition of “done” is specified so everyone involved knows just what it means when the sentence “We are done” is uttered.
- The team commits to complete the deliverable in a given period of time (called an iteration) making the team accountable. However, this is based on estimations made by the team that must be accepted by the product owner (after all, they are the ones committing and being held accountable for the actual deliverable). They are also given a lot of authority to assure they can meet their commitments.
The key thing to note from these examples is that everyone has responsibility clearly defined by the agile rules and the authority to execute that responsibility. When software is the deliverable, agile defines in great detail the tools required (such as test driven development, regression testing, pair programming, agile estimation, iteration planning meetings, etc.).
What I’ve written above is based on the Kaizen philosophy of continuous improvement. One of the reasons why agile works so well, and specifically agile management concepts, is that it is also based on the Kaizen philosophy. From here on out, I will focus on key aspects of agile and how they fit in with assuring a successful project: providing a quality product.