As I've said before, good UI and readable, maintainable code don't mix. But lately I've been inspired to revisit this topic, because it's an idea that has been popping up in other venues as well:
From Ars Technica, a user's perspective: The failure of Gran Turismo 5: the power of menus and UI makes it sound like Gran Turismo 5 erred on the side of code cleanliness and loose coupling in their user interface. That's an understandable tradeoff on such a large project, in development for so many years, where the main focus is on replicating physics (and in fact, creating an incredible experience on a different level), but I wonder how conscious it was. Did they have an overreaching goal to focus on code quality? Did programmers simply mark UI bugs "too hard to implement" or "working as designed"?
Programming in the 21st Century has a related take: "It's extremely difficult to be simultaneously concerned with the end-user experience of whatever it is that you're building and the architecture of the program that delivers that experience."
James is going for a larger point there, I think: Hey, we're making games. Fun games is the goal. Beautiful code is not the goal. But that's not entirely true either; for a game that is in development for several years before it launches, and may continue to be in development for years after it launches. I've spent about as much time working on live, playable games as I have on games before they launch, and as I continue on my current project it's going to become lopsided in favor of the former.
Ongoing maintenance adds different concerns, and makes code quality a much more pervasive issue. At the same time, the whole point of our programming is still to entertain, and the user interface will always play an enormous role in enabling that entertainment. (Perhaps it's no surprise that the coolest interfaces show up in movies, where real programmers don't have to try to deal with it.) Ignoring the gyrations of code to craft the perfect user experience works for a little while... and then the code hyperextends its back. Ignoring the player experience to craft the perfect code is a worse feedback cycle - soon you won't have players to abuse.
Hopefully contemplating the horrible future of our career doesn't get in the way of enjoying the holidays!