The proponents of the agile methodologies wanted to change the way software development was done. I think that changes have happened, but unfortunately most of them are superficial ones, leading to failures and more notoreity for the underlying philosophy. Scott Nelson explains how some aspects of agile methodologies can be wrongly used.
However, whatever I have seen yet, I think the most popular mistake, and the least realized one, is that a lot of teams are not skilled enough to execute agile projects. The principles of agile development call for a skillset, and most of which is not about programming. The team should be able to:
- continuously converse with and update the client during development
- consider and scope out changes as the business needs change
- plan out an iteration so that we are always staring at a working piece of software at its end
- prioritize the requirements and identify their dependencies so that they know where to start
- use tools like version control system, and information sharing and collaboration tools
- trust the team members, as the agility of development is extracted by eliminating a lot of overhead
- self-organizing team members, as the agile methodologies do not talk about task management
- adapt to change, whether it is in requirements or environments
- quickly and efficiently communicate with each other
Unfortunately these qualities are not looked at when the team is picked. Even if the team fairs well on a technical scale, the agile methodlogy will fail if the above attributes are missing. Not to say that programming skillset is trivial, but usually the non-programming skillset gets overlooked and the root cause for failures.