As a part of the post i will try and organize my thoughts around the concept of measurement in Traditional Software development approaches and how its very different in an Agile environment.
Traditional approaches are very heavy on ensuring that the requirements are well understood before embarking on the development activities. (Well it is Waterfall!!) So much so that you have standardized work split up (general rule of thumb) between Requirements analysis, Design, Development & Test. Even with all this there isn’t any guarantee that the team which is working on a typical software project meets these guidelines. This has been well recognized and have been mitigated by measuring all the key data points at the various stages of the project.
In other words the inherent un-predictability and chaotic nature of software projects have been well understood. This has been tackled by trying to normalize a standardized behavior over historical measures.
This process is tedious and heavy on accurate data capture at every stage of the development. Any errors introduced will render the measured data points inaccurate for planning future projects.
So why these heavy measurement? Waterfall approach being sequential in nature, measuring at every stage ensures that the project reacts to variances of key data points to ensure that the project objectives are not compromised in the end.
But this doesn’t still explain why a project that meets the various time lines at every stage fails to meet the project objectives. Sample these,
- A project on time to UAT does not get out of UAT on time or
- A project on time at the various stages of the lifecycle is unusable after its delivered.
This is a familiar situation and most of us know the underlying problem.
This is essentially because of lack of an objective criterion to close out a particular stage of development.
Consider these as a sample
- What constitutes a completion of Requirements analysis? Will all scenarios be listed, documented, reviewed and signed off be an objective criteria?
- Do we model all scenarios in design, code them and test them to perfection?
On some projects doing them all will ensure a good objective criteria but on most projects there are ambiguities that come with business requirements which makes it tough to objectively measure the degree of completion of a stage. These ambiguities would be introduced right in the beginning of requirements analysis since the lack of apparent visibility would mean that a customer doesn’t specify everything clearly or the design doesn’t capture all the implementation details and requires further analysis during development.
The answer is to have the working software as an objective criteria and to release functionality rapidly. Call it a weekly sprint or 2 week sprints. Releasing working software rapidly ensures that you dont face the signoff ambiguities and dont have to measure too many data points.
This in-fact lays the foundation for the first Agile principle of “Working software over lengthy documentation”
If working software is released at every step of the project, do we measure anything at all?
With working piece of code being delivered rapidly, schedule performance in the traditional fashion wouldnt make sense. Measurement will now have to focus on identifying the ideal output that the team can achieve and the key benefits the customer is able to generate.
Here are a few key measurements that are recommended
- Cycle time – By definition cycle time measures the total time it takes to release a working piece of code into Production from the time its identified. Objective – By looking at the cycle time, we can look at any potential bottlenecks that could be hindering the project.
- Velocity – The rate at which requirements are implemented into production. This is measured typically in story points or no of requirements.
- Scope Burn up / Burn down – depending on the specific requirement a Scope burn up depicts the current progess with respect to the planned rate of implementing requirements into production.
- Average time to implement a feature to the end user.
That brings up the second aspect of agile based projects – “Adaptive planning” as compared to “Predictive Planning”.
In the upcoming posts I will add additional details on measuring these data points and its significance.