I recently bought a new car. As I was about to drive off the lot, the salesperson said, “In a few days, you’ll receive an email with a survey to rate my performance today. If you don’t give me a perfect score, it may as well be zero. Say anything you want in the comments, but if you don’t think you can give me all 5s, let’s talk about it now so I can make it right.” I’ve had similar comments from customer service people at hotels and car rental companies.
How did this happen? When did it become unacceptable to receive anything less than a perfect score?
Worse, the top rating on many of these surveys is, “Exceeded expectations”. If I expect my experience to be problem-free and it is, then the experience met my expectations, it did not exceed them. To exceed my expectations, the employee would have to do something remarkable, above and beyond the norm. It’s unreasonable for a company to expect employees (or for employees to expect themselves) to receive this rating routinely.
When I deliver training, I provide students with a feedback survey. I tell them I don’t mind if they give me less than a perfect score, as long as they explain in the comments why they gave me that score and what I could have done differently to improve it. My goal isn’t to amass a collection of surveys with meaningless perfect scores; it’s to receive honest feedback so that I can (hopefully) improve. I’m sure there’s something about every class that I could have done better; I welcome the opportunity to know what it is.
Update: What prompted this post is that I had my year-end performance review on Friday, and my manager was practically apologetic as she explained that only a small percentage of employees receive a rating of “Exceeds expectations”. Apparently some people are disappointed when they don’t receive the highest rating; they feel that it reflects poorly on their performance. As you may have guessed, I am not one of those people. But then again, I was always satisfied to be a B student. ☺
This post is talking about software, but the principle applies to any consulting situation, including instructional design:
Just because people ask for something doesn’t mean we should build it… It’s our skill and responsibility as creators and experts to understand and synthesize user feedback into great products, and not slavishly do what our users say, producing one more pointless product after another.
Remember that the next time a client requests “training” focused on delivering information, rather than building skill or changing behavior. As Cathy Mooreso eloquently puts it, “Be a problem-solver, not an order-taker!”
This is inspiring: I wonder how many CEOs get hundreds of customer emails every day. I wonder how many of them would consider it a privilege.
It’s interesting to me – and I think this is a privilege for Apple – just like we’re sitting down at this table today, I get e-mails all day long, hundreds, thousands per day from customers who are talking like you and I are talking, almost like I’ve gone over to their home and I am having dinner with them.
They care so deeply about Apple they want to suggest this or that or say, “Hey, I didn’t like this,” or, “I really love this,” or tell me that FaceTime has changed their lives.
I received an e-mail just today where a customer was able to talk to their mother who lives thousands of miles away and is suffering from cancer, and they couldn’t see her any other way.
But the point is they care so much they take the time to say something. It’s not a letter like you might think is written to a CEO. It’s not this formal kind of stuff. It’s like you and I are having a discussion, and we’ve known each other for 20 years, and I want to tell you what I really think. I love it. I don’t know if there’s another company on earth this happens with. It’s just not people from the U.S. These are people from all over the world. I look at it, and I go, “This is a privilege.”
Is there another company in the world where their customers care so much they do this? I don’t think there is. Other companies I’ve worked at, you might get a letter every six months, and it was, you know, “I want my money back,” or something sort of terse. There was no emotion in it. So I think this is really something incredible.
At one of the companies I worked at, not to mention any names, we’d put (new products) in the lobby. We’d get on the employee intercom system and say, “Come look at them,” and nobody came. They didn’t even care.
I’ve talked to many other CEOs who look at me like I have three heads when I talk about getting hundreds or thousands of customer e-mails in a day. It’s a privilege. It’s like you’re sitting at the kitchen table. You’re a part of the family. And we have to continue to honor that.
What [engineers] need is someone who will set them clear goals, give them the necessary tools and training, and protect them from distraction. That’s leadership.
I have not come across many leaders in my career. Lots of managers. Few leaders.
(2) Give them clear direction, then get out of the way.
Too many managers behave as if they are indispensable. That’s often because they fear they might not be.
Engineers need to know what’s expected of them, and what their priorities are to be. Then (unless he/she is a newbie), leave them to it. Remain accessible, but out of the way.
Amen! The rest of the list is good, too, but those are my favorites.
I’ve been working on a post about how software development has moved away from heavy, big-design-up-front methodologies like Waterfall to more agile, iterative processes, and maybe it’s time for instructional design to do the same: Abandon the dated and cumbersome ADDIE model for something that allows us to produce training more rapidly and incorporate feedback from actual learners.
I will add, however, that I love this point from Justin Searls’ presentation, The Mythical Team-Month:
Consensus doesn’t scale.
Consensus corrects for the team’s needs; feedback corrects for the users’ needs.
Sadly, time spent gaining consensus costs you in feeback.
Rather than spend time in meetings talking about training, get something in front of learners as quickly as possible and let them tell you how to improve it.
As this blog approaches its tenth anniversary, I’ve been considering some changes.
For my first year of blogging, I used Radio Userland, a now-defunct piece of software created by the godfather of blogging, Dave Winer. Userland charged $40/year for Radio; when the time came to renew, I researched the available alternatives and chose Movable Type, which is free for individuals. I’ve used it, more or less happily, ever since.
A few weeks ago, Scott Hanselman tweeted about a new service that lets you create a web site by simply saving text files to Dropbox. That concept appealed to me, particularly since it would simplify blogging from my iPad.
It turns out there are severalsuchservices. Scriptogram seems the most flexible, so I created an account and began the process of converting my existing content to Markdown format.
I soon realized, however, that Scriptogram creates URLs like this: scriptogr.am/username/post/post-title. The service supports custom domains, so I could do this: philweber.com/post/post-title, but beyond that I can’t customize the generated URLs. If I migrate this blog to Scriptogram, all the existing URLs will change. Not good.
If I were starting a new blog, I would definitely use Scriptogram. But until I can keep my existing URLs, I’ll leave this blog where it is. I am, however, going to start writing posts in Markdown and saving them in Dropbox; I used Byword and MarkdownPad to compose this one. When it’s time to publish, I’ll paste the text into Movable Type (which supports Markdown); not as seamless as Scriptogram, but it’ll do.
I also plan to change this site’s focus (or, more accurately, give it one): Ten years ago, I was a software developer working on my first major ASP.NET project; I wanted a place to capture what I was learning and share it with others. Since 2005, I’ve been a technical trainer, learning instructional design, facilitation skills, and how to create e-learning that doesn’t suck. Watch for posts on these topics in the coming weeks.
In October, a friend asked me for help with an Acer Aspire One netbook that wouldn’t boot. It turned out to be a bad hard drive; I picked up a new one at Fry’s and popped it in. Then I thought, “I wonder if Linux would perform better than Windows on this anemic processor and 1 GB RAM?” So I downloaded Ubuntu 10.04 and installed it. I was impressed: it installed effortlessly, ran speedily and required less than 200 MB RAM. And the Netbook Edition launcher looks slick!
When I returned my friend’s computer, I explained that I had installed Linux instead of Windows and walked her through some basic tasks: connecting to a wireless network, importing photos from her digital camera, etc. She seemed pleased with the snappy performance and cool appearance; she said she only used the computer for basic tasks, so Linux should be fine.
As I was leaving, she asked, “Will this work with my Zune?” Uh oh. Current versions of Ubuntu can sync with Apple devices, but apparently Microsoft’s player uses a non-standard protocol that hasn’t been ported to Linux. So, um, no. “No problem,” she said, “all my music is on my mom’s computer anyway, I’ll just sync the Zune there.”
A few weeks later she called me about another problem: she had recently purchased a Palm Pre phone, and had downloaded a program to install third-party apps onto the phone. The program is written in Java, but apparently it requires the Sun (now Oracle) Java runtime, which is not included with Ubuntu. She had made a valiant attempt to download and install the correct runtime, copying and pasting commands into the Linux terminal, but she couldn’t get it to work (turns out she had downloaded the 64-bit version).
I borrowed the computer again and installed the correct Java runtime. I also installed VirtualBox, Windows XP and Microsoft’s Zune software, so she’d be able to sync her Zune without going to her mother’s house.
A few weeks ago she sent me a frustrated email with the subject, “I give up.” She was trying to apply for a job, and the application included an online test; for some reason the test didn’t work on her computer. She asked if I would please put Windows back on her machine: VirtualBox was giving her an error and she didn’t want to keep bothering me. So I did.
So, the Great Linux Experiment lasted about two months. Maybe if I had installed the Sun Java runtime and VirtualBox at the outset, my friend wouldn’t have gotten frustrated so quickly. Or maybe you need to be a geek (or live with one) to make it work.
Shortly after Apple announced the iPad, I began planning a trip to Europe. I had been thinking about buying a small-and-light notebook computer; the iPad seemed like the ideal travel device, so I bought one instead. For the first time in as long as I can remember, I’m traveling without a laptop. Here's what's worked well on this trip, and what could have been better.
Good:
Battery life. I flew from Portland, OR to Paris by way of Philadelphia, and still had plenty of battery left when I arrived. Apple’s estimate of 10 hours is conservative.
Instant-on. Using the iPad feels more like using a smartphone than a computer: press the power button and you're ready to go. No waiting for a PC to boot, or even awaken from sleep.
Portability. At 1.5 pounds with a 9.7-inch screen, the iPad is easy to bring almost anywhere; my carry-on bag has never been lighter. The tablet form factor is a pleasure to use, even for an overweight guy seated in coach.
Capacity. I wasn’t sure if 16 GB would be enough space, but it’s plenty. I keep music on my phone, freeing up the iPad’s gorgeous screen for video and e-books. I’m carrying 9 full-length movies, 5 books and several TV shows, and I still have about 4 GB free.
Remote desktop. I use an app called iTap RDP to access my home desktop computer from the iPad. This has allowed me to check my work e-mail even though my employer doesn’t support connectivity from personal mobile devices.
Not so good:
Sharing photos. I like to upload photos from the road to Facebook or Picasa; there’s currently no easy way to do that with the iPad. Before leaving the U.S., I made several attempts to purchase Apple’s Camera Connection Kit; the local Apple Store never had one in stock, and the wait was 2 to 3 weeks if I ordered one online. But even if I had one, I don’t know of a good way to upload multiple photos to an online service: the services’ Web sites don’t play well with the iPad’s lack of a file system, and there are no iPad apps for Facebook or Picasa. Fortunately, I’m traveling with friends who brought a laptop, so I’ve been able to impose upon them to upload my photos.
Limited content options. With a laptop, I can download fresh content, such as new episodes of my favorite TV shows. I can do that on the iPad, too, but only from iTunes at $2 a pop (plus DRM). Hulu is not an option on the iPad (since I’m outside the U.S., it wouldn’t be an option even on a laptop); I’m using an app called Air Video to stream content from my media center PC at home.
I brought a Bluetooth keyboard, which has turned out not to be necessary. I’m writing this from a café in Brussels using the on-screen keyboard. Maybe I’d prefer a physical keyboard if I were a touch-typist, but for this hunt-and-peck typist the on-screen keyboard is fine. When I do use the external keyboard, I find that I miss the iPad’s auto-correct feature (which converts “Id” to “I’d”, for example), and it feels awkward to have to touch the screen to select text.
Bottom line: the iPad is a great travel companion; overall, the pros outweigh the cons. For my next trip, I'll bring a Camera Connection Kit and leave the external keyboard at home. Maybe by then someone will release an app that makes it easier to upload photos. If you have any suggestions, please post a comment!
Update: Add blogging to the list of “Not so good.” I wrote this post in Pages, Apple’s word-processing app for the iPad. When I went to post it, I discovered that my blogging software’s Web interface doesn’t work well with mobile Safari: the rich text editor doesn’t work at all, and the HTML editor doesn’t display a scroll bar; if your post doesn’t fit on a single screen, you’re out of luck.[Update: I discovered, quite by accident, that a two-fingered drag scrolls a text area in the browser. Still, I’d have to edit raw HTML in order to post from the browser. I wish Pages could post to blogs!] There are a lightweight Web interface and a native iPad app, but neither of them supports formatting text — not even hyperlinks! I ended up e-mailing the Pages document to myself and remoting into my home PC to post it.
So now it’s a tie: I love the iPad’s size, weight and battery life, but blogging and uploading photos are a hassle. Add the fact that I’m limited to iTunes for additional content and I have to connect to my home PC to check my work e-mail, and maybe a small notebook computer wouldn't be so bad after all.
I will be presenting a free webinar on Tuesday, March 16 at 11 a.m. Pacific time. This presentation will consider 5 common Web usability problems and how to avoid them. You’ll learn ASP.NET techniques to improve input validation, avoid confirmation alerts, simplify complex forms, and more!
I recently purchased a new hard disk. Eager to free up space on my crowded system drive, I dragged hundreds of files from their existing locations to the new drive. “67 Minutes Remaining,” Windows said. I went off to read a book (who am I kidding? I watched TV) while the computer did its thing.
An hour or so later, I went to check on the computer’s progress. I expected it to be almost finished, but instead I saw this:
Thanks, Windows!
What’s So Bad About Message Boxes?
Here’s why message boxes are evil and you should avoid them:
They’re modal. Message boxes put the program into a mode that must be dealt with before the program can return to its normal state and the user can continue with the task at hand.
If message boxes are such a bad idea, why do we continue to use them?
They’re easy. Most programming languages allow you to create a message box with one line of code.
They’re placeholders. “I’ll replace it with something better before we ship.” Right.
Management insists.You want to do the right thing, but your manager tells you there’s no time in the schedule. “A message box is good enough!”
They’re all we know. The program needs to communicate with the user. How is it supposed to do that if we don’t use a message box?
Message Box Alternatives
To answer that last question, let’s consider four contexts in which programmers commonly use message boxes:
Confirmations. Those infamous “Are you sure?” prompts. Confirmation dialogs are generally ineffective because they quickly become routine: the user learns that to perform some action (say, to delete an item), she must click the Delete button and then click “Yes” on the confirmation dialog. The one time in 100 she doesn’t intend to delete the item, her fingers are faster than her brain.
A better solution is to provide an undo function. Simply perform the action the user requests, then make it easy to reverse the action if she changes her mind.
Status updates. “I have successfully completed a task! Click OK if you’re proud of me.” It’s fine to keep the user informed as to your program’s status, but is it really necessary to make her pat you on the head?
As its name suggests, the status bar was invented for precisely this purpose. If you’re concerned that your users won’t notice status bar messages, please use a non-modal way to display your status. Here’s how Outlook does it:
Internet Explorer uses an animated Information Bar:
Google uses an ingenious method to display status and expose the undo option:
Options. “Do you want to do X?” When thinking about how a program should behave, I like to imagine it as my administrative assistant. If I ask my assistant to make a travel reservation, do I want him to interrupt me with every option: “Excuse, me, sir. Do you prefer a window or aisle seat? In the front, middle or back of the plane? Would you rather leave in the morning or the afternoon? Do you want to fly through Chicago, Denver or Minneapolis?” Of course not! I’d like my assistant to make educated guesses about my reservation, then present it to me for approval. If I make any changes, I’d like him to note my preference for next time.
Similarly, rather than displaying a message box for each option, software should use intelligent defaults. Choose default options that will satisfy most users, and offer a straightforward way for more advanced users to change them.
Errors. This is the context most likely to warrant a message box, but only if it tells the user precisely how to correct the problem (“Please insert a blank disc into drive E:”) or if the error is so severe that the program cannot continue.
If the user can’t do anything about the error, there’s no need to bother her with it; simply log it, perhaps notify the development team, and move on. If the error is caused by something the user did, such as entering invalid data, there are non-modal ways to tell her about it. The best solution is to help the user avoid making the mistake in the first place.
In future columns, I’ll discuss each of these situations in more detail and provide sample code demonstrating my suggestions. My hope is that someday, it will be as quick and easy to do the right thing as it is to use a message box!