37signals Paper: An Introduction to Using Patterns in Web Design
37signals.com
37signals.com
In design school, we called this design & layout.
http://gettingreal.37signals.com/toc.php
This particular approach (design all the UI "bits" first, then glue them together like legos) is a classic and I return back to it about annually. I use it in combination with another great bit of advice, Cameron Moll's "Nodes of design inspiration", which is to break down a UI into its component parts and then go looking around the web for good examples of each component:
http://www.cameronmoll.com/archives/000016.html
Using both of these techniques in combination is the single best way I know for busting designer's block when you're making a site or app from scratch, rather than redesigning or iterating an existing one. Those are the main tools I used last year to come up with the branding, site design and Flash UI for this interactive video startup:
The video player got a bit cluttered since I left, but enough design elements remain to demonstrate the process in action. The top row of buttons on the video player, for example, were directly inspired by Flickr's strip of controls above their photographs. All the other annotation-centric video sites try to cram similar functionality into the same area as the playback controls or shove it off to the side where people ignore it. The sliding drawer of annotations on the left was inspired by google maps, etc.
The closest Getting Real article to this design patterns essay and most directly relevant to hackers is probably Epicenter Design - design the core functionality and most visually important element of a page first, then add in all the administrative debris around it afterwards:
http://gettingreal.37signals.com/ch09_Epicenter_Design.php
That advice holds true just as much for programming an interface as it does for designing it.
So putting all three of these techniques together, you end up with:
1) decide what is the single most important thing on any given page (epicenter design) 2) break it down into its component pieces and group related bits together (pattern design) 3) go looking around the web for good and bad examples (nodes of inspiration)