Let me start by saying I'm a fan of Scrum, I tend to think it's a reasonably sane approach to managing a project. But I don't think it the be-all-end-all fo software development and I think there are other ways to get to the same destination, namely, high quality software, happy people, and minimal overhead.
My biggest problem with Scrum is that I feel sometimes it's proponents sweep "real world" issues under the table a little too quickly. Namely, they often lack a certain pragmatism. In fact, at least one of the two instructors this time around seemed fairly pragmatic. But I wrote him after the training and here's the email I sent.
I hate to sound like a broken record, but where I come into conflict with those who preach Scrum (being a big fan) are that they presuppose a "start state" that just does not exist in many cases. Some of the biggest mistakes I feel that I’ve made with Scrum have been to cede authority to the team, who were simply not equipped to handle such responsibility properly.
I liken it to giving a credit card to a college student away from home for the first time. This student should be responsible with his credit card. He should pay off the balance each month so there is no interest. He shouldn’t make purchases he would not otherwise make if he didn’t have the credit card. These are all absolutely reasonable
expectations to have for the recipient of our credit card.
So, we give him the credit card. He’s "empowered". What does he precede to do? Maybe he does exactly those things. But for some, even though previously they might have been fiscally responsible, the notion of a credit card is intoxicating. A person from such a group suddenly finds himself racking up all sorts of purchases he can never pay off and with no one watching over him slides deeper and deeper into debt from which he can never extricate himself.
So, is the answer then to never give this person a credit card? How do teach the person to use the card responsibly without giving him a card with a 20,000 limit off the bat?
Some of my failures with Scrum were due to placing *too* much into people who didn’t really deserve it. Oh, they seemed to deserve it, but they didn’t. And fundamentally that comes down to people. But "people" are always the hard part. As I think you guys mentioned, put a team of great people on a project and irrespective of methodology they’ll figure it out.
If the prerequisite to make Scrum work is a team of highly motivated, competent people who value the things that Scrum values, I’d submit it’s not adding much value. They would succeed anyway. Sure, Scrum’s a great way to get to that destination, but I’d submit plenty of other approaches that would work just as well.
Just teaching people Scrum and repeating the tenants of the Agile manifesto to them doesn’t make the *truly* value those things. Some percentage will really convert, but many will still value what they always valued. They will never apply Scrum with enough thought or criticality to be successful. And if they do, I would submit they’d probably succeed just as well without Scrum (or with a whole lot of Scrum-buts).
To me, the real promise of Scrum is for teams that *are* dysfunctional. What if everyone isn’t motivated? What if everyone isn’t competent? Because in more companies than not this is the case. Sure, you can say fire the bad people, get only good ones, etc (and I try to do this), but let’s be frank about the reality of many people’s lives. I would suggest Scrum still holds an awful lot of value. And that’s where the gap is. Making Scrum work with the dream team is easy. How do you make it work with reality is what is so tough and what I think sometimes is neglected.