Often I hear: "We have to implement all requirements, and it simply takes as much
time as it takes; we cannot stop before all is done" and I see them thinking "Why
don't you understand this?" What all is, usually isn't really clear and should be
defined by the requirements and supported by the business case, which in most projects
isn't clear or even known to the project either. These people for some strange reason
forget that delivery time is as much a requirement as 'all' other requirements and
often it's even the most important one.
Developers are supposed to know how to define real requirements, and they also know that defining the right requirements is not easy. For most customers, defining requirements is not a part of their normal work, so for customers this is even more difficult. How can we expect that customers can properly provide us with the right requirements?
Customers specify things they do not really need and forget to specify things they do need. It's the challenge for the project to find the real relevant requirements, together with all of the relevant Stakeholders. Furthermore, the Requirements are what the Stakeholders require, however, for a project, the Requirements are what the project is planning to satisfy. After all, we can make great systems, but if the customer cannot afford the cost, or has to wait a long time, we both lose. Because there are always conflicting requirements (e.g. more performance can be at odds with acceptable development time or cost), the design process is there to balance and come to an optimum compromise between the conflicting requirements. The notion of 'all' requirements pretends that 'all' requirements can be met concurrently or even are known. If this were the case, projects would be a lot easier. We know better, don't we?