Author Topic: Dan Grover on the People Who Use Your Software  (Read 1159 times)

0 Members and 1 Guest are viewing this topic.

Offline Father Tim (OP)

  • Vice Admiral
  • **********
  • Posts: 2162
  • Thanked: 531 times
Dan Grover on the People Who Use Your Software
« on: February 19, 2010, 05:48:50 PM »
I read this article online (http://dangrover.com/?action=view&url=toward-a-grand-unified-theory-of-n00bs) and realized it applies fairly well to what's happened with Aurora of late.  While some may find the term 'noob' to be insulting, that's not my intent and I hope they'll forgive me.  It's the idea of 'layers of abstractions' and, in some cases, assumptions based on "the way it's always been" in Aurora that cause things that seem so obvious to oldtimers to be so confusing to newcomers.

Try to substitute "Aurora" for "computers" as you read the article, and I'm sure you'll see parallels in the examples.


Toward a Grand Unified Theory of n00bs

The blogosphere has been abuzz lately about a post on the blog Read Write Web. The post itself is an uneventful one about the growth of Facebook Connect as a means of authentication on third-party sites.

The reason we're all talking about it is that last weekend, it momentarily showed up on Google results pages for the phrase "facebook login." And lots of people clicked on it, thinking it was Facebook's login page (when it was clearly an entirely different site). They wrote comments on this post demanding that Facebook change its login page back. You know, to the pretty blue one that said "Facebook" at the top instead of "Read Write Web."

One blogger summed up the situation astutely:

    "It’s like… Like if you asked a friend if there was a Starbucks in his neighborhood and he said, yeah I think there’s one half a mile down, maybe. And you drive half a mile and see a big carwash place, and you park and walk in and ask to speak to the manager. And you tell the carwash manager how unhappy you are with this terrible new Starbucks redesign."

It reminded me of a similarly-fated post on a site called OK/Cancel. Somehow, it got page-ranked as the top result for the phrase "cancel google", so hundreds of irate, confused people used the blog comments for that post to lash out at Google for being set as their browser's homepage.

Or take the Yahoo! Local page for the Chicago Better Business Bureau (or that of almost any city's BBB). People come to the page and leave scathing reviews of the Bureau itself, thinking the listing page is the official site and that the review form is, in fact, a generic contact form to report your grievances about whatever business has just wronged you.

I've always found this kind of thing fascinating. Since I run a software business full-time, I have to deal with it constantly.

Like a few months ago when my company recently gave away a bunch of licenses to ShoveBox as part of a MacHeist promotion. Don't get me wrong, it was worth it, but the customer support load was pretty overwhelming, despite lots of preparations. You shoulda seen some of 'em. We got everything from questions about other random Mac apps, to people who thought the whole thing's a scam because they didn't read the part about actually entering in their serial number, to people threatening to call the FBI (and for some reason the FCC) on us. Craziness.

As a computer savvy person, it's easy to forget how different the average joe is from you. This disparity is the source of much frustration and inefficiency in the world. And it's only going to get worse, unless we do something about it.

If these seem like isolated edge cases to just shrug off, consider the vast financial loss attributed to phishing scams. Any phishing scam can be easily avoided by anyone who can read a URL and tell if the website they're on is, in fact, their bank's official site, but naturally most computer users can't.

The initial reaction of folks like me, of course, is to dismiss these people. After all, they don't know what a browser is. They don't seem to understand what site they're on or who it's run by. They're unfamiliar with basic design idioms used universally across the web (e.g. headings, subheadings, navigation, comment forms). Some seem to lack even basic reading comprehension, and no amount of redesigning or copyediting will enhance the understanding these people take away from a page. They can only be described as n00bs.

How n00bs are different

But there are legitimate excuses for this kind of behavior that can be found by examining some key differences between those who build software and those who use it:

    *Confidence

      Many incredibly bright people simply lack confidence when using a computer. To them, computers are confusing, inconsistent, and baroque in their complexity. Their IQ drops 50 points when a simple question or statement is presented to them on a screen instead of by some other means.

      Try to watch anyone over the age of 50 add money to their subway card and you'll see what I mean. BART kiosks are pretty bad, but you should see old Bostonites try to use the reasonably well-designed MBTA ticket kiosks. "Come on, this is wicked confusing. Where'd ya pahk the cah?" Then the poor station agent comes by and explains that it's just asking them "Would you like a receipt?"

    *Disabilities

      It seems stupid for someone to blindly click the first search result on Google without reading it. But what if they actually are blind? That might be a perfectly reasonable thing to do for someone who uses a screenreader. Outside of government websites that are required to obey Section 508, very few sites are designed with disabled users in mind. If they were, Stevie Wonder might not have such a hard time on Twitter.

    *Nested Hierarchy

      Any kind of recursive data structure is baffling for most human minds. It's just a weird concept. A common example of this is a filesystem, but because many computers hide the filesystem from the user (the only notable exception is the Mac), users never get much exposure to the idea. But even sites that have too many levels of sections and subsections baffle people in the same ways, even if the design presents this topography well. It's just not a natural way for many people to think about information.

    *URLs

      URLs are mystifying for regular people. They're background noise.

      Not only are they hierarchical (which is a stumbling block in itself, as mentioned above), but their syntax doesn't even intuitively reflect that hierarchy.

      Postal addresses are pretty simple — they go in order of small to big. Each part describes an actual region of space which is contained within the region described by the next part. Most people could take an address and carry it to its logical extreme, like in that one line in Thorton Wilder's Our Town:

          REBECCA: I never told you about that letter Jane Crofut got from her minister when she was sick. He wrote Jane a letter and on the envelope the address was like this: It said, Jane Crofut, the Crofut Farm, Grover’s Corners; Sutton County; New Hampshire; United States of America; continent of North America; Western Hemisphere; the Earth; the Solar System; The Universe; the mind of God - that’s what it said on the envelope. And the postman brought it just the same.

      URLs are totally different, though.

      The domain name portion of the URL goes from the bottom-most subdomain to the top-level-domain, but then the path portion is expected to go from the root level of the site down to the specific page they're on.

      Many websites have pretty crazy gobbledegook-laden URL schemes, too, so it's no wonder people just skim over the location field in their browser or even use the search field exclusively.

      The movement toward clean URLs and some changes to the way browsers display them (like Google Chrome has made) may alter this perception, but I doubt it.

    *Abstraction Distraction

      It takes a while to really understand any abstraction in our modern society: how currency works, why we try to separate church and state, how a bicameral legislature acts on the will of the people, how interest compounds.

      I know it always takes me a long time to grasp any new programming paradigm. I still don't quite get the idea of monads in Haskell. You see, unlike laymen, programmers are regularly challenged with new ways of abstracting information (be it entire programming paradigms, new frameworks, or just a new way of factoring their own code) and eventually become adept at this meta-skill.

      But regular people don't have to learn new abstractions on a day-to-day basis. Anything presented to them in a new symbolic or abstracted way is bound to cause confusion for a long time. Especially second or third order abstractions.

      Here's an example.

      In the early 2000s, "blog" became a new buzzword. To understand what a blog was, you sort of had to understand what a website was (which many still did not), and how that's different than a book or a newspaper.

      At some point, blogs added comment forms. But to understand comments, it helped to understand the concept of a blog to begin with, and how those comments are different than the actual posts (and certainly different than a contact form or a guestbook that covers the entire site).

      Eventually sites like Facebook and Twitter came along with status updates. But to understand a status update, you kinda had to understand a blog and why the heck a normal person would write one. And to understand the comments feature that Facebook added to status updates, it's easier if you think about them like comments on blog posts (and how that's different than the person's wall). And the whole thing makes a lot more sense if you get general idea of a social network — which was something popularized well before Facebook came around — and how that impacts who can see what on the site.

      When Facebook launched its "news feed" feature in 2006, it caused massive uproar. Not many really understood how it was supposed to work and threatened to quit the site out of concern for their privacy. But now most social websites have worked in news feeds. Some sites have played with the idea, aggregating multiple feeds from different sites or letting users filter them and change how things get posted on their own feeds. But to understand any given site's news feed, it'd help to be filled in on how news feeds function in general.

      I could go on. This all sounds like really elementary stuff, but the point is that regular people don't follow the evolution of these ideas and see how they progress. They approach an abstraction without seeing what it's analogous to (or what that's analogous to). They form their understanding from scratch.

      Sure, users don't have to have a complete history of any feature they're using (in the same way I don't need to understand why my TV doesn't have a Channel 1 to watch it). But any time a designer frames an idea as an analog to another ("It's like X, but for Y!"), they must be prepared to deal with people who need an introduction to the whole shebang.

      To Facebook's credit, it has one of the best design teams in the industry and handles these challenges well (though apparently not well enough for some parents).

So there are a lot of ways regular people are different from programmers, and in ways much more nuanced than simple "computer literacy." How do we solve the problems caused by these differences?

PARTIAL SOLUTION 1: A COMPUTER COURSE FOR THE 21st CENTURY

Should computers be dumbed down? Yeah, probably a bit. Programmers can't build software expecting that their users will dork out and explore its every facet. That's got to stop. The iPad is a bold step in the right direction that might even be going too far.

Another solution lies in education. I think programmers and "digerati" may have caught onto some trends that will become important for everyone in the 21st century. The solution lies in effectively teaching to these.

Really, every subject's curriculum should be overhauled to account for the vast economic and social changes that have occurred in the information age (Paul Graham's The High Res Society is a wonderful summary).

But I'll focus my comments instead towards courses that purport to cover computers.

I think I can speak for most of my generation in saying that computer classes in high schools, colleges, and community centers are universally worthless. Courses for young people are usually taught by out-of-touch adults with a much less advanced understanding of the things they're teaching than their students. The only kind of teacher likely to be more incompetent than a computer teacher is a gym teacher. But that's not the problem.

The real problem is that these courses often teach a specific operating system or a specific office suite in an extremely facile manner. They're glorified typing courses. That means when Microsoft changes the locations of buttons in Word, students' knowledge is obsolete. Even programming courses in high school (and many colleges) are tied to specific programming languages, not general concepts. A good course teaches a mix of theory and application, but most computer courses can't even handle application right.

To create a computer course for laymen that does not do them a disservice, it should be rooted in things that we can reasonably anticipate will not change. I'm not quite sure what those are but the stumbling blocks outlined in the previous section are a good place to start. It should combine practical computer skills and general information literacy. It should be required and it should be rigorous, not a blowoff course.

Imagine how many fewer bank accounts or email accounts would be hacked if a section on the final exam gave students URLs and asked them to identify the domain name, the subdomains, the path, the port, and the protocol. This sounds like esoteric technobabble at first. But if high school students are expected to know how many valence electrons molybdenum has or how to define trigonometric functions in terms of each other, it's highly practical by comparison.

Teaching students how a hierarchical file system works would make sense. It could even briefly cover the directory structures on each popular OS at the time and where things go. I have my doubts on how long the idea will last, but I'm betting at least another 15 years.

I'm hoping email (as a means of communication) will die a horrible death in the near future. But if it doesn't, its technical intricacies should be taught in some detail.

Such a course might also include a primer in Boolean logic and proofs, plus basic set theory — nothing too comprehensive. This would certainly allow students to refine their Google queries if the first result isn't right (assuming they actually check).

Or there could be projects where students are asked to make simple relational database applications (not requiring any programming — just using a GUI) and to construct queries that join across tables to locate information. Or maybe they could use Yahoo Pipes to create mashups of multiple sites to solve a given problem.

Hell, a basic non-mathematical introduction to public key cryptography wouldn't be a bad addition. I don't think that's going away for a long time, at least not until we get quantum computers.

This course could give students research projects to hone critical thinking. They could be given news stories, Wikipedia articles, and whitepapers by interest groups and be asked to get to the heart of the matter and argue one way or another. Students should be able to recognize logical fallacies and propaganda techniques so often employed by politicians and forum trolls alike.

The crux of all of this is that it's becoming an essential skill for any capable person in our society to be able to sift through vast amounts of information of uncertain quality to find the best. Teach this and the rest effectively teaches itself.

Ultimately, if schools were completely successful in designing a curriculum for the 21st century, they might find themselves the architects of their own obsolescence as institutions.

But until then, teaching kids how to read a URL so they don't get scammed by the Nigerians would be a nice improvement.

PARTIAL SOLUTION 2: UNDERSTANDING THE ECONOMICS OF DEALING WITH N00BS

Many Web 2.0 companies have a pretty effective way of dealing with n00bs needing customer support: they don't. Hey, buddy, it's free — what do you expect? And they have enough of a user base that they can gain an intimate understanding of how to design their products through processes like A/B testing.

But for those of us actually charging users money and hoping to keep them happy, however, we have a more complex set of obligations. Here are a couple realizations I've made on that:

    *Define Your Audience

      When designing a piece of software, it's important to draw the line at the level of expertise required to use your app and communicate this consistently in your marketing, documentation, and correspondence with customers.

      For instance, if you've written a desktop app that's document-based, it makes sense to expect users to be familiar with Open/Save dialogs. It's reasonable that they not blame you if they confused their document for one they gave a similar name to in a different folder.

      Yet some apps like iTunes and iPhoto are not so arrogant as to presume such knowledge. And others, still, like Final Cut Pro or AutoCAD expect users to come in with quite a lot.

      Should all software condescend to the lowest level? Not at all! At least, not necessarily. By presuming knowledge of conventions and abstractions used on your platform and in other apps (or even inventing your own), you enable a lot of power and functionality to users. Ideally, you can find opportunities when designing a piece of software to lower the learning curve without hurting anything. But, like any film or piece of writing, you must have a very clear idea of your audience that informs every choice you make.

    *Optimize Support Processes

      Before the MacHeist promotion I mentioned earlier, I set to optimize users' interaction with my software and website in two ways:
         1. Lower the rate at which users write in with questions or complain about the app
         2. Increase the rate at which users buy the iPhone app companion to the desktop app they got for free and increase the number of people who subscribe to our newsletter.

      These goals were accomplished by fixing lots of usability flaws in the app and edge case bugs (particularly syncing bugs). I redesigned the support section of our website (this still needs lots of work), and found ways to encourage more users to use resources like FAQs and manuals. I even put a special box at the top of the site if the user came from MacHeist.com.

      In addition, to handle the demand, I also switched to a ticket system for support emails and hired part-time help.

      Part of the reason why I hired someone to do support (even during periods when I could handle the burden) is that I tend to take email from users personally. I try to fix that person's problem and then find a way to make sure nobody else ever has it. I even made a house call to a guy who happened to live in San Francisco and had a problem with the app. But it took a sudden influx of 300,000 new users for me to realize that you can't please everyone.

      The first line of defense is to make sure that people who do have a clue can get help with their problems easily without having to contact you. If all your emails are from wackos with hopelessly dumb questions, that means you're doing things right! Then you'll have to find cost-effective and time-effective ways of dealing with the wackos, so that you can respond to the remaining emails with the full consideration and respect they deserve.

WHITHER THE N00BS?

Will n00bs forever be the nuisance they are today? Will there always be some sort of paradigm shift in the world that the Luddites born before will fail to understand in a fundamental way? Or was the computer revolution a once-in-a-century sort of thing, not the first step in the dizzying race towards the singularity? Time will tell.

But for right now, the fundamental problem is that the people who seek to popularize and commercialize a given technology (say, personal computers or digital cameras or social networks) only have it in their self interest to make the public understand the technology enough to buy the darn thing. Not to use it well. Kathy Sierra has talked about this. But ultimately, it's in society's collective interest for people to be computer-literate and information-literate. And since the big players aren't doing it, the problem is foisted on the rest of us. Hopefully the partial solutions outlined above begin to address the problem.