Jim Nielsen’s Blog
Preferences
Theme: This feature requires JavaScript as well as the default site fidelity (see below).
Fidelity:

Controls the level of style and functionality of the site, a lower fidelity meaning less bandwidth, battery, and CPU usage. Learn more.

Book Notes: “Coders” by Clive Thompson

What follows are a number of excerpts I wanted to note down from my reading of Coders by Clive Thompson.


A couple of the excerpts from across the book that I found funny as they capture the exasperation of programming:

When you meet a coder, you’re meeting someone whose core daily experience is of unending failure and grinding frustration. (17)

The entire activity of programming is an exercise in continual failure. (72)

Part of the thrill [of programming is] the sheer unpredictably of when a piece of code will suddenly cooperate, suddenly begin functioning. When you’re chasing a bug, success could be a day from now. Or it could be fifteen seconds from now. Who knows? This sporadic nature of success is eerily similar to the psychology behind casinos. (73)

I think everybody that does [programming] for a career or does [it] long term has an unnatural, and almost unhealthy, satisfaction with problem solving. — Rob Spectre (73)


An interesting story behind the culture of “messiness” at Netscape in the early days:

If a coder pushed out an update that “broke the build”...the other Netscape engineers would hang a yellow lemon over his chair...It was both a mark of shame (you wrecked the browser because your code was sloppy) and something to which you aspired (you wrecked the browser because you were being daring and trying something new) [one employee noted]: “if you never had the lemon, that was bad. If you had the lemon all the time, that was bad. So it became this interesting part of the culture of appreciating the right amount of breakage. (47)


An opinion on the “occupational hazard” of being a programmer as it relates to your personality.

Why can coders be so snippy? [Jeff Atwood] thinks it’s because working 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,” Atwood says. “And the computer is the ultimate asshole. It will fit completely and spectacularly if you make the tiniest error. ‘I forgot a semicolon.’ Well guess what, your spaceship is a complete ball of fire because you forgot a fucking semicolon.” [a reference to the Mariner 1 spacecraft incident].

“The computer is a complete asshole. It doesn’t help you out at all.” Attwood explains. Sure, your compiler will spit out an error message when things go wrong, but such messages can be Delphic in their inscrutability. When wrestling with a bug, you are brutally on your own; the computer sits there cooly, paring its nails, waiting for you to express what you want with greater clarity. “The reason a programmer is pedantic,” Atwood says, “is because they work with the ultimate pedant. All this libertarianism, all this ‘meritocracy,’ it comes from the computer. I don’t think it’s actually healthy for people to have that mind-set. It’s an occupational hazard! It’s why you get the stereotype of the computer programmer who’s being as pedantic as a computer. Not everyone is like this. But on average it’s correct.” (68)


An insight into the after effects of coming out of coding. I’ve found this to be true myself and have to “wind down” from coding before, say, going back inside the house to family.

[A particular programer] has noticed there’s a mental transition-time that comes with coding. The work is so mentally all-absorbing and requires such exactitude that it’s hard to step away. The code still haunts the mind.

It’s like coming up from a long dive underwater: you have to do it slowly. “It’s an engineer-technologist version of the bends.”


Great quote from Konrad Zuge, inventor of the first digital computer:

The danger that computers will become like humans is not as great as the danger that humans will become like computers.


Possible substance behind the myth of a 10x programmer continues:

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. (153)


On Today’s “AI”

This is the central truth of much of today’s neural-net AI: It requires extracting information from real live humans, so the AI has something to learn from. (283)

Big data processes codify the past. They do not invent the future—Mathematician Cathy O’Neil (291)

Deep learning is good...at pattern recognition. But human thinking isn’t just pattern matching. (301)


Pitfalls of data-driven design:

[engineers] test each new tweak and tricky by using A/B tests: Make the alert red, make it yellow, and see which one users click on more often. Red wins, so it must be the right choice! This data-driven form of design can make each psychological trick seem objectively correct: If users click on it, it must be what they want. To the scale-driven engineering mind, the ethical questions of “What should we be making?” Are easily subsumed into the sheerly technical questions of “what will help the system grow more and have a bigger throughput?” (314)

When scale comes in, human judgement gets pushed out. (316)


Perspective on the term “users”:

When your customers are paying you money, you can actually call them customers and not users, which is a term from drug dealing.—David Heinemeier Hansson. (336)