Incremental deliveries are not just good enough. You should ensure that they are really adding up to the Constructive feedback in achieving your long-term goals, than just aiming for “Everything is Alright” with every incremental delivery.
When our team first started with the Iterative model of development, the information we used to exchange with the customer, used to be something like this:
- Implemented ABC, XYZ, … features
- Fixed the Bugs: XXXX, YYYY, ….
In the follow-up calls with the customer, we used to ask very generic questions like “Is Everything Alright?” OR “Are there any issues?” and we would be eager to hear from the customer side “Okay, everything is just perfect”. We didn’t use to pay enough attention to ‘How they were/should be testing the deliveries’. Often, we used to have a demo, but one cannot cover everything in a demo.
The customer came back much later in the project cycle reporting a few serious bugs which should have, ideally, been reported before. They cost us more considering the amount of refactoring and the other overhead (planning, prioritizing, additional testing etc.) required. This meant that the iterative development didn’t completely serve its purpose, though it made a few things better in handling the project internally.
It took us sometime before we realized a few facts:
- ‘Incremental Deliveries Are Not Just Good Enough’ and we need to do everything alright to ensure the customer would be testing those deliverable diligently in providing the Right feedback at the Right time.
- Don’t even aim for “All is Well” reply from the customer in the beginning cycles of the project. Alright is not something to cheer upon. You should welcome Specific and Tangible feedback and Rework but don’t try to avoid it. Anyways you would be working on it later and you cannot escape from it.
- Also, we became conscious of the addendum information that we had to deliver along with the incremental deliveries.
– The exact list of test cases (Acceptance Tests); Scenarios that the customer can explore.
– What’s Pending (Something for which you delivered a temporary or an incomplete solution) and ‘Known Failures’
– ‘In Process’ user documentation, if any
– Any other useful notes, that is not taught by your Agile coach but contextual.
- Welcome those short-term hits for the long-term Quality goals.
- Communicate ‘What has to be Tested’ along with ‘What is Added and Fixed’ because ‘the later a bug is caught, the costlier it is’.
- ‘You test it Now’ is more practical than ‘You should have reported it before’.
When your requirements are highly unstable and volatile, use the incremental deliveries as artifacts to decide the direction you need to travel than just an instrument to validate what was done. This simple perception change brings in a lot of difference in your approach and methods you follow to receive the feedback. The same might be applicable, but to a lesser degree, in the scenarios where your requirements are fairly stable.
“Remember that the incremental deliveries are, in general, the production quality code drops and not miniature or prototype versions”. So, even the validation has to be done on similar lines.
Sometimes, it is important to know ‘who would be testing your deliveries from the customer side’. It would be very useful getting in direct contact with them rather than getting the second-hand information from someone who is working with you on the requirements and estimations etc.. This will help process the information better and faster.
- Are you ensuring that your incremental code drops being tested diligently from the customer side?
- Are you talking to the right person from the customer side who is validating your deliveries?
- Is the feedback you are receiving ‘Specific and Constructive’?
This blog first appeared in “Beyond your Code” on 28 Sept, 2012.