What Emerging Tech Coding UX Can Learn From Cookbook Recipes

I have a confession to make: I’m a recovering cookbook addict. I still buy cookbooks, but only two or three times a year (okay, maybe four or five times). While I was a cookbook addict, I acquired a pretty good sized collection.

And of all the cookbooks I own, not one of them uses pictures instead of words to describe their recipes.

Some of the cookbooks do contain pictures. Most of those pictures show what the food will — in theory — look like once you finish the recipe. A few use pictures to walk you through a particular cooking technique. But the recipes themselves are described using words.

Despite that, many people who aren’t professional cooks can figure out how to make these recipes. How many actually make the recipes they read is a question for another day. But if my and my friends’ experience is any indication, when recipes don’t get made it’s not for lack of being able to read them.

Cookbook recipes use words whose meaning aren’t obvious to beginners. For example, here’s a recipe for a black bean and sweet potato chili (minus the ingredients list):

In a large pot heat the tablespoon of water or vegetable broth. Add the onion and garlic, stirring constantly so it does not stick. Add the salt, cumin, chili powder, and oregano. Cook for 30 seconds.

Add the sweet potato and cook for about 3 minutes. Add the tomato, water, and beans. Cover and simmer for 15 to 20 minutes. Ensure the sweet potatoes are cooked.

And here’s a recipe for chocolate pudding:

In a small pot, combine sugar with 3/4 cup water; bring to a boil and cook until sugar is dissolved, stirring occasionally. Cool slightly.

Put all ingredients except for chocolate shavings in a blender and purée until completely smooth, stopping machine to scrape down its sides if necessary. Divide among 4 to 6 ramekins and chill for at least 30 minutes. If you like, garnish with chocolate shavings before serving.

(By the way, in this recipe author Mark Bittman shows you how to make really good chocolate mousse where one of the main ingredients is… tofu. I kid you not. It took me two years before I was ready to try making it — not because I couldn’t read the recipe, but because combining tofu and chocolate sounded absolutely disgusting. Turns out it tastes ridiculously good, which a friend of mine is convinced is one of the signs of an impending apocalypse)

If you’re an absolute beginner, you won’t know how to read these recipes. You’ll need to learn a few things before you can use them. In the chocolate pudding recipe, for example, what does it mean to “bring to a boil” and how do you know when the “sugar is dissolved”? What is “stirring” and how often should you stir the ingredients so you’re “stirring occasionally”?

But figuring this out isn’t rocket science. There are millions of beginners who with some help from family or friends, classes, or just messing around learn how to become good cooks.

That doesn’t mean that the degree of complexity or weirdness of the terms used in recipes doesn’t matter. It took a while for the world of cookbook authors to figure out what kind of words and what degree of complexity worked for beginning cooks, let alone to standardize the meaning of the terms they used.

It’s certainly worth exploring if coding using a visually oriented system is a better way to go than writing text. But as the decades of experience with cookbooks shows us, sometimes a picture isn’t worth a thousand words. And sometimes only a handful of the right words is all beginning cooks need to rock it out.

What Emerging Tech Can Learn From Minecraft

In an interview this week for the report, a designer said that if we are trying to make coding easier, we could learn a thing or two from the game Minecraft. Although there have been some experiments at making programming Minecraft more accessible, it’s not the easiest platform to code. And yet Minecraft has almost 75 million monthly players, some of whom are kids who’ve tried their hand at coding it.

It’s not too hard to understand why. Minecraft is a hell of a lot of fun, and many kids become obsessed with it. And learning to code on it is almost like learning to cast spells. In his intro to Minecraft coding, for example, Minecraft Education Manager Peter Olofsson says he likes to start off by teaching students how to create a command to teleport their “agent.” Any coding class where the first thing you learn to do is how to teleport is a class that’s gotten off on the right start.

Given that so much user experience design work is focused on usability testing, it’s easy to forget that easy to use is only one part of the user experience ecosystem. As discussed previously, here’s how the Nielsen Norman Group defines the objectives of user experience design:

The first requirement for an exemplary user experience is to meet the exact needs of the customer, without fuss or bother. Next comes simplicity and elegance that produce products that are a joy to own, a joy to use.

Minecraft coding has a fair amount of fuss and bother, and you probably wouldn’t call it elegant. But when it comes to “a joy to use”, it knocks it out of the park.

If we want to ensure as many people as possible in every community have access to emerging tech jobs and business/startup/co-op opportunities, we’re going to need a lot of usability work to make coding as easy as possible. But we also shouldn’t underestimate the power of play.

When a Picture Is Worth Less Than Words (A Little Geeky)

Two years ago, I was managing a team of developers and analysts who were creating a “metadata driven data warehouse” that would make it easy for our many different types of users to slice and dice their often complex data to satisfy their unique needs. We’d finished the core system, and we were just about to start cranking out a series of custom mini-data warehouses when we discovered a tool called Alteryx. Alteryx was expensive, but it promised to remove most of the need for any coding; any “power user” who is comfortable with Excel could do very sophisticated analysis by dragging and dropping to their heart’s content.

Given how complex our needs were, deciding either way it was a pretty big risk. So, we decided to do a quick and dirty bake-off. I felt sick, because from the outside it looked like making a big change in our strategy and going with Alteryx was the way to go. But much to my surprise, Alteryx’s shiny drag-and-drop approach got its butt kicked.

A lot of the reasons we stuck with our original approach were because of the unique problems and constraints we faced. But the bake-off also uncovered a fundamental weakness with a drag-and-drop approach. Something graphical works great when you’ve got a simple problem. But to do just about anything our users wanted, first you needed to prep the data by joining together a bunch of tables of data and sift it using complex logic. And that level of complexity produced a graphical picture that looked like a scene out of a rat’s nest or an episode of Hoarders. Paradoxically, if you used text — i.e., code — to capture that complexity, it was much easier to understand.

So as I begin my deep dive into the research on improving the user experience (UX) of coding, it’s worth remembering that sometimes a picture isn’t worth a thousand words. Or to put it another way, sometimes a bunch of words are worth a lot more than a picture.

What is User Experience (UX)?

Although there are many ways to describe user experience (UX) design, one of the simplest and best definitions comes from the Nielsen Norman Group, whose founders were pioneers in the UX movement:

The first requirement for an exemplary user experience is to meet the exact needs of the customer, without fuss or bother. Next comes simplicity and elegance that produce products that are a joy to own, a joy to use. True user experience goes far beyond giving customers what they say they want, or providing checklist features. In order to achieve high-quality user experience in a company’s offerings there must be a seamless merging of the services of multiple disciplines, including engineering, marketing, graphical and industrial design, and interface design.

A core part of UX is the concept of usability:

Usability is a quality attribute that assesses how easy user interfaces are to use…. Usability is defined by 5 quality components:

  • Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the design?
  • Efficiency: Once users have learned the design, how quickly can they perform tasks?
  • Memorability: When users return to the design after a period of not using it, how easily can they reestablish proficiency?
  • Errors: How many errors do users make, how severe are these errors, and how easily can they recover from the errors?
  • Satisfaction: How pleasant is it to use the design?

There are a bewildering array of techniques you can use for usability studies, but one of the most powerful is user testing. Here’s how the Nielsen Norman Group describes what it is and how you do it:

  • Get hold of some representative users, such as customers for an ecommerce site or employees for an intranet (in the latter case, they should work outside your department).
  • Ask the users to perform representative tasks with the design.
  • Observe what the users do, where they succeed, and where they have difficulties with the user interface. Shut up and let the users do the talking.

Although usability testing can be pretty elaborate, even very simple approaches can provide very useful results:

To identify a design’s most important usability problems, testing 5 users is typically enough. Rather than run a big, expensive study, it’s a better use of resources to run many small tests and revise the design between each one so you can fix the usability flaws as you identify them. Iterative design is the best way to increase the quality of user experience. The more versions and interface ideas you test with users, the better.

In the world of web/mobile, UX has had a deep and profound impact on how designers work. You can go to conferences about it, take courses in it, even get a job doing it. If a corporation, nonprofit, or government is serious about reaching their audience, they’ve got staff and/or consultants who live and breathe UX. As you know from surfing the web, not everyone takes it seriously. But for anybody serious about designing websites and apps, UX is a critical tool in their arsenal.

But in the world of the tools, languages, and frameworks/libraries for coding? There are certainly some folks who are using UX, but my guess is that either it’s not widespread or the users most coding UX efforts target aren’t regular folks; that’s one of the issues I’m researching. Either way, as someone who’s taught a lot of adult beginners I think there’s a tremendous amount of room for improvement.

The one area where you can see the impact of UX work on coding is tools aimed at little kids. The best example of this is Scratch, an MIT project that’s been wildly successful.

Better UX for adult coding won’t by itself solve the gap in the accessibility of coding jobs and creating wealth via coding; for that I think we also need a more deeply community-oriented approach to making coding accessible. But better coding UX can make a critical difference.

August Is User Experience (UX) Month!

For the report I’m writing — on making developing emerging tech accessible to as many people as possible in communities from Compton to Harlan County — in August I’m going to do a deep dive on the User Experience (UX) of coding. As I learn interesting tidbits, I’m going to blog them. So that means this month’s blog posts will be geekier than usual.

For those of you who aren’t from the geeky side, apologies in advance; I’ll try to make what I’m learning as accessible as possible but it’s going to take a couple of weeks before I know how to really break it down. In September I’ll switch back to writing about community-oriented approaches, starting with several posts about what efforts to make tech accessible can learn from the 1960s civil rights movement’s Citizenship Schools.