I'm now in my second role in which I've had chance to introduce agile working practices to the team. In both roles the projects and applications developed under scrum have been successfully shipped and accepted by the business. The success of the deliveries has been measured by:
- Functionality: The early visibility the business gained through the end of sprint demonstrations made sure that all the functionality the team developed stayed on track and provided exactly what the business wanted. There were no nasty surprises once the final code was shipped!
- On Time: It is generally agreed that you can only have two of the following: quality, functionality and/or a "business set" ship date. The hardest lesson for a business to learn is that if it wants a set amount of functionality by a set ship date, then the only thing that can be modified by the team to meet the expectations is quality. Luckily in both instances everyone agreed that quality shouldn't be compromised and the business knew the functionality it needed, so the ship date was determined from our velocity and the story points for the desired functionality. In a couple of instances we didn't complete everything the team had committed to for a sprint, but the business was happy, because whilst the delivery did slip a sprint, they were confident it was within the team's ability to meet the goal.
- Bug Free: Experience has shown that shipping the desired functionality on an agreed date is rare enough but after launch the applications have experienced an extremely low defect rate - I've never experienced this prior to switching to an agile development methodology. A TDD approach was used in both roles, but I really believe the benefit of TDD is in ongoing maintenance whilst the initial low defect count can be attributed to the scrum process.
I'm now looking forward to my next challenge/project to apply everything we've learnt in the past projects; hopefully with the same successes.