There's a big difference between #1 and #2. Compare David Beckham vs. Landon Donovan; Hey Jude (#1 hit 1968) vs. Love is Blue (#2 hit 1968); iPod vs. Zune. Oftentimes the #2 is functionally superior, but for some reason #1 still wins. According to Spolsky, it comes down to three elements:
1. They make people happy.
2. They obsess over aesthetics.
3. They observe the culture code.
On "make people happy", Joel talked about how helplessness is actually a form of depression ("learned helplessness"). Humans by nature want what's called agency - a feeling that we can make things happen. So when things don't happen, we get frustrated, depressed, and give up. There have actually been studies on this.
Basically, people feel happy when they have agency. So what should you do? Put people in control.
Example: Abercrombie order page (wizard style process, no user control of when and where in the order process you are at) vs. Amazon order page (you are in control, click anywhere until you hit the order button).
"Put the user in control". Give positive feedback - click and something happens. Make sure it's instant feedback.
Also, for fun on this topic: http://www.theonion.com/content/node/34156.
On "Obsess over aesthetics", look at the MacBook Air vs. the IBM Thinkpad. Or the iPhone vs. the new Verizon iPhone-like phone. Joel says, "The iPhone looks like you can swallow it like a pill it's so smooth". He mentions how Apple changed the manufacturing process of their laptops in order to eliminate one seam and one screw in the MacBook Air design. They are that obsessed with aesthetics, and the results show.
Another example: Dunkin Donuts vs. Starbucks. Dunkin much cheaper, but people still pay "$4 for a coffee". Why? Joel says "color". Dunkin screams at you. Starbucks is inviting. It's the aesthetics.
To address aesthetics, bake it into your design process. Don't "skin" it. That's lazy, not obsessive. If you want to be #1, then aesthetics has to be part of your design.
On "observe the culture code", this term was invented by Clotaire Rapaille in a book called The Culture Code. He says there is something in culture that gives a feeling of safety (actually relates it back to mothers, using words such as "round", "soft", "warm").
The culture code is a product's emotional, cultural space. The Ruby language is a good example of this, as its start created an emotional appeal. It was a culture code that brought passion and made people fall in love with it.
Cross-posted at Code.Implant.