What we need is a way to work together so that neither side dominates. As users see previous versions of the software they come up with new ideas and opinions. Because of the intangibility of software, most developers have a difficult time estimating how long development will take.
To avoid these problems, what we do is we make decisions based on the information we have at hand. Rather than making all decisions at the beginning of a project, we spread the decision-making throughout the project.
To do this we make sure we have a process that gets us information as early and often as possible. And this is where “User Stories” come in for “Agile Requirements”.