I made the yearly trek up to Cedar Point, which is probably one of the best roller coaster parks in the world. The rides there are pretty nuts, so we had a great time, but since I'm a web-oriented type I kept thinking: well, this is fun, but how do you make the user experience even better?
Unfortunately for us, the day we were able to free time from class and work and other obligations happened to be a pretty great day- low wind, low 70's. That meant more people in the park, which meant the dreaded lines problem.
Naturally, parks need to pack in as much people as possible given profit concerns and the physical limit of number of people comfortably allowed in the park at one time. So if you happen to head to a coaster park on any normal day, you're going to face some heavy lines- we lucked out with about a 1.25 hour wait for Top Thrill Dragster (amazing, as always), but other coasters like Millennium Force and the new Maverick were topping out at 2+ hours each.
The problem was that waiting sucked. Sucked. Top Thrill Dragster cost $25 million to build, but I bet the amount spent on the waiting area for that same ride isn't even on the same planet, much less in the same ballpark. When you think of it, why is this? You spend far more time waiting in line than you do on the actual ride. (Our roughly 1.25 hour wait for Top Thrill Dragster is pretty crazy when you realize that the entire ride is 17 seconds long.) Doesn't it make sense to really understand that waiting in line shares the same experience as riding the actual rides does? But most parks that I've been to completely miss this. They herd people through literally like cattle, complete with a maze of metal barriers and turn styles. Sometimes you'll get the opportunity to buy a $1.00 bag of candy or a $3 bottle of water, but even that is hit and miss depending on the ride. Why don't they add benches to let people sit every now and then? Why don't they add a few flat screen TVs that discuss the ride or, heaven forbid, show some clever entertainment while you wait? Cedar Point had a few DJ booths that could have been used but weren't. Why not even go out on a limb and add a few interactive games along the way? You spend, what, a few tens of thousand dollars on electronics or similar activities and you make an incredible difference in the visitor experience. Those tens of thousands of dollars is really nothing considering the initial investment of a new coaster. Otherwise you just have a line of halfway grumpy people waiting for something to happen, all the while likely thinking along the lines of "this sucks, this line is slow." Any time "this sucks" crosses the mind of a customer, warning bells should be going off in your head-- more importantly, you should see it as a way to improve yourself.
So why bring this up on a blog targeted towards web developers? Barring the whole real world aspect, roller coaster parks are pretty similar to a website. You attract new visitors, you invest in making their stay enjoyable, and you hope to keep them happy as long as possible with you. It doesn't hurt to look at your own work and see if you have any waiting queues. They may not be the headline attraction of your web app, but they might be the most important part of it. Some of the least glamorous functionality on some of the top websites makes the site what it is. Flickr has inline text field editing. Facebook has on-page photo tagging. del.icio.us has tag suggestion on a new bookmark. The ugliest processes can be flipped and made into selling points.
I recently got a chance to take a look at Crestock's new beta site. I tend to be the type of guy who likes checking out the latest and greatest, so I figure I'd take a gander.
The previous version of the site (up at this point in time, though will likely get replaced in the near future):
The super hot beta version:
From the front page perspective, things look decent- I'd argue that the new header legitimizes the site a little better than the older version. The old version did a good job at keeping things simple, but at the risk of being a little stripped down to be really professional-grade. It's interesting that in this version they're going for a left-justified layout as opposed to their previous version which was floated in the center. This style of design has been around for awhile- some retailers like Best Buy and a few news sites (CNN at one point?) were fans of the left-justified feel. The barren feel is mitigated on Crestock's new site by a 100% width header, which I think makes some sense.
Upon login, things go a bit downhill though:
While the design is improved by a really well done sidebar, this is a classic case of just cluttering up your page with stuff that really doesn't need to be there. They have a floating div on mouseover that shows your current weather, they display local time, they show a flag of your country. All of those I likely know or have a quick Dashboard widget (or Yahoo widget or what have you) to tell me those- they simply aren't necessary on such a site. This isn't really a Crestock issue as much as a general issue all developers tend to face. It's always cool to add on that extra little feature or fill up more of your page with some new functionality, but you still have to keep your eyes on the prize: does this really help your users? Sometimes less is more-- much more.
The good news is that usability for the major parts of the site are great. Quick sidebar access to my photos I've previously bought, a very clear and clean photo page to display details of the particular image you're viewing, and just a very straight forward process explaining how to use the site. I find it interesting that they're adding a public profile section to the site, like most other sites. digg, for example, added their own social aspect to their profile pages. This is a trend we're probably going to be seeing the next few years. If you already have accounts on your website, you have a lot to gain to just make the switch into public, social aspects, and it's usually not a real pain to add that functionality to your site. (I haven't had a chance to check what Crestock's functionality there is quite yet- at this writing they were working the kinks out of a few lines of code in that particular section of their site).
All in all, not a bad refresh for Crestock. Beyond superficial aspects like design, though, I really wish we could see more projects like this take results public. For example, in my last posting about CD Baby's new design, I mentioned that it would be really cool to see how that impacted conversion rates. Likewise, when a bigger company like Crestock changes their site up, it would be great to get behind the scenes thoughts on how the redesign impacted their bottom line, which aspects turned out to be crucial and which might have surprisingly gone unnoticed. Naturally, there's some trade secrets to guard here, but I think there's some general purpose thoughts that would be interesting to a wide variety of John Q. Developer Public.
Ajax solves a lot of problems: it lets you do some cool UI tricks that can make you more efficient when doing a particular task in a web app. But unfortunately for some people, it's not a magic jar of web goodness that you can open up and spread all over your application in hopes of making everything better.
digg just launched their new comments system. The JavaScript involved is pretty cool and slick, but it fails on a usability level. Comments, by their very nature, are meant to foster discussion. Having a comment system that is "threaded"- that is, lets you reply back to specific comments, tend to be a good thing. What digg's done is take a threaded approach and bog it down via excess server calls and an incredible amount of clicking. I've only used it a few minutes, and I've already found myself not caring very much about any particular person's discussion since it takes an extra click just to see what people's reply to an idea is.
Part of why they want to do it this way is to minimize spamming the first comment replies, which makes sense, but really all their current system is doing is getting more people to make more threads and reply less to other people. Think of a closed room where everyone's shouting their opinion as opposed to nicely talking it out. It just takes way too long to dig down and see what people are talking about. Maybe it's just me, but this feels like digg's flunked out of usability 101 here. I could see some improvement if they loaded everything on the client right away so when you clicked, the content would immediately drop down (as opposed to making a new call to the server), but then that defeats the whole purpose of the new system.
The other issue with digg's comments is that, in the past, they've been wholly bloated on the client-side. Nearly unmanageable. When I loaded a popular story in Safari 2 - something with 300+ comments or more - Safari would crawl to a slow painful death while I waited for it to crunch all the HTML and JavaScript for all those comments. (Interestingly enough, as soon as I installed the Safari 3 beta, I had zero issues with this- I could load 500+ comments with ease.) Traditionally breaking up the comments into separate Ajax calls seems like it would be a server-side nightmare to handle, but they're likely banking on the fact that people aren't going to drill down and view every comment on the page. In other words: they're banking on the fact that people read less comments. There are plenty of stories where I'm interesting in hearing the debate between diggers- I've sat through stories of 200-300+ comments and at least glanced through every one of them. Imagine doing that now... it could require 30 (or more!) clicks per page. When was the last time a website required clicks in the double digits to read the page?
Even worse, I see that they break up their heavily-commented pages with something like "Show 101 - 151 of 250 discussions". It's pagination for their comments. It's a pain, and it's something that I've read the digg developers (and users) had wanted to avoid. If you're going to paginate it, why don't you just use the old-school method, slap some pagination on it, and be done with it. The usability will at least be maintained somewhat.
It's more than a decade into the internet. We've had the phrase "content is king" for ages, even beyond the internet. Crazy how someone with the stature of digg can just skip that entirely.
Software is an interesting thing. It can do so many new things, but it brings a slew of new problems with it, too.
Something that I've been trying to grapple with lately is how to appropriately take an existing web site and push it into new-dom. (In other words, how I'm going to yank Good-Tutorials into something even better than it is now.) In many respects, I wish I didn't have the established base that Good-Tutorials already has. Backwards compatibility isn't just for the traditional software and OS realm; that same problem persists on the web, too. And it's much more difficult to deal with than how I originally thought it might be.
For example, the current issue that I'm dealing with right now is how to handle tutorial authors. Right now, there's no real author registration; authors just submit all of their tutorials under the same name and they can keep a collection of those tutorials through author pages (good-tutorials.com/author/author-name). I really want to start pushing for a user-centric site, where tutorials are tethered to usernames as opposed to just author names. This way you know for sure who submitted the tutorial, and this makes maintenance, support requests, statistics, and any other of the cool ideas I have in the back of my mind a world easier to implement. The problem is backwards compatibility. I have nearly eleven thousand tutorials that aren't set up this way right now. This means I either have to code additional features that let members reclaim old tutorials, figure out some way to do both, or perhaps another few creative solutions.
I lied though. I said that was the problem, but it's not the real problem. The real problem is implementing the solution. If you've been reading my blog, you know that I always try to keep a user-centric focus throughout development. When you're implementing solutions that necessarily have to be cumbersome for your users, you run into some potentially huge difficulties. The last thing I want is to make things overly confusing for users, particularly newer visitors that don't understand the flow of Good-Tutorials yet and are really quite impressionable about process and design on a site. It's important to keep pushing forward, but on the other hand you need to make sure that you're not throwing up hack jobs to score backwards compatibility.
It's rather unfortunate that things have to go this way. Admittedly, it would be nice to just have such a clear vision of the future that you can prepare for every contingency. But you can't. Five and a half years ago it didn't really cross my mind to have any sort of user functionality on Good-Tutorials. Anticipating and adapting to these changes is a slow process, not a sudden one. But it also is the nature of the web to change, and change is good. And in many respects, what matters is how you evolve the product more than how you create it.
A couple weeks ago I mentioned that there were a great deal of poorly-planned and poorly-executed tutorial websites out there. Everything for me basically comes down to the fact that no one really knows how to write for the user- they make everyone jump through so many hoops to reaad the tutorial that it just seems like the antithesis of good design sense (and even common sense).
I figured that it might be a good update to actually point you towards someone doing it right. N-sane Art just recently launched a new refresh to their website a couple hours ago- the first one in a couple years, actually. I know the webmaster there and I've offered a few pointers of feedback in terms of the design and layout over the last few months, and I think they've really nailed the tutorials. Check out this tutorial, to take one at random. The main concepts are listed at the top, each step is nicely segmented from other steps, there's a thumbnail to help you with the progress on each step, that thumbnail links to a full scale image that pops up in a Lightbox so you don't have to leave the page, and you can collapse and expand individual steps to help keep track of your process. Yes, the design looks really attractive, but I think what's really cool in N-sane's new version is a focus on usability that hardly anyone pays attention to in the tutorial sector.