Wednesday, December 10, 2008

Useful URLs

Whilst at the Sydney ALT.NET meeting this week last month (this post took far too long to write) I had two divergent lines of thought crossover and mashup inside my brain ...

office-sign-brain

I have been working for some months on a large corporate extranet portal and have been steadily fighting to keep the client focused on organising the site around, not my ideas of their organisation's needs, not their ideas of their organisation chart, but rather on the information needs of their clients, the people the portal is really there for.

This can be subtle, after all we all have good reasons for liking our ideas of how to organise the site. In fact we needed to make sure that the content authors from our client in fact could publish their content in a way that made sense to them (and thus organised around their needs).

Back to the Sydney ALT.NET group, as Ali went about explaining the usual routing options with ASP.NET MVC it occurred to me that ASP/ASP.NET developers have been doing the same thing with the organisation of their application URLs. For years they have been organised around the structure of the site as it is developed, with folders in the original web projects visible on the final website URLs. Even when we have introduced user-friendly URLs, and used ASP.NET MVC's routing we still manage to come up with ideas that fit our view of the business model and not our users' needs.

Aside: Do users even care about URLs?

This is a great question because it is at the heart of what I'm talking about here. My subjective view is that they do, I know that I do and I've seen people refer to the URL when trying to work out where they are within a site. However, many sites still have complex, unfriendly URLs and I think the average user (quite rightly) doesn't trust them.

Let's look at it another way, do you care about your users? If you do then you will want to help them every way you can, including making your URLs friendly and useful.

I suspect that the real problem is that we lack a clear design language, or paradigm for helping us work these things out. After all when you can do anything with a URL, who is to say what is right? Yet, if there is one thing the growth of the web has taught us, it is that UI standards grow out of users liking websites that follow common practices (e.g. shopping carts instead of bags, boxes or orders; horizontal main navigation menus as opposed to vertical, circular, drop down boxes, etc.). See Jakob's Law of the Internet User Experience:

"Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know."

Similarly we may find that websites that follow RESTful URL paradigms with particularly clear syntax are seen as much more useful than ones where you have to rely on the menu structure or search. Here is a (contrived) online shopping example:

Old School (ASP.NET Webforms):

http://domain/shop/cart/default.aspx?Method=AddCart&ProductId=123

New School (ASP.NET MVC):

http://domain/cart/add/123

Most Useful (or not):

http://domain/buy/Sony/Walkman?quantity=1

Now I'm unhappy with that last example (perhaps going against the "shopping cart" paradigm muddles things), but my point is that we should phrase things the way the user sees them and not what suits our architecture/business model. Give the URL back to the user as another useful tool and see what happens!