
Agile, like Texas Hold 'Em poker, is pretty simple. The agile manifesto is pretty simple. Some agile practices are more difficult than others. Stand-ups are probably the simplest agile technique (though it confounds me how difficult it is sometimes to get people to make them short and sweet, relevant, and focused). Test-driven development is one of the harder concepts to grasp. Estimation with abstract units is sometimes hard to grasp. These are all localized challenges that can be addressed fairly easily with team members that have the attitude and aptitude to change.
These team-based challenges are dwarfed in complexity, in my experience, by the immense challenges of adapting an agile team's relationship to the non-agile ecosystem in which these teams/organizations typically exist. These ecosystems often foist irrational demands on software projects in general (not just those of agile teams). An example: the budgeting process requires you to commit to your scope, schedule and resources up front. You're then damned when you ask for more time, money or request to reduce scope. This isn't just a bad practice for agile teams; it's bad practice for most software development projects.
Cultures that reward individuals based on heroics are another example of ecosystem conflicts with agile philosophy. We prefer agile teams to self-organize as "self-directed teams".
Leaders and executives who desire to nurture the agile teams in their organizations would be well-advised to help their agile teams address these "impedance mismatches" between agile and the ecosystem - and to stand up and fight the "that's the way we've always done it" mentality that oftentimes exists within the culture.
Comment
I agree, introducing agile to a software team is relatively straight forward, but getting executive level to understand the implications, the change in thinking about the project, scoping, budgets etc is not straight forward at all, yet it is the key to agile projexts being successful. Just explaining agile principles and processes and showing ihow t works in practice doesn't seem enough. If someone comes up with a way to do this I'd love to try it out on my current company.