"Site Under Construction" sessions (or SUC sessions for short)

During my quarterly reviews with each of my team members, I am discovering some commonalities in what people would like to learn.

A common goal seems to be “to get better at application design”.

Good design is a great goal. But, like anything worth accomplishing, it is difficult. Good design can be difficult to learn and teach. And, is more experiential than anything else.

One of the reasons is because “design” encompasses so many disciplines. Also, the most difficult thing about good design is that a lot of attributes of good design are in conflict with each other.


  • Copy vs. Graphics

  • User vs. Non-user

  • Usefulness vs. Stickiness

  • Art and Color vs. Transparency

  • Functionality vs. Simplicity

  • Consistency vs. Flexibility


How do you learn that? How do you teach that? You can read books. You can attend some classes. There are certainly “official” ways to master this.

Just think about it.


I think another way is to just be mindful of it. Think about it all the time. When you log onto Gmail every morning, think about why it is good or bad. When you use Finder, think about it. Why does the Dock work the way it does?

Just think. You don’t have to be correct. But, at least, you are analyzing. You don’t have to write it down. But, you should file it away in your cloud brain for use later.

So, to help accomplish this, my team is going to start doing "Site Under Construction” sessions. I like to call them "this (insert whatever here) SUCs". We will put up a website, applications, or device or whatever. And, we will just discuss it. The good and the bad. There is no correct answer.


About this entry


1 comments:

  1. Anonymous August 23, 2008 at 7:24 PM

    A big weakness I've seen in a lot of developers when it comes to application design is a lack of knowledge of common design patterns. Most application design issues/problems you'll come across have been solved nicely by some time tested pattern. Patterns, when embraced by developers, provide for a common vocabulary in how parts of a system work.

    In addition, another key component of flexible and scalable design is test driven development - with the emphasis on writing code that is easily testable.