On “What is code?”
I finally took the time this afternoon to sit down with a few drinks on a comfortable sofa and read Paul Ford’s widely shared essay entitled What is Code?. I suggest that if you have yet to read it, you take a similar approach to this. Don’t spread it out over multiple bus rides whilst commuting or convert it into awkwardly spoken text, sit down in a quiet, comfortable spot and bathe in it’s glory.
Before you start, I’d also recommend sending it to Pocket or Instapaper. Bloomberg have gone for a bespoke all-singing all-dancing page, but their auto-playing video, distracting background and tight line height doesn’t make it particularly enjoyable to read. You’ll miss out on a few interactive bits but not the core of the piece.
If, for whatever reason, you don’t want to read the whole thing, my favourite section was “3.3 The Importance of C” which comes in at just over 800 words.
But seriously, read it.
In chronological order, here are some of my highlights:
I love computers, but they never made any sense to me. And yet, after two decades of jamming information into my code-resistant brain, I’ve amassed enough knowledge that the computer has revealed itself. Its magic has been stripped away. I can talk to someone who used to work at Amazon.com or Microsoft about his or her work without feeling a burning shame. I’d happily talk to people from Google and Apple, too, but they so rarely reenter the general population.
There are 11 million professional software developers on earth, according to the research firm IDC. (An additional 7 million are hobbyists.) That’s roughly the population of the greater Los Angeles metro area. Imagine all of L.A. programming. East Hollywood would be for Mac programmers, West L.A. for mobile, Beverly Hills for finance programmers, and all of Orange County for Windows.
You, using a pen and paper, can do anything a computer can; you just can’t do those things billions of times per second. And those billions of tiny operations add up. They can cause a phone to boop, elevate an elevator, or redirect a missile. That raw speed makes it possible to pull off not one but multiple sleights of hand, card tricks on top of card tricks. Take a bunch of pulses of light reflected from an optical disc, apply some math to unsqueeze them, and copy the resulting pile of expanded impulses into some memory cells—then read from those cells to paint light on the screen. Millions of pulses, 60 times a second. That’s how you make the rubes believe they’re watching a movie.
Thinking this way will teach you two things about computers: One, there’s no magic, no matter how much it looks like there is. There’s just work to make things look like magic. And two, it’s crazy in there.
Here’s the other thing about technology conferences: There has been much sexual harassment and much sexist content in conferences. Which is stupid, because computers are dumb rocks lacking genitalia, but there you have it.
It was in K&R that “Hello, world!” became the canonical example program for any language.
Poor, sad, misbegotten, incredibly effective, massively successful PHP. Reading PHP code is like reading poetry, the poetry you wrote freshman year of college.
Programming is debugging. It’s the expectation that things won’t work. This is not something people bring up, just like they don’t bring up their medical history on the first date.
Most of your programming life will be spent trying to figure out what broke, and if the computer helps you, maybe you can watch your kids play soccer.
Bugs aren’t the original sin of programming. They’re just part of life, like unwanted body hair or political campaigns.
Tell me that you program in Java, and I believe you to be either serious or boring. In Ruby, and you are interested in building things quickly. In Clojure, and I think you are smart but wonder if you ship. In Python, and I trust you implicitly. In PHP, and we sigh together. In C++ or C, and I nod humbly. In C#, and I smile and assume we have nothing in common. In Fortran, and I ask to see your security clearance. These languages contain entire civilizations.
Disruption is just optimization by another name.