“Release early, release often” goes the Scrum mantra. What to do when the system to be released seems to be too big for that? I have identified just two ways.
- Big Bang -release
- Small incremental releases
The problem with a big bang release is that it requires a lot of synchronization. I mean a lot. From us it has taken roughly 2 three week sprints from 3 teams altogether. That is too much for a single release. Our customers have their on myriad ways of accepting new versions and thus we have chosen to release according to the worst case scenario. Some customers are more than happy to accept incremental additions and fixes but some require 4 months of testing before taking a new version into production. Understandable, maybe. Wise? I don’t think so. By accepting faster release cycles and deployment schedules the customers would open the doors for faster fixes and new features.
On the other hand small incremental releases will force the system to be split up into independent components that are generally easier to upgrade one-by-one than the whole system. These smaller components are easier to test and easier to deliver. By lessening interdependency you improve the quality of the system. Your system becomes more resilient, easier to upgrade, maintain and fix.
But to get this through the management level is currently beyond my means. I need someone to calculate the ROI for me :-)