My second example of a problem where "just do the right thing" turns out to be surprisingly complicated is a feature that does not exist, but ought to.
Being a luddite who has not yet cottoned on to this newfangled MP3 player fad, I like to listen to CDs in my car. My daily commute takes around half an hour. The average CD is longer than that, but luckily my car has a feature that remembers and automatically resumes from the previous play position. Without this I would get stuck listening to the first half of a CD over and over again!
The problem is that when I start the car, music blares out in mid phrase, which is not aesthetically pleasing. When near the start of a track, I would prefer it to rewind and start over. If near the end, it would be better to skip ahead to the next track, rather than irritate me by jumping into the last seconds of a fadeout.
To work well, such a system should take the length of the track into account. When playing three minute pop songs, I pretty much always want to rewind or skip ahead, and never resume in mid song. But I also enjoy classical symphonies and sprawling prog rock epics, and don't want to get stuck restarting the same 20 minute jam every time I get in the car. The longer a track is, the more willing the system should be to resume in the middle of it.
Another interesting factor is how long the car has been idle:
- If I nipped into the store to grab some milk, I will still have the previous tune in my head, freshly enough that I do not want its intro repeated, so it would be reasonable to resume even in the middle of a short pop song.
- If I have been at work all day, I no longer remember what song was playing, but do recall the album as a whole. I'm more likely to want to round to the nearest track.
- After going on vacation, leaving the car parked at the airport, I have entirely forgotten what music was playing, so it would make sense to restart the whole album.
This would not require any visible user interface, and I suspect many users would never even notice it, but a smart implementation could vastly reduce how often I have to manually operate the forward or rewind buttons. Why should I have to bother pressing them, when my wishes are so predictable and easily automated?