Separating UI from implementation

I saw this comic about usability (linked from this question at Stack Overflow) and couldn’t help but let out a distressed laugh. How often have you seen this happen at your workplace, or in an application you’ve had the “pleasure” of using? For every elegantly designed UI that exists, there seems to be a plethora of poorly designed ones that do their best to confuse users.

To me, a lot of this UI complexity stems directly from a lack of separation between the UI and business logic layers.