We build our computers the way we build our cities – over time, without a plan, on top of ruins.
Debugging: what an odd word. As if “bugging” were the job of putting in bugs, and debugging the task of removing them. But no. The job of putting in bugs is called programming. A programmer writes some code and inevitably makes the mistakes that result in the malfunctions called bugs. Then, for some period of time, normally longer than the time it takes to design and write the code in the first place, the programmer tries to remove the mistakes.
Code and forget, code and forget: programming as a collective exercise in incremental forgetting.
The disorder of the desk, the floor; the yellow Post-it notes everywhere; the whiteboards covered with scrawl: all this is the outward manifestation of the messiness of human thought. The messiness cannot go into the program; it piles up around the programmer.
I’m an engineer for the same reason anyone is an engineer: a certain love for the intricate lives of things, a belief in a functional definition of reality. I do believe that the operational definition of a thing – how it works – is its most eloquent self-expression.
People who have no choice are generally unhappy. But people with too many choices are almost as unhappy as those who have no choice at all.
In this privatized world, what sort of “cultural” conversation can there be? What can one of us possibly say to another about our experience except “Today I visited the museum of me, and I liked it.
I’ve been told that women have trouble as engineers because we’d rather relate to people than to machines.
Meanwhile, the original programmers will have left, and their replacements – believing they understand the code – will make some truly spectacular errors, mistakes that will suddenly make everything completely stop working for a while. So that what had seemed to be a descending curve of bugs, a fall toward the ever-receding zero, will reveal itself as the shape of another equation altogether: a line of relentlessly rising, bug-counts climbing in an endless battle against infinity.
This is what makes them good engineers. Perfectionism: incinerating perfectionism.
To program is to translate between the chaos of human life and the line-by-line world of computer language.
I used to have dreams in which I was overhearing conversations I had to program. Once, I had to program two people making love. In my dream they sweated and tumbled while I sat with a cramped hand writing code. The couple went from gentle caresses to ever-widening passions, and I despaired as I tried desperately to find a way to express the act of love in the C computer language.
I once had a job where I didn’t talk to anyone for two years. Here was the arrangement: I was the first engineer hired by a start-up software company. In exchange for large quantities of stock that might be worth something someday, I was supposed to give up my life.
Programmers seem to be changing the world. It would be a relief, for them and for all of us, if they knew something about it.
There is always one more bug to fix.