Highlights from Coders by Clive Thompson
21 Apr 2020
writing code that changes people’s everyday lives
Code is speech; speech a human utters to silicon, which makes the machine come to life and do our will. This makes code oddly literary.
It’s been a story of people who discovered they liked the combination of logic and art that lets you talk to machines.
If you really want to understand at a high level the way that those who code think, it’s useful to construct, from the ground up, what they actually do all day long. The type of people who get intrigued by the field are the ones who enjoy building, tinkering, playing with logic. But the ones who stay and thrive are the ones who can survive something much more mundane and grinding: The bugs.
“Feature creep,” Krieger was discovering, is a particular challenge of the coder personality. It’s much more fun to create new things, to get an idea at 10:00 p.m. for something to add to your app—a mapping animation! emailable alerts!—and to excitedly bang it until 4:00 a.m., pushing new code into the world. It’s not so much fun to refine and improve things that exist. Programmers are constantly tempted to turn their tools into Swiss Army knives. Burbn languished, with a small user base.
I craved those moments of absolute clarity and success, the moment when the program came to life, doing precisely what I asked it to. Gabriella Coleman is an anthropologist friend of mine who
The distance between looking like a genius and looking like an idiot in programming? It’s one character wide.”
One estimate suggests that coders spend 10 times the amount of time parsing lines of software than they do writing them. This is another reason coders can be so snippish and judgy about the style of their colleague’s code. They know they may eventually need to read it.
The programmer personality is someone who has the ability to derive a tremendous sense of joy from an incredibly small moment of success.”
Indeed, for many programmers, a profound allure of coding is that it’s a refuge from the unpredictability of humans, from their grayscale emotions and needs.
And she, like me, discovered the narcotic pleasures of solving everyday problems, watching a nonfunctioning bit of code suddenly spring to life: “There’s something about those many little wins, I think, that make coding extremely satisfying in a way that other things weren’t. If I’m solving a simple little problem like finding a glitch, a bug, I’m like—‘Oh, that was done! All right, that’s done, now it’s a little bit better.’ I can see it taking shape. It’s like sculpting.”
But it’s also an amazingly fragile state. The slightest interruption, and that carefully assembled understanding can vanish in a puff. Thus, the one thing that drives coders into a blind fury is someone pinging them when they’re in the zone. They’re trying desperately to maintain an ethereal crystal lattice in their minds, and now somebody is asking them, Hey, did you get that email I sent you?, and poof, it’s gone.
I tell people, you always take pride in your code. You should always be refactoring it, it should look like you’ve been working on it, when people see it,” he said. A single flabbily written function would convey something other than total commitment to the craft. “I’m a firm believer in the broken-windows theory. You find a bug, you hunt it down and kill it.” Indeed, when Cohen was working hard, he hated anything that took him out of the flow, even eating. While making himself a sandwich in his kitchen, back when I visited him for Wired, he complained that it was taking too long. “Sometimes I wish there were just some way to install energy in your body, like the Terminator putting a battery in his chest,” he said.
These engineers got into coding not just from the thrill of commanding a machine but because it let them make something compelling and useful, for others to see and use.
But mostly, what makes front-end coders a breed apart is they have to think deeply about their users
Back-end coders need to worry about reliability, about making bits move around speedily. Front-end coders have to do that too, while also guiding the eye and the hand.
But nearly every one found deep, almost soulful pleasure in taking something inefficient and ratcheting it up a notch
Removing the friction from a system is an aesthetic joy; their eyes blaze when they talk about making something run faster, or how they eliminated some bothersome human effort from a process.
Back in the ’70s when he was cocreating the UNIX operating system, the legendary coder Ken Thompson created “cron,” a scheduling command: You can tell the computer to run a program or accomplish a task at a particular time in the future, over and over again. Thompson reportedly called it cron in honor of the Greek word for “time.” Setting up a repeated task is known as a “cron job,” and
Humans are inherently pretty lazy; as Nicholas Carr notes in The Glass Cage, when someone offers us the ability to take a shortcut, we take it. We only discover later that we may have traded off an ingrained skill—or, in the case of calculus, never learned it in the first place. But it’s incredibly hard to resist because we’re constantly given new tools from programmers who’ve figured out how to remove friction from daily life.
We want the digital world around us to react as crisply; Google found that a mere 100-to-400-millisecond delay in returning search results produced a small but regular decrease in how many searches people type.)
proverbial 10,000 hours: You code and code and code and code, gradually getting better, until years on you’re at the top of your field. But there’s another point, which Newhouse noted: Most truly useful coding isn’t a lone-gunman activity. It’s a deeply social team sport.
But the actual measured magnitudes have astounded all of us.” The upshot, he argued, is that one could hypothetically construct the world’s best coding team by simply paring down to nothing but the most awesome performers. If a team had 200 coders and only 25 were true stars, “fire the 175 troops” and leave the 25 rock stars alone to get the work done.
Adding manpower to a late software project makes it later.
But coding is an insight-based form of labor, more akin to writing a poem. Merely adding more people doesn’t help, because the solution to any problem is liable to come not from the sweat of many brows but from the lightning-strike aha moment of a single insightful individual. The
“If you make a list of the great software built in the last fifty years, you’d find that in virtually every case, it’s one or two people. It’s almost never a team of three hundred. It’s at most a team of one or two.”
One of the things that makes coding weird, as an industry, is that people can teach themselves how to do it. There aren’t very many technical professions that work this way.
He showed up early and stayed late, and he discovered he loved the Zen-like state of coding. “I love the time I have in the morning: I have my code, I have my laptop, and I have my headphones. It’s like my peace time. I’m coding and nothing is bothering me.