Over the last couple of days, I have taken Dig Deep Fitness, my iPhone fitness software application, and actually tried using it during real workouts. This was a very interesting experience - it's probably the first time that I have ever truly field-tested an application. In the past, I have tried to mimic what I thought an "end user" would do and I have given demos of software and web applications and I have tried to create highly usable web interfaces. But the truth is, unless you try and use a product as a real consumer, you can never really get a good feeling as to how it will be used. There are just too many contextual issues that can only be felt and experienced by a true user in a true using environment.
For a contextual example, using the Dig Deep Fitness iPhone fitness software in the gym is not just about "using" the application. In fact, a lot about the context has absolutely nothing to do with the application at all - it's about what clothing I'm wearing, it's about how fast I am going through my sets, it's about how sweaty I get, it's about what kind of machines I am using (and do they have shelf-like areas), it's about the level of conversation that I need to keep up, it's about what exercises I am performing (and is my phone in danger of being damaged), it's about how winded I get (and how much I need to catch my breath between sets).
In short, 50% of the application's usability has nothing at all to do with the application. Never before, as a web developer, have I ever even thought about approaching usability from this standpoint. And, I am not saying that it is even always an option; right now, I just happen to be in the highly unique situation where I am both the developer and the target audience. I'd say this is extremely rare and therefore is not something that can be achieved elsewhere. Sure, you can do usability testing with real test subjects, but even that is in a test environment that maybe nothing like a user's real environment.
That interesting perspective aside, there are a few things about the actual iPhone fitness application that do actually involve the web application itself. The biggest points of friction that I encountered are:
The keyboard. Typing on it is a pain in the butt! Most of the time, I need the numeric keyboard and it defaults to the alpha keyboard. This requires an additional key press every time I want to enter weight or rep data. And, with every set containing both weight and rep values, this is a lot of extra typing on a keyboard interface that already suffers from usability issues.
The select box. When selecting your next exercise to perform, you have the option to select an existing exercise from a drop down box. This box is very small, is not usable for long lists, and make reading long-named exercises very hard (if not impossible).
I see that I have to replace that drop down box with a list of exercise links that can allow for full screen "flicking". This will take care of that point of friction (I believe). The keyboard issue is a bit more complex. After some Googling, I am not seeing any way to default to different flavors of the keyboard. I might end up having to change the way weights and reps are being entered - maybe some sort of HTML keyboard or convenience links (ex. +5 lbs, +10 lbs).
This was definitely an eye-opening experience; it makes me wonder about what other things that I've built that I thought were good but, unbeknownst to me, ended up causing much more friction that I could have imagined. It just goes to show me how hugely inadequate we, as developers, are as "test subjects" for the software that we build.