The Insufficiency of Scrum
billschofield.typepad.com
billschofield.typepad.com
if you have a incoherent project owner whose priorities drift from sprint to sprint, you will end up with a beautifully executed, disciplined execution of an incoherent product.
As long as the most important 80% works chances are the project will be considered useful even if it does not do everything. Which is important but it requires a skilled team to execute well over time.
Aaaaah, I think it's fair to say that Scrum forces the client to declare which features are most urgent and that in the ideal project the client aligns urgency and importance. However, just like real life, it is difficult to align these two orthogonal concepts.
Sometimes things become urgent because they are tantalizingly easy to do.
Sometimes things become urgent because someone important thinks they are important.
Sometimes things become urgent because the client is personally invested in them.
I agree that "as long as the most important 80% works chances are the project will be considered useful even if it does not do everything," but I am cautious about assuming that just because you ask the client to name the most important features ona sprint-by-sprint basis that you will agree in hindsight that the most important 80% of a product got done.
Could not agree more with that. And I think that's one of the pitfalls of Scrum: that it works well if you have a relatively well defined project that's not really going to change. If you have to change around your whole system every sprint, nothing is ever going to get done.
From wikipedia: "A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner.As such, Scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements."
That being said - I've not seen much consistency across implementations. It generally breaks down to some sort of product backlog which is worked on in small chunks on some cycle (months, weeks, two-weeks whatever...). This is a pretty basic change to the normal waterfall cycle and easy to implement, and works well for many teams.
The rest of the Agile/Scrum/pick your particular method is left to the project/product/SE manager and you really have to find what works for your team, and I'm not sure makes that big of a difference in the end.
But all real-world instantiations of methodologies are, in some sense, "amalgamations". For one thing, none of them are complete. As both the article and Raganwald point out, Scrum is far from a complete description of what you need to do to organize a successful project, just as using Lisp and Emacs aren't sufficient conditions for producing great software.
My biggest problem with that is that I think a lot of these companies are having their people learn Scrum because they think it'll be their silver bullet, as if taking a bunch of people and having them start doing Scrum will suddenly turn all of their failed or ultradelayed projects into victories.
Scrum worked very well for us at MTV Networks with the project I was working on. Due to us having a very experienced Scrum Master and the Project Owner being very active and understanding how to prioritize his requirements.
Another big issue for me, in SW Dev, is the opacity of "code asset" deterioration as we start to iterate features through it quickly. Scrum can exacerbate that. Once we start cranking the Sprint crank, poorly disciplined programmers can hack the code to bits even faster than before, without stakeholders noticing.
Hence agile wags once called Scrum "XP without the P".