This page contains John Ousterhout's recommendations for how to design clean, simple, and obvious software.  As of August, 2012 it is still a work in progress.