I am so tired of programmers placing their convenience ahead of mine. They work for me, not the other way around! One common problem is input fields. For example, here’s a chunk of a web form I was asked to fill out when purchasing an upgrade to a product:
I typed in the phone number, and then was warned because the number was invalid. Only the first three digits had entered. The problem is that the area code is a separate field from the rest of the phone number. Why? It’s not like pulling out the area code in a telephone number is hard. In fact, it’s the sort of problem I might give as a final exam question in a CS101 class. It’s that simple!1 Admittedly this is a minor case, but summed over everyone who uses this form, it’s a significant time waster. And it would be so easy to fix!
Apple’s iCal is another program that fields the data into chunks that are far too fine. To enter the start time or end time for an event it’s necessary to type in three separate fields: hours, minutes, and AM or PM. iCal is smart enough to realize it has to advance from the hours field to the minutes field when I type a : as in 3:45. However, I have to use the mouse or the tab key to change AM to PM or vice versa. Why can’t I just type, “12:45 PM” and let iCal split the values internally?
Sometimes the parsing problem is harder, but the results are more significant. For example, Apple’s Address Book annoyingly makes me tab into each field, and carefully enter first name, last name, company, address, phone number, fax number, e-mail address and more. This makes it very time consuming to move an address from an e-mail signature into my contacts file. Address Book should allow free-form data entry, and it should figure out what data belongs in which fields. Let me edit it, in case it guesses wrong; but it should handle most data automatically. Admittedly parsing freeform addresses is more difficult than merely finding the area code in a 10-digit phone number, but it’s certainly doable, and the programmers at Apple should be a lot more accomplished than CS101 students.
Fielded data is a classic case of exposing underlying data structures to the user. The underlying code uses fields rather than storing every entry as a raw string, and rightly so. However, there’s no need to show this to the user. Especially there’s no need to show this to the user for basic data entry. The programmer will have to do more work to make this happen, but all the software’s users will do less. If the software is heavily used (as Address Book is) the trade-off is worth it.
1You may be wondering what would happen with an international phone number. While that could be handled automatically as well, this particular web site separated North American and International orders onto two separate forms, so this issue doesn’t apply.