I'm James Hague, a recovering programmer who has been designing video games since the 1980s. This is Why You Spent All that Time Learning to Program and The Pure Tech Side is the Dark Side are good places to start.
Where are the comments?
Good-Bye to the Sprawling Suburbs of Screen SpaceApplication platforms are going off in two completely different directions. Desktop monitors keep getting bigger--using two or three monitors at once isn't the rarity that it once was--and then there's the ultra-portable end of things: iPhone, iPad, Blackberry, Nintendo DS.
The common reaction to this is that large monitors are good for programmers and musicians and Photoshop users--people doing serious work--and portable devices let you take care of some common tasks when away from your desk.
I don't see it that way at all. The freedom to do creative work when and where I want to, and not be tied to a clunky computer at a desk, has great appeal. Notebooks are a good start, but they're still rooted in the old school computer world: slow booting, too much emphasis on mental noise (menus, moving windows around, pointless manipulation of items on a virtual desktop). And there are the beginnings of of people using portable devices for real work. At least two people have made serious attempts at writing novels on their iPhones. Check out what a professional photographer can do with an older model iPhone (see "iPhone as Art" in the "Portfolios" section).
There's becoming a great divide in terms of UI design for desktops and ultra-portables. Desktop UIs need all the surface area they can get, with more stuff shown at once, with more docked or floating palettes. Just look at any music production software. Or any graphic arts package. None of these interfaces translates over to a pocket-sized LCD screen.
There's truth to the human interface guideline that flat is (often) better than nested. That's why the tool ribbons in Microsoft Office take less fumbling than a set of nested menus, and why easy-to-use websites keep most options right there in front of you, ready to click. Flat, not surprisingly, takes more screen real estate. But it has also become too easy to take advantage of all those pixels on a large monitor simply because they exist. I can't help but see some interfaces as the equivalent of the "data dump" style of PowerPoint presentation (see Presenting to Win by Jerry Weissman). The design choices are not choices so much as simply deciding to show everything: as many toolbars and inspectors and options as possible. If it's too much, let the user sort it out. Make things float or dock and provide customization settings and everyone is running at 1600-by-something resolution on a 19+ inch monitor anyway.
Except on an iPhone.
I don't have an all-encompassing solution for how to make giant-interface apps run on screen that fits in your pocket, but simply having that as a goal changes things. Instead of being enslaved to cycles and bytes--which rarely make or break programs in the way that optimization obsessed developers long for--there's a much more relevant limited resource to be concerned with the conservation of: pixels. How to take the goings-on of a complex app and present them on a screen with some small number of square inches of screen space?
(If you liked this, you might like Optimizing for Fan Noise.)