1.3 Deal With Forms
Forms are one of the most important areas in which you as a developer impact the users’ experience. A badly built form can be one of the most frustrating experiences for users.
That is why in this lesson I’ll focus on how to make forms better. In particular, I’ll challenge you to deal with the complexity behind the scenes—complexity which all too often becomes the user’s problem.
1.3 Deal With Forms
Hello and welcome back to this presentation on Becoming a User Experience Developer. In our last video, I introduced the idea of the user experience is much the responsibility of developers as it is designers. I also shared that reducing complexity is the key to providing a better user experience. You see, any digital service whether it's a mobile app, web app or a website comes with a fixed amount of complexity based on what it is you're trying to do. The question is, where is that complexity gonna lie? Either the user can be expected to deal with the complexity of the service, or we can choose to deal with that complexity ourselves working hard to hide it from the user. The development of forms brings all of this into very sharp focus. And we have to decide if we're going to address the complexity of using forms or leave that to the user. If we're going to become user experience developers then the choice is pretty clear. It falls to us to remove the complexity of the forms users interact with on our sites and apps. Let's take a moment to look at some examples of where the choices that we make make a big difference to the user's experience when interacting with forms. Take for example, phone numbers, one of the most common pieces of information uses are asked to enter into a to a form. As developers we've often been asked to store all those telephone numbers with the area code held separately. This allows all colleagues in the marketing department to segment users based on their area code. This piece of functionality immediately introduces additional complexity into the system. But what do we do with that? Unfortunately, we often expect the user to deal with this complexity by entering their phone number into multiple fields, so separating out the area code. At face value, this doesn't seem unreasonable. After all, it's much quicker for a user to tab between multiple form fields than it is for us to code the functionality that extracts that area code, and holds it separately. Unfortunately, there's some problems with this logic. First of all, and we're not just talking about one user having to tab between multiple fields, we're talking about every user. Potentially millions of people having to make that little bit of extra effort because we didn't want to hide the complexity. Second, I'm surprised at just how many users aren't aware that they can tab between fields in a form. This turns a minor irritation into something just that little bit more frustrating. In itself you could argue that something like this is not particularly damaging to the user experience, however combined with other small irritants it can start to seriously undermine how people feel about interacting with your Apple website. Let's say for example that the user has entered their telephone number and is now faced with a postcode field. They enter their postcode and receive an error message telling them that the postcode is incorrect despite the fact that they've entered it correctly. They're now faced with yet another tiny irritant. In fact this one's not so tiny as many users will not realize that the reason the post code has been rejected is because it hasn't been formatted in the way that the developer anticipated. For example for post code the editing caps. And if the developer fails to recognize that the user might not have entered it in this way then the code can choose to reject their post code, and it leaves the user totally confused and unsure what they did wrong. If we want to call ourselves user experience developers, we need to work hard to avoid these kinds of scenarios by baking intelligence into our validation. It shouldn't matter how the user chooses to enter data, our system should adapt and reform it as necessary. We should also avoid asking users for information that isn't entirely necessary. Now, I'm not just talking about the additional fields marketers ask you to add to form so they can collect demographic information on their users. I'm also talking about the information that we as developers could automatically ascertain with a little bit of extra work. For example, asking a user to identify what type of credit card they're using when you could look that up automatically. Or asking a user to enter their full address when a postal code and house number would be enough. Doing the extra work to automatically look at this kind of information is becoming increasingly important as users rely more heavily on mobile devices. Data entry on mobile devices is particularly painful. So, anything we can do to reduce the amount of typing is worth the effort. But it's not just about reducing the number of fields. It's also about minimizing the number of decisions the user has to make and the number of options that they have to wade through. Remember that country drop down list I mentioned in the previous video? The one that included countries like Antarctica? That's a classic example of unnecessary options. Just show the most common countries, and add an option to display more countries if required. It will significantly improve the experience for the majority of people using your website or application. We need to think carefully as well about the persistence of data. Nothing's more frustrating than getting part way through a form, only to realize you need some additional information. And by the time you've returned from getting that information, your session has expired. Then there's the increasing likelihood that users will move from one device to another during their interaction with you. Although it's hard to provide a consistent experience between devices, it's something that we need to consider as we build modern applications. Admittedly things like persistence of data between devices and over time does present some security concerns. But as with the password example we used in the last video, we need to balance security and usability. As developers I think our natural tendency is toward security. But, we need to become increasingly creative in balancing the two. For example, perhaps we should encourage users to enter long password phrases rather than more complicated combinations of letters and numbers. It's just as secure, but it's easier to remember. Or maybe we need to explore ways of avoiding passwords entirely by validating through a mobile phone or email address. The point is that we should just take the simplest or most well trodden path, but instead look for some more original solutions to these user experience issues. But not all user experience issues require time consuming and complicated solutions. Simple things can make a big difference, too. Things like labeling buttons clearly, so a user does not have to read the surrounding text in order to make a decision. Things like having a logical tab order that doesn't jump them randomly around the screen. Or simply hiding fields that the user should not have to complete. These little things make a big difference and they all worth the effort. Talking of small things that make a big difference it's also good to provide users with positive feedback. Letting them know that they completed fields correctly is just as important as throwing up an error when things go wrong. Ultimately all of this comes down to putting thought into the decisions we make them recognizing that they will have a huge impact on the experience. Little usability hurdles can quickly add up to feel like death by 1.000 cuts when it comes to user experience. When you times those little problems by a huge number of uses in countering those issues, it really emphasizes the amount of pain that we can cause as web developers, when we make careless decisions about how we build things. That reminds me of a famous story about Steve Jobs being unhappy with the boot time of the first Macintosh. He argued that if you could shave ten seconds off that time for 5 million uses, that that would equate to dozens of lifetimes being saved. He argued that improving performance actually saved lives. Although this logic is somewhat fanciful, it's a nice way of thinking about things. Small things can make a big difference when they happen time and again. And so it falls to us to improve those little experiences. This is especially important when things go wrong. As we're going to discuss in the following the video of this presentation. But until then, thanks for watching.