What practices do you recommend to weed out as many design/UX mistakes as poss before they are committed to code?
Make sure that coding is the very last thing you do.
The majority of visual/interface and UX design can be done before you have to go anywhere near specific-functionality-level code, and you can have a much more agile and responsive design process if you're not juggling both aspects of your software.
Lean heavily on prototypes (particularly low-tech, scribbled-on-paper mockups), and don't make the mistake of having static sketches - your interface is a living, changing thing. Draw all the states. Pretend to click things. Prototype the interface/experience for the _whole workflow_, not just the initial appearance.
You can eliminate 90% of your problems by getting it all nailed down before you've written a method, and you'll save an incredible amount of blind-alley coding too.


