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:

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.