In case of some software deliverable, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
There is lack of emphasis on necessary designing and documentation.
The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
It’s a relatively new methodology, people not that much used that they are with waterfall
People are afraid of what they don’t know
Without a baseline different incomputable solutions could arise during each iterations.
Without communications different people may produce divergent solutions
People tend to get burned out as the end of iteration is approaching.