This was the title of the talk that I did with Brad Abrams yesterday at Mix06. This was one of the most fun days I have had at a conference. I met a lot of really neat people with different perspectives and ideas. Plus, there were several parties with open bars! Free drinks and unlimitted geek talk, yeehaaa!

One thing that made Mix06 a different conference for me, is that it's a"conversation". This definately held true for our talk.I think they will actually publish a link to the presentation, so I'll link to that when I get it. I've had a lot of really great conversations with the attendees here that are passionate about design. Here's the content of my part of the talk and some of the enusing questions so that we can keep the converstaion going.

Web 2.0 is a Designer Driven Revolution
Of course I am biased, and some of the developers here think this is a hilariously out of touch comment, but I really believe it. Look, the technology that enables AJAX and Web 2.0 apps has been around for years. For the past couple of years designers have been wielding the tools to create and push new experiences on the web. Libraries and other platform improvements have responded to this designer pressure to make it easier to deliver these experiences. The technology is changing to accomedate the experience we want to deliver instead of visa-versa.

Best Practices are Forming in Real Time in a Web 2.0 Way
I don't think we are necesssarily going to see a collection of definitive books on topics such as AJAX usability, AJAX design, etc... I think what we are seeing is that best practices are being proposed, linked, and strengthened by converging multiple perspectives in tight feedback loops. I refered to 2 web site in my talk:

  • AJAX Patterns: discusses some desing principles and has a lot of details on how to implement them with basic AJAX code.
  • AJAX Usability: discusses how AJAX can make your sites easier or harder to use.

I won't provide a detailed overview of these sites. But I think it is very cool how they refer to each, and other sites, including the AJAX Pratterns book as it is being writtern. However, here are three essential things that I take as a given for designers based on the community best practices:

  1. There is a difference between a "web site" and a "web app." If you have a web site (colleciton of linked documents) then tryng to make it a web app, breaking years of web site conventions, etc.. will bust your user experience.
  2. Obviously you should update only small parts of page or screen when it makes sense.
  3. Good design and conventions still matter. Your experience as a designer is still relevant.

Now I talk about six "lessons from the trenches" that we have accrued as we have been creating user experiences with Windows Live Local. Of course there are a ton more details and perspectives that I could have gone into, but I think this was the right level for this talk. I’ll post a link to the talk here when (if) it’s on line. But quickly, here are the six that I added to the mix:

1.      Provide instant Feedback to the user.  When users click on something on your site, you can’t wait for the server side response to provide feedback that they did something, you have to respond immediately on the client. If you don’t your site could seem slower then it is, or it can even be downright confusing for longer server side tasks. AJAX Patterns discusses this idea as part of “Local Event Handling.”

2.      Predict user actions. By predicting what the user will do next, you can bring data, images, lists, etc… down to the client, and provide a snappier experience, help users discover options and features, and help user accuracy. AJAX Patterns discusses when they discuss “Predictive Download”, “Local cache”, and “Local Activity.”

3.      Preserve user state. When you have a rich set of interactions you invite users to invest time and energy into your site. You should honor that investment by saving and recreating user state if users close the browser, leave your site, etc… AJAX Usability mentions that as part of “Instant Save.”

4.      Allow users to Share state. Similar to preserving state, let users leverage their investment by sharing the fruits of their labors. On AJAX sites, this is often done with a “Permalink.”

5.      Create Controls and document APIs. Let web developers mix it up! Scripters should be able to extend the experiences you create and create new experiences. If you have nifty UI, let them host it in their site. If you have nifty data, let them access your web services.

6.      Strictly Separate presentation logic and implementation logic. ‘nuff said.

Hopefully you’ll be able to see some of the ensuing discussion in the video. They are after the part where we discuss how to apply these principles using ATLAS. There were a few threads to the conversation, including:

1.      Designers need web browsers to know the difference between a web app and a web site so that users know what set of conventions to use, and allow the browser to manage the saving and sharing of state, as apposed to the application.

2.      Part of #1 was “we hate permalinks!”

3.      At what point does an app get too rich to consider building it in a browser and moving it instead to a rich client app.

4.      Since web apps break conventions of web sites, how to we move the base of existing users over to a new emerging set of conventions?

Feedback, discussion, mix it up!