I'm currently involved in my first project using Scrum. As preparation for my role as Scrum Master I read various books on the subject. In there I found one lesson about Scrum and Agile in general, which I consider more important than anything else:
Scrum is a Social Thing
Scrum is about team building, Scrum is about the relationship to your customer and the relationship to your users. Let me elaborate, why I think this is the case, and why it is so important for success.
So lets start with some practices of Scrum that are inherently social:
- The complete Team does the estimates. This makes the estimates more reliable, but possibly more important, it is team building. Everybody in the team makes an estimates, everybody commits to the sprint back log, so noone can go "I said all the time it doesn't work". We commit as team so if we don't succeed, it is we that failed, not him.
- The Product Owner is present during estimates. Of course this is important to provide information about the user stories, but it also means she knows all the discussions going on. So if there is a crucial part that everybody forgot about she can't go: You are professionals, you should have known we need this feature as well. If she didn't spoke up during planning, she obviously forgot about the important obvious task as well. So everybody is in one boat again.
- Tracking impediments makes sure the impediments get out of the way. But it also communicates, that somebody (the Scrum Master) cares about the problems of the team and works hard to make the environment as productive as possible. This makes a big different, even if some impediments can't get resolved. Also the team is encouraged to work on the impediments themselves. And trust me, rearranging office furniture together is better then an expensive team building training.
- The Product Owner determines what to achieve in terms of business value, but the team decides how to implement that. This makes a big difference in motivation. If you don't believe me, get a copy of "Drive" by Daniel H. Pink it will tell you the same.
Hopefully I have convinced you that Scrum contains a lot of social engineering in its practices. But why is this important? Because Agile projects today are done with the same people who did waterfall projects last year. The practices of Scrum don't make the software development process any better or faster in a direct way. It avoids some waste in the form of irrelevant documentation and features nobody really needs, but when looking at failed projects I don't think that little avoided waste would make much of a difference.
But team building does. Motivation does. Compare tasks you enjoy and tasks you love, done with a team you hate or fear or a team thats rightly called so. For me an example would be filing my tax compared to creating software. There is easily a factor of ten in productivity ... so there is a silver bullet. There is a single thing that might boost performance by a factor of (or close to) ten:
Get the team motivated.
Scrum might help you with that. This also explains why Scrum will be done wrong in many cases: You can't just apply rules, since rules are a killer for motivation. You have to understand the ideas in scrum, listen to the team and foster the right kind of environment. Then and only then Scrum will increase your chances for success.