The hardest single part of building a software system is deciding precisely what to build the most important function that software builders do for their clients is the iterative extraction and refinement of the product requirements. For the truth is, the clients do not know what they want. They usually do not know what questions must be answered, and they have almost never thought of the problem in the detail that must be specified.
Fred BrooksBut I will argue that knowing complete product requirements up front is a quite rare exception, not the norm.
Fred BrooksMediocre design provably wastes the world's resources, corrupts the environment, affects international competitiveness. Design is important.
Fred Brooks