Absolutely. It's vital to listen carefully to users and think broadly and wisely. The programmer must understand what the users have to deal with in order to provide something useful to them. If not, the user will hate the result, it will make them miserable, cost the employer time to redo it and the cost of not being able to do what needs doing (or worse) without software.
tl;dr: get to something most useful soonest by quick, small iterations until it's satisficing. No BDU project fails, and no assumption fails.
tl;dr: get to something most useful soonest by quick, small iterations until it's satisficing. No BDU project fails, and no assumption fails.