Easy-to-Use is Hard To Build
You only had one million jobs!
Over on r/slatestarcodex, u/djarogames says:
I always found it strange that language learning apps like Duolingo seemed to update so much. If you have an app or website that accomplishes its goal of getting people to learn a language, if you have a working product, why fix what isn't broken? Languages and human psychology are relatively static, right?
(I actually don't think Duolingo is all that good for language learning but that's a seperate discussion)
I thought, maybe they have a handful of engineers that need something to do, so they just add some pointless stuff or slightly change stuff every now and then. So I looked at their about page, and apparently, of their 600 employees, around 270 (45%) are "engineers"?? And they also have 5 offices around the world, in Pittsburgh, New York, Seattle, Beijing, and Berlin.
All this for a language learning app/website?
Sure, 100s of employees that speak foreign languages to create and expand courses, I can understand that. But 100s of engineers?
It's an app. That gives you a sentence in a foreign language. And then you have to type the answer. This does not require 300 people in 5 offices around the world to create, much less maintain.
In the comments, they continue:
I understand that duolingo is by no means simple and it actually has a lot of features. But the thing I don't understand is, these all seem like things an individual could implement in a week.
You see variants of this question across the internet.
One Redditor asks "Why are there SO MANY engineers/developers at giant companies that don't(to my knowledge) need that many?” On r/learnprogramming, another very optimistic user says, “just talking about google.com for now, it seems like it should only require 1 or just a few people to build and maintain that website?”
Working in tech, you quickly learn that Joe User thinks building a planet-scale service is, like, not that hard. It’s the acquaintance with a brilliant app idea who just needs someone to code it — don’t worry, he’s totally down to give you 25% of the profits. In this line of thinking, building and maintaining massive services is easy.
One could easily dismiss this as cluelessness. Or, if you’re more generous, you could concede there’s absolutely bloat in larger companies but emphasize that running these services still takes mountains more work than the average person realizes, and leave it at that.
But I think djarogames’s original question helps show why non-tech people get this wrong.
These days, people say “you had one job!” when someone screws up a seemingly simple task. There’s a whole “you had one job!” subreddit, where the French air force screws up their own flag, a tug-of-war teammate pulls in the wrong direction, and a Redditor even misspells r/onejob.
Personally, though, I often level this accusation at technology. When Netflix stalls, when my phone loses signal, when any app does anything differently than I expect, I furiously mutter “you only had one job!”
This is kind of a ridiculous accusation. My phone has a million jobs. It takes 48 megapixel photos and instantly navigates anywhere and hosts 1 AM chess matches and teaches me French and tells me that democracy is DYING and lets me play Wordle. My phone is, if anything, severely over-employed. But when a single app stalls for 12 seconds, I forget all that and angrily jab my finger at my phone for failing to do its one goddamn job. In its moment of failure, the thing I want it to do becomes the only it was built to do.
Sadly, we often only notice technology is doing anything when it doesn’t do what we want.
I saw this tendency while working as a software engineer among non-engineers. I built data pipelines for the non-engineers, who naturally wanted the pipelines to handle all manner of quirks — edge cases, inconsistent rules, the current state of the lunar cycle, you name it.
Unfortunately, the non-engineers had internalized these quirks as ‘part of the process’, becoming blind to them. When the pipeline handled everything correctly, they’d wonder why it took so long to build. And I would remind them about those quirks I spent days or weeks handling. They’d nod and say “there’s only a couple, though, right?” Of course, when the pipeline mishandled any quirk, they’d notice and send us to DEFCON 1. In peacetime, though, they didn’t register that the pipelines did much at all.
Or, for existing pipelines, the non-engineers would hesitate to dedicate time and people to maintaining them. “It already works, though, right?” they’d say. I would explain that supporting libraries would change, that bugs would be identified, and that the non-engineers themselves had requested new features literally minutes earlier, and that those usually required work. They’d begrudgingly agree that we could dedicate some resources to maintenance, but they always seemed skeptical. If it’s already working, why does it need more work?
You could classify this thinking under one job syndrome: the belief that technology’s one job is simply to do what you expect it to do. In this view, technology feels oh-so-simple because you’ve wrapped up its countless jobs into one neat package.
And while the words “you had one job” do not appear in the post about Duolingo, its spirit permeates it:
[Duolingo is] an app. That gives you a sentence in a foreign language. And then you have to type the answer.
This is textbook one-jobbing. Duolingo does provide foreign language sentences and let you translate them, yes. Oh, but it also creates a Super Mario World-style progression, where lessons are grouped together and you receive points for success. Ah, and there are dozens of different types of lessons. That includes text-based, listening, and speech lessons, so throw some speech recognition in there for good measure. Obviously, it has to let you save your progress and return to it. And share and view your friends' progress, that goes without saying. Of course, this all needs to be monetized. Oh, and build that across 3 different platforms and 40 languages and keep it up all the time, everywhere.
Duolingo provides all these features, but it doesn’t want the user to notice the lines between them. The goal is to move the user smoothly throughout everything so that it all feels like one experience. Users notice that an app is doing many things when they feel friction transitioning between them. It’s like a rollercoaster: if you had to get off the ride and back on for each loop or corkscrew, you’d notice the different parts, but you’d fucking hate it. If it’s built right, it’s a single smooth ride.
Like most tech companies, Duolingo pours in effort into creating this smooth ride and then promptly hides that effort from users. It takes painstaking user research, project management and engineering to build something that works as users expect. It takes countless engineers to build and maintain the infrastructure required to keep everything running and secure. With all that effort, Duolingo users can blissfully glide through all different types of exercises in any language, on any platform, anywhere in the world, at any time of day, without fear of lost progress or stolen account info. And because it’s seamless, it seems like it’s merely giving you a foreign language sentence and letting you translate it.
A smooth enough experience tricks users into believing there’s not much happening under the hood. It feels easy-to-use, so it seems it must not be doing much. This gets the relationship backwards: easy-to-use (and reliable, and secure) technology requires lots of time and people. It takes a ton of work to make something complex feel simple.
Subscribe to Good Reason to receive more posts like this one, motivate me to write, and be blessed with good fortune by the Duolingo owl.
If you liked this post, check out my post about corpspeak.