Many of us have come to love Scrum, including me. Scrum has been a huge success overall and has turned many a development team around and for the better. Yet in my opinion, I think Scrum falls short in at least one area.
Concept to Cash
Firstly, It's commonly accepted that Scrum does not consider the whole life-cycle. i.e. it's a great framework for helping development teams tame the development life cycle but it does not tackle all areas from "concept to cash". Lean and Lean with Kanban certainly appears to be an alternative to Scrum or at least coupled with Scrum to provide and all round concept to cash highly effective framework for producing software products.
Definition of Done
Secondly and more in particular, where I believe Scrum falls short has to do with it's definition of Done. Well, truthfully, the definition of Done is not really even a part of Scrum but once again, it's commonly accepted that defining what Done means on Scrum projects is an important part of it.
Potential Shippable code - what does this really mean?
Most Agile thought leaders define the output of an iteration as an increment of potentially shippable code. And more often than not, it appears to be acceptable (please tell me if I perceive this incorrectly) that this potentially shippable increment of code is not actually live production code. And therein lies my beef with Scrum.
Lean
I think the Lean folks have this right - they are very interested in the value stream and minimizing the cycle time of this value stream from concept to cash. So my feeling is that this definition should be changed from "potentially shippable code" to "shipped code".
Iteration Output = Live on Production Servers
On out project teams, every iteration represents a new increment of code LIVE ON PRODUCTION servers - no discussion, no arguments.
This takes serious discipline and focus. And most of all it requires very careful planning. If you get too much work-in-progress you will never turn this in to a reality.
Way to many companies fall short
I find way too many companies after each iteration still trying to close things down in order to get this potentially shippable code shipped. More often than not there's on-going QA etc long after the iteration is over. This is not a healthy state of affairs.
Take the hard line, change the definition, you won't look back
Comments
Agree
June 5, 2009 by Stephan Schmidt (not verified), 2 years 34 weeks ago
Comment id: 2667
I agree. Not that Scrum falls short, but more that you should adapt lean on top on Scrum. Here every iteration goes live into production - if the ProductOwner agrees. But level of done here means: code can go live, no more work needed (2 week iterations). It needs a lot of discipline but it's really worth it.
(QA should only attest quality if needed)
Additionally we keep track of cylce time (customer has idea to code being live) which every company should do. Shorter cycle time = more money earned.
Cheers
Stephan
http://twitter.com/codemonkeyism
Potentially shippable problem
June 5, 2009 by Kevin E. Schlabach (not verified), 2 years 34 weeks ago
Comment id: 2681
We have to remember that when "potentially shippable" was created as a concept, we were combating waiting months or years to ship a product. In large enterprise environments, this was an even larger/longer problem. This new concept embodied the idea that we could stop at the end of any 1 month iteration and have something working (and probably of value).
Since then, the industry at large (due to the internet) has embraced eternal betas, imperfect software, and constantly evolving software focused on constant value. Within agile, we've seen a migration to iterations under a month. I believe it is time to rename this to "proven shippable". This is the compromise between Jack's comments and the enterprise's needs. Enterprises build large solutions to large problems and they understand the needs of the market. When a complex domain (like banking or healthcare) already has mature software solutions, you know your product won't displace the competitor's software after the 2nd or 3rd iteration. There is effort to marketing and advertising new products. It is important to have a release cycle and the power that comes with it. You can't just dribble out small changes every week and expect to catch the market's attention.
This is why I think that in small continuous flow shops, I agree with Jack's done = production use. But in large shops with large customer bases, you might need to allow the business and market determine when to take on the new release and not force it on them. If your releases are compelling enough, they will migrate (VersionOne has mastered this!) In this case I don't think your done criteria can be production.
Thus, I propose -> "proven shippable". This means you have shipped it to somewhere external to your development group that is a proxy for the customer base.
How about research tasks/feature
June 6, 2009 by Ovidiu EFTIMIE (not verified), 2 years 34 weeks ago
Comment id: 2683
If you say that all shippable code must be live production one, how do you address the issue of having research items in the backlog, which might have as deliverable a test application or a proof of concept for that particular step of the research?
re: Research
June 7, 2009 by Dave Rooney (not verified), 2 years 34 weeks ago
Comment id: 2684
I come from the XP "world" where we use Spikes for any sort of research. They are time-boxed at no more than a week, and their intent is not to produce code, but rather to learn enough about a problem to be able to provide a reasonable estimate.
The output of a Spike is not intended for production use - it should be thrown away. The time-boxed aspect is also very important - the Coach/SM/PM may have to be, um, "firm" with the developers not to gold plate the experimental code. Again, the goal isn't to code the solution, but rather to learn enough about it to be able to provide an estimate for the real production work.
With respect to handling Spikes from a scheduling perspective, I tell teams that they should typically reduce their budget for an iteration by a point or two for each spike that they're doing. Also, since anything unknown is a risk and we want to make risks visible as early as possible, I coach teams to perform their Spikes as early in the release cycle as poosible. Don't have an iteration that's nothing but Spikes, but don't defer them either.
I think redefining
June 8, 2009 by Anonymous (not verified), 2 years 34 weeks ago
Comment id: 2685
I think redefining potentially shippable as u say
"Iteration Output = Live on Production Servers" is a nice idea, but very much context dependent. It wont work everywhere not because there are some shortcomings, but because it just doesnt make sense in some cases to go live with the output of a sprint.
Our industry abounds with these examples..
IMO potentially shippable is a concept which really works across the board and i cant agree that its a shortcoming.
If your circumstance are such, that you can indeed go live after every sprint, do it by all means. But that cannot be generalized to every kind of product developement in the world.
Spikes/Research
June 9, 2009 by Jack Milunsky (not verified), 2 years 34 weeks ago
Comment id: 2686
I agree that you will have spikes or research tasks that produce no real code, but that's something that is agreed upon upfront. however I believe teams should strive to have any code defined for delivery during the sprint, to be live on production servers at the end of the sprint. if you don't do this, this work just lingers on as work in progress that reduces cycle time and efficiency.
I also buy that there will be certain environments where this may not work. But I think a goal of potentially shippable code lowers the bar and is a cop out for not completing the work.
Kevin. I buy the fact that customers may not want new versions shoved down their throats every 2 weeks for example and in that case I could live with potentially shippable = deployed to production simulated environment where code is totally signed off on. i.e. this should not be an excuse to re-open the code and continue testing.
Jack
Post new comment