Coders - by Clive Thompson
A book depicting what it’s like to be a coder, and how they (and their programs) affect the society. I think it’s a good read even for coders themselves, especially the second half, to understand how good intentions can lead to societal problems. I find the first half interesting too – after years of corporate life, it reminded me coding can (and should) be fun. Can’t believe how many of my perspectives toward coding have been skewed by my job.
Highlights #
Coding #
- If you spend enough time around complex old systems, “you realize that the fastest, shortest way to a deep, solid, elegant integration is just by putting another layer of dirt on top.”
- In the world of coding, this sort of fix is what’s known as an “encasement strategy”—fixing a hairy, complex system by boxing it in.
- Coding vs. writing
- In contrast, I have no such simple affirmations of the efficacy of my journalism. You cannot really ask whether any particular Wired column I write is “working”; writing does not possess similarly binary pass-fail parameters.
- Most coding is about breaking a big, hard task down into small pieces.
- The upshot is that this can produce a remarkably soothing sense of progress.
- Research by the Harvard professor Teresa M. Amabile and researcher Steven J. Kramer has found that employees are happiest at jobs where they experience “the power of small wins”—regular, daily, visible progress.
- Coding gave me precisely that sense of linear, regular achievement. Writing rarely did. Producing a book always feels more like piloting a boat across a foggy lake. I know I’ll eventually arrive at my destination, but the voyage will be filled with nail-biting doubt about my bearings.
- “Refactoring” is, in a way, like editing.
- “You don’t have ‘coder’s block’ the way you have ‘writer’s block,’” she told me. “Of course some writers really love writing. But you hear so much about the agony of writing, the procrastination. Whereas I find with programmers, you don’t find the same agony. If anything, it’s, like, ‘Yeah, I want to get back to coding!’”
Coders #
- What type of personality, what type of psychology, makes someone good at programming?
- Some traits are the obvious ones. Coders tend to be good at thinking logically, systematically… (Philosophy students, it seems, make excellent coders: I met philosophy majors employed at Kickstarter, start-ups, and oodles of other firms.) Coders are curious, relentlessly so, about how things work.
- But if you had to pick the central plank of coder psychology, the one common thread in nearly everyone who gravitates to this weird craft? It’s a boundless, nigh masochistic ability to endure brutal, grinding frustration.
- What are they actually doing, most of the time? Finding bugs.
- Coding is, in a profound way, less about making things than about fixing them. The pioneering computer scientist Seymour Papert had a koan: No program works right the first time.
- Why can coders be so snippy? Atwood asks, rhetorically. He thinks it’s because working with computers all day long is like being forced to share an office with a toxic, abusive colleague. “If you go to work and everyone around you is an asshole, you’re going to become like that,”
- “The programmer personality is someone who has the ability to derive a tremendous sense of joy from an incredibly small moment of success.”
- The phrase “user-friendly” is itself hilariously revealing: It implies that most software is “user-hostile,” until someone can wrest the design from the coders’ hands and get it in the mitts of someone who actually understands how real humans function.
- 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.
- This love of objective, tangible results underpins most forms of engineering.
Obsessed with automation
- The upshot is that most coders arrive at the same logic, which we could summarize thusly: (a) Doing things repeatedly or at the same time every day is boring, and I’m terrible at it. By contrast, (b) slavishly and meticulously doing the same task again and again is easy for the deathless machine sitting on my desk. Thus, (c) I am going to automate every single thing I possibly can.
- As it turns out, this experience of mine is a common syndrome among programmers. The more I asked around, the more stories I heard of people spending more time writing a program to automate an action than it would take to simply do the damn thing itself.
Obsessed with efficiency
Programmers are obsessed with efficiency. It is the one thing I’ve encountered in essentially every coder I’ve met. Coders might be wildly diverse in other ways—politically, socially, culturally, what have you. 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.
In part, this lust for efficiency isn’t unique to software developers. Engineers and inventors of all stripes have long been obsessed with it. Ho’s chart seemed amiably nuts, but it reminded me of the original American hacker and engineer, Benjamin Franklin.
- Franklin wasn’t just interested in optimizing the physical world, though. He also thought his moral and ethical qualities should be tracked and tweaked for maximum improvement, too. So he wrote down thirteen “virtues,” including “Industry. Lose no time; be always employ’d in something useful; cut off all unnecessary actions,” and “Frugality. Make no expense but to do good to others or yourself; i.e., waste nothing.” Then he printed them on a chart, with the virtues in rows and the days of the week in columns, so he could track daily how often he practiced good behavior, with a satisfying Puritan tick of the pencil.
In a very data-scientist fashion, she rebels at the idea that a single archetype can hold true across an ever-larger cohort of coders worldwide. The population has grown so huge that you can’t generalize across the entire field anymore when it comes to personality.
The elder coders all used Vim; “real coders use Vim,” they more or less told her. So she forced herself. At first it was ungainly and awkward; she kept on wanting to use her usual mouse-or-arrow-key movements to navigate. But after three weeks of painstakingly reprogramming her habits, it clicked—and suddenly she felt a cyborgic level of oneness with the machine, a sort of “I know kung fu” moment reminiscent of The Matrix. “You’re one with the keyboard,” she marvels. “There’s no moment when I have to break away from my train of thought.”
Paul Graham refers to it as the collision between the “maker’s schedule” and the “manager’s schedule.” The work of managers, he points out, is composed almost entirely of meetings. Managers’ jobs are to make sure things are going well, so they block out their day in one-hour increments, meeting with a different employee every hour. So they think nothing of asking a coder to come in at 1:00 p.m. and have a check-in meeting. But for the coders, that meeting destroys any chance of getting into a long flow state. “I find one meeting can sometimes affect a whole day,” Graham wrote. “A meeting commonly blows at least half a day by breaking up a morning or afternoon. But in addition there’s sometimes a cascading effect. If I know the afternoon is going to be broken up, I’m slightly less likely to start something ambitious in the morning. I know this may sound oversensitive, but if you’re a maker, think of your own case.
Societal impact #
- Once advertising and growth become the two pillars of a big-tech firm, then it’s nearly inevitable that they’ll seduce their users into endless, compulsive use—or “engagement,” as it’s euphemistically called.
- While still at Google, Williams began to do doctoral research into our attention and how modern tech was affecting it. “Nobody goes into tech thinking, I want to spy on people and make the world a worse place,” he said. “They’re well intentioned.” But the business models have a propulsive force of their own. Eventually, after ten years at Google, Williams left; he wound up at the University of Oxford, where he wrote Stand Out of Our Light, a penetrating meditation on the civic and existential dangers of big tech. “I’ve gone from one of the newest institutions on the planet to one of the oldest,” he says wryly.
- As scholars have found, social algorithms around the internet all seem to reward material that triggers strong emotions.
- My friend Zeynep Tufekci, an associate professor at the University of North Carolina who has long studied tech’s effect on society, argued in early 2018 that YouTube’s recommendations tend to overdistill the preferences of users—pushing them toward the extreme edges of virtually any subject. After watching jogging videos, she found the recommendation algorithm suggested increasingly intense workouts, such as ultramarathons. Vegetarian videos led to ones on hard-core veganism. And in politics, the extremification was unsettling. When Tufekci watched Donald Trump campaign videos, YouTube began to suggest “white supremacist rants” and Holocaust-denial videos; viewing Bernie Sanders and Hillary Clinton speeches led to left-wing conspiracy theories and 9/11 “truthers.”
- Engineers who build huge systems, like economists with their models, see the world in the aggregate, not in the particular. “One of the dangers of the tech community is that their fixation on data models means that they don’t see the humanity based in them,” says boyd, who today runs the Data & Society think tank.
- The first generation of social networks were built and funded by techies who regarded “connecting people” as the only goal, as danah boyd points out. They naively hoped that all the hard stuff—getting humans to actually understand each other, to bridge their big political differences—would happen automatically. It didn’t. It can’t.
- Indeed, one problem with assuming coding is crucial to navigating the world’s future problems is that this drifts dangerously toward Silicon Valley–style solutionism—assuming that, hey, every problem in the world should be solved with some software! “It puts the method before the problem,” Atwood noted. “Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?” The whole reason the humanities are still a crucial field of study is that they help us understand the grayscale, maddening complexities of human behavior. They help us define our vision for society and the human spirit, which is the crucial first step before grappling with which tools—coding? plumbing? urban planning?—can help us achieve it.
Anti venture capital
- Glitch’s Anil Dash thinks coders with start-up ideas should consider avoiding venture capital—or take as little of it as they can. That’s because investors will insist on hockey-stick growth, and that pushes the firm down the slippery slope to terrible design.
- David Heinemeier Hansson. He’s a coder who watched ad-based businesses fall apart in the dot-com crash of the ’90s and thus decided to write only software that people would be willing to pay money for. So he started making an organizational tool called Basecamp,
- “There’s a magical relationship you have with people who are paying you money,” he tells me.
- On the other side —
- if they’d charged for their services, they’d have pushed away millions of lower-income people—and billions in the developing world. Many of those people have enjoyed enormous personal and economic benefits from social media, but they’d never have had the chance if required to pay even one dollar a month.
More than just coding
And if they’ve studied very little of the humanities—history, sociology, literature—they often have what Northrop Frye might have called an “uneducated imagination”: They have little ability to envision what motivates the users of their software.
“People with liberal arts degrees, they’re critical thinkers,”
Amazon’s success is predicated on rendering life into a carousel of instant gratification, as the computer engineer and director Ruhi Sarikaya notes: “Friction is any variable that impedes your progress toward a goal, whether it’s purchasing a product or navigating traffic to make your nine a.m. meeting on time. Amazon is obsessively focused on reducing or eliminating friction—think one-click ordering, Amazon Prime, or Amazon Go.”
“It’s our generation’s crack cocaine,” as the tech entrepreneur Rameet Chawla wrote. “People are addicted. We experience withdrawals. We are so driven by this drug, getting just one hit elicits truly peculiar reactions.” Psychologists probably could have predicted this behavior: Back in the ’70s, the social psychologist Donald Campbell pointed out that if you use a single measurement to reward people, they’ll do everything they can to goose that number higher. (It’s now known as “Campbell’s Law.”)