Not exactly Baldwin in Malice, but Gruber tries really hard to make UI developers something similar in Daring Fireball: Bang:

This is what everyone contemplating a new creative endeavor craves: that in the moment it turns real, to get it right. To frame it in such a way that the very act of framing propels the project toward an inexorable destiny.

You want to get it right because getting it right can make everything easier thereafter. But really, itโ€™s because getting it wrong can be devastating. You might wind up putting thousands of man hours of work into a project that was doomed by a decision that was made in a second at the inception.


The UI is essential, and a badly written application can be saved by a great UI. That's true. But he's only talking about one slice of the app. His argument is really about separating UI from logic in your app. If you let them get incestuous, then you've got problems. If you keep well-factored logic away from the UI with excellent interfaces (see how his quote from Speirs gusyes about Flickr's API?), all you've got to replace is the UI team, and have someone new start from scratch.

Seriously, having written a few of these things, it's much much easier to rewrite the UI -- I didn't say to get the UI right (aka, "design the UI right"); I don't claim to know how to do that -- than to rewrite the engine. The right UI is, I believe, about as easy to write as the wrong ones. The different is in the ability of your designers to conceive of the proper look, feel, and function moreso than the ability to make that conception in 0s and 1s.

Get the engine right, create a good API, and keep it simple for your God Complexers. Especially for when you have to replace one set of gods with another.