Wednesday, June 24, 2009

User Feedback and the tension between Features and Maintenance

I've found User Feedback to be extremely important not only for detecting bugs but also for the way it influences app design. The better you understand how your users use an app the better you can accommodate that in the design.

Sometimes I find myself wishing I could record users using an app during various stages of development; when I'm there their behavior is invariably changed. As the developer I can't help but want to assist even though my help will tend to obscure cases where they might have gotten stuck. Another person present, "standing over your shoulder" so-to-speak, creates an audience and having an audience impacts different people differently. Both of these can act to exaggerate or minimize behaviors that would yield insight into how to improve the application.

Alas, in the real world user interaction studies are expensive, time consuming and, consequently, relatively rare. I've only once ever had the privilege of observing one.

As important as User Feedback is in some cases it can work against the goal of maintainability. Accommodating the specific request of the user in front of you means more special cases. Sometimes a user may not feel that they're being helpful unless they ask for something while you're there doing the walkthrough.

Early on this is rarely a problem but once the project reaches a certain level of complexity accommodating special cases gets harder to do without inadvertently breaking something else. Which means doing it is more likely to result in bugs either immediately or later when failing to accommodate the growing list of special cases. While it's really important to make the app do what its users want it to do, and therefore change the app based on their feedback, it's also important for the app to not crash and to make accommodating future requests less likely to cause a crash.

This tension tends to be minimal to non-existent during the first few iterations then gradually increases as the ship/release date nears. Perhaps the ideal number of user reviews at any given moment is proportional (proportional-squared anyone?) to the time until the release date.

Let f(x) be a function where x is the number of weeks until a release and f(x) is the ideal number of reviews at x.

f(x) = k*x^2

where k is a fractional constant inversely proportional to the likelihood of the reviewer requesting changes. So

k = c / P(change)

where c is a fudge factor to make sure f(x) falls within a reasonable range. e.g., No point in a formula that recommends more user reviews than there are seconds in a day.

Notice how k gets larger as P(change) tends to zero? :)

No comments :

Post a Comment