Unfortunately, users usually don't know what they really need;
     & what they say they want is often wrong!

Thus successful design must understand not what users (say they) want,
    but much more fundamentally, why they want, i.e.,

Analysts also cannot know what users need:

This motivates iterative development: cycles of design/build/test.

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.

   BACK       NEXT