I just read a great article, summarized over at InfoQ, about Agile development.
I think Mark W Schumann is spot-on with his formulations on what you have to understand and accept in order to be successful with agile development.
Pairing is important, but it’s more important that you’re happy to be corrected a couple dozen times a day. Test-driven development is useful, but it’s more useful to imagine a hundred ways something can go wrong. Stand-up meetings can be effective, but the trust in your colleagues that frees you to do your own thing makes them really effective.
It’s all about being humble and accepting the fact that you just don’t know everything at the start of a project, a task or whatever.
… there has to be an attitude in middle-to-senior management that they don’t know everything, that some things aren’t amenable to control, that surprise is something that should be expected. You have to trust your teams, even when they don’t deliver the results you expect. You have to imagine more than one possible outcome.
Really recommend reading the post, no matter if you’re a developer or a manager.