Joel Spolsky's review of User Interface Design for Programmers