Motivating Developers to Work With Users: Iterative development requires a large commitment on the part of the developers to make it work. Although most developers would agree to the principle of user participation, it is a different matter to follow through on those principles, for several reasons. Engineers may lack patience to deal with inexperienced users. There may be various communication barriers between users and developers. Finally, developers may be limited in their ability to understand the whole range of user attitudes and work situations, possibly affecting their willingness or ability to take these factors into account.
Identifying Appropriate Users: Designers and Developers may have formulated a very concrete view of the intended market for their products, but the actual users cannot be known until the product is bought. The desire to appeal to the broadest audience makes it difficult to backtrack and identify specific needs of the various subgroups within that audience. The division of labor between UI-designers and marketing divisions further compounds the problem of user participation, as it is difficult for any one group to obtain the "big picture."
Obtaining and Motivating Users: After candidates for user participation have been identified, a host of obstacles may arise in making contact with those users. The development company may discover that convincing potential users to devote time to work on the development process is not worth their time, considering that their feedback is just one small part of the big picture of input that the developers need to consider. Potential users can also be less motivated, especially compared to an in-house development context, knowing that may not become actual users of the final product.
Properly Utilizing Potential Users: In order to obtain the most benefit from user interaction, developers and users must both learn one another's language in discussing the technology being developed. This is a difficult task that holds the danger of, on one side of having too limited a set of users, while on the other side getting bogged down when too many users provide conflicting input.