A guy who worked as a support tech and a developer made a list of 5 reasons why programmers should have tech support experience. A lot of what he says boils down to thinking about the end user.
As a programmer I want to write software that is easy to use, but that’s subjective. Is it better to have a program attempt to do everything automatically or let the user decide? If it works, great, but if the user wants to do something the programmer didn’t think of, there are usually problems. There has to be a balance between being easy to configure and easy to use, but finding that balance is hard. Ogden Nash made a good point, although he wasn’t referring to software, when he said, “Too clever is dumb.”
This next quote is probably more true than some people realize. “That’s the thing about people who think they hate computers. What they really hate is lousy programmers.” (Larry Niven and Jerry Pournelle in “Oath of Fealty”)