Thus successful design must understand not what users (say they)
but much more fundamentally, why they want, i.e.,
Analysts also cannot know what users need:
Refine understanding of values, users, requirements, specs, code,
by use in context, on real cases.
So called waterfall process is a disaster:
therefore agile programming, extreme programming, etc.
But still have errors, anxiety, failures, and hope & fear cycles.