clearly, you can't plaster on a good interface to a badly designed program. But patterns like ModelViewController exist partly to help separate the UI from the program. In fact, the boundary between program and user interface must be continuously being negotiated. And may need to be pushed and pulled from both sides : programmers fighting UI people and vice-versa.
I notice some of this tooing and froing in the discussion with GrahamLally on FreeSoftwareInterfaceStories. I suggest there's room for UI specialists, he suggests this may happen by introducing an easier to script framework like Mozilla. I'm thinking of UI people pushing information at programmers, he's thinking of programmers getting to play more easily (and teach themselves more about) UIs.
See also :