Ullman, who worked as a software engineer in Silicon Valley in the 80s and 90s and wrote a well-received memoir, Close to the Machine, about her experiences (as well as being lauded just this last year for her second novel, By Blood), sets her scene in the early 80s, at a start-up company that is just beginning to test the new and unfamiliar waters of personal computing. Telligentsia's project is something that we take so much for granted we may never have considered it as its own piece of software--a networked database with a windowed user interface. That interface is the purview--and bane--of The Bug's two main characters, software tester Roberta Walton and programmer Ethan Levin. When one of Roberta's routine tests uncovers a hard-to-reproduce, hard-to-describe bug that freezes the system, Ethan's initial reaction is to dismiss it. But as the bug keeps cropping up at the most inopportune moments (customer presentations, a meeting with the venture capitalists funding the company), he is compelled to investigate it, and finds a problem with no rational source, whose seemingly random appearances create the impression of a malevolent intelligence, rather than a simple software error.
I think that that description on its own should be a point in Ullman's, and The Bug's, favor, because reading it back to myself it's hard to imagine how anyone might be interested in an entire novel on so trivial a subject. And yet, for all the reservations that I will go on to discuss, I found The Bug not only engrossing and hard to put down, but genuinely poetic, and containing a persuasive argument for the grandeur and meaningfulness of its characters' work in general, and their struggles against the bug in particular. A lot of that is down to the fact that Ullman is an excellent writer, adept at rendering the technological into literary terms. When Roberta, a former linguist who transitioned to quality assurance when her academic career dried up, learns that the name of the function the allocates memory is "malloc," she muses that "by the implicit structures of the English language, everyone pronounces it "MAL-loc." Mal, loc. Mal: bad. Loc: location. Bad location! But of course they'd have trouble keeping track of memory when they'd named their tool so stupidly!" Ethan, meanwhile, waxes poetic about the dangers of just that function:
She didn't understand: the compiler didn't watch over you. Once you spoke to it in syntactically correct C code, it was willing to let you kill yourself, if that's what you wanted to do. You could suck up memory like a glutton, and the first you'd know about it would be a crash. Malloc, free. Malloc, free. It was up to you to keep them paired, release memory when you were done with it. Maybe you really wanted to fuck things up, as far as the compiler knew. So many things in the C programming language were dangerous, but legal.Even more than Ullman's poetry, however, what brings The Bug to life are its characters, her delicate examination of the kinds of people who are drawn to programming and the computer industry, and the effect that working there has on them. Roberta starts the novel quietly disdainful of programmers like Ethan, imagining them as narrow thinkers capable of only the most mundane tasks, but when she learns how to program herself she's quickly seduced by the programming language's simple building blocks and the seemingly endless programs that can be constructed from them. "[C]oding was too compelling," she muses. "It was all about creating a separate, artificial reality inside the machine." Ethan, meanwhile, is deep into that obsession--he's introduced to us playing a game of "one more compile" while his girlfriend waits for him to give her a ride to the airport--and the bug exposes his other limitations, the other ways in which life at software companies has stunted and limited him: the compulsion to always be right, the inability to admit fault, the temptation to rush headlong into the next problem, the next task, instead of testing your work and making sure that it will stand the test of time, and the tendency to to become so consumed with the puzzle of solving a neat coding problem or getting to the bottom of a simple but satisfying bug, that all other, more challenging, less straightforward tasks become easy to ignore and put off. Like many programmers, Ethan's stores of knowledge float on a vast ocean of ignorance about whatever happens outside of his area of the code (and particularly what happens below it, in the lower-level routines that interact with the computer's operating system and hardware), and he is self-conscious to the point of neurosis about being exposed in that ignorance. When Roberta is finally able to produce the bug's "core"--a printout of the machine state at the moment the bug occurred--Ethan, far from being overjoyed, is terrified, because he's never learned to read most of this information. This isn't unusual--I've been programming professionally for six years and I've never used register values or program counters to solve a bug, and probably wouldn't know how if I needed to--but his response to being put in this position is at the same time pathetic and terrifyingly familiar: "He knew this would happen someday: twelve years of faking it, and one day, an illiterate pretending to read, he'd get caught."
That this is an accurate portrait is something that I can confirm first-hand (which is to say, both from my interactions with other programmers, and from my own experiences), but on the other hand, it also points to my core problem with The Bug. The truth is, if I wanted to know what it's like to bang your head against an impossible phantom of a bug, if I wanted to experience the contemptuous back-and-forth between programmers and testers who are each convinced that the other is an idiot who doesn't know how to do their job, or the mingled rage and triumph of discovering that someone--someone who is not you--has checked in bad code, if I wanted to be put on schedules so impossible that the only reasonable response to them is rueful laughter--if I wanted to experience any of these things, I would just go to work. For most of The Bug, Ullman's anthropological impulse is satisfied with describing and cataloging a world that I know very well, and explaining it to those who don't know it--she spends paragraphs spelling out what a compiler or a debugger do, and when Roberta learns how to program Ullman takes the readers through a crash course on the basics of programming languages. It's to Ullman's credit that these segments of the novel are both readable and, from my admittedly biased perspective (I spent a whole semester learning the programming language that she sums up in a chapter, after all), comprehensive and easily comprehended, and towards the end of the novel, her devotion to the technical aspects of her story--as she begins to unravel the bug, she includes not only segments of code, but diagrams and graphs--is impressive, especially in a literary novel not obviously geared towards tech-heads. And I certainly can't deny that there are moments of recognition in The Bug that I haven't experienced in other novels--when Ethan was told to prioritize the bug because it's appeared to the venture capitalists and the company president "is acting like he never saw a bug before," I nodded in commiseration. But I went into The Bug hoping for something a little more complex than a portrait, hoping for some contemplation of what this new field and the habits of thought it encourages mean.
There is some of this in The Bug, especially towards its end when Ullman has gotten the basic concepts out of the way and feels more free to embroider around them. It's at that point that she starts building more complex metaphors out of the difference between the way computers experience the world--as a sequence of discrete steps, mindless and memory-less, each altering their state in some minute way--and the way humans do. Ethan has for years been tinkering with a program that simulates a natural environment, whose denizens behave according to simple rules that govern their feeding, mating, and movement, in the belief that it and programs like it can teach us about the foundational rules that govern human behavior. But even as he lights upon a change to the rules that creates more natural-seeming, sustainable behavior, Roberta's investigations into the bug reveal the gulf between the way computers and programs behave and the way humans think that they do--the ultimate cause of the bug's flakiness, for example, turns out to be the fact that what a human sees as the continuous movement of a mouse pointer is actually a series of discrete points, rapidly sampled. What I found more compelling, however, and what I wish Ullman had paid more attention to, were her discussions of the disconnect between a programmer's work and how it's experienced once it's set free in the world. In the novel's framing story, Roberta--returning from vacation on the day that the dot com bubble finally bursts and her portfolio, heavy with stock options accumulated during a decade and a half as a consultant, melts away--realizes that the immigration officer who greets her is using Telligentsia's database software, and that the delay in processing her passport is due to a bug she reported and that the programmers never dealt with, leading her to muse about the years that have been lost to that 30-second delay, simply due to a failure to imagine them. Later in the novel, Ethan, flying to a training course, sits next to a tester for the airline industry, and complains to him about the bug. Expecting sympathy and reassurance, Ethan instead gets a kick in the pants:
"Failure? You feel like a failure?" said Wheatley. "Look, kid. It's not about you. Who the hell really cares about you? The failure is in the system, and the fear should be not for your ego but for the people who'll use the system. Think about them. Be afraid for them. Forget about yourself for a while and then you'll find it, then you'll fix your bug. Not because you're ashamed, but because people might be in danger and you have to."This is good advice for any programmer, any engineer who is too far separated from the real-world applications of their work to treat its failures as anything more than an intellectual puzzle or an annoyance. But it's advice that Ethan doesn't heed, and far too much of The Bug, to my mind, is spent explaining why, and showing how his failure to look past his own ego and insecurity eventually leads to his downfall. Not that this character arc is badly drawn--the scenes in which Ethan twists himself into knots of insecurity and desperate desire for approval, neglecting his girlfriend in order to keep to his schedule (he's the only programmer in his group who isn't desperately behind and he clings to this achievement like a life vest), alienating his colleagues with a standoffishness born of his crippling sense of inadequacy, and stewing in the "humiliation" of not being able to fix the bug, have a certain queasy horror to them. But as the novel draws on and Ethan's instability grows, he comes to seem less like an exaggerated portrait of a programmer's mingled ego and insecurity, and more like a parody of them, a person who literally can't function away from a keyboard. If Ethan were alone in his dysfunction, we might assume that he was uniquely mentally unbalanced, but Ullman peoples all of Telligentsia with these unpleasant, ego-driven, childish people, who can't have a professional conversation without lapsing into semi-coherent cries of "it's your problem! Your code! Yours!"
There are a lot of things about the culture in my industry that I dislike, and a lot of them are rooted in the one-upmanship and ego-stroking that Ullman captures in The Bug. But I have never experienced the kind of consistent lack of professionalism and passive-aggressive maliciousness she describes (one possible reason for this difference is that I don't work at a start-up company, and neither I nor any of my colleagues have stock options that might make us instant millionaires if the product ships on time--but then, none of the programmers in The Bug seems motivated by money either). We've all heard enough stories about the workaholism that goes on in software companies for the portrait that Ullman draws to make some kind of sense, but the more she stresses the nastiness and resentment that exist between Ethan and his colleagues, the total lack of support, or anything resembling congeniality, the he experiences, the way he is allowed to go crazy right in front of his colleagues and no one notices or cares so long as he's trying to track down the bug, the more it felt to me is if rather than capturing my industry, Ullman was grossly exaggerating some of the more extreme stereotypes about it. Telligentsia, as Ullman describes it, is the kind of company that will literally let you kill yourself if that's what you want to do, where an employee can go missing for more than two weeks before someone even thinks to call their house, much less the police. Maybe that's true to Ullman's experiences, though I hope not. It's not true to mine, however, and in a novel that otherwise recalls them so perfectly, this sudden deviation is jarring.
But then, there's another reason why I find it hard to read The Bug as the tragedy Ullman clearly intended it as, and that is the simple fact that the bug, that famous, malicious, random, incomprehensible bug that the characters anthropomorphize and fear and let themselves be driven to desperation by, is, well, easy. It's obvious. I literally predicted what was causing it and where it came from less than a third of the way into the book. What's more, Ethan's approach to tracking it down is nonsensical. When he finally gets the bug's core dump, Ethan--who otherwise is shown to be a conscientious, thoughtful programmer, careful about writing maintainable, well-documented code at a point in the industry's history when this was by no means the standard practice--obsesses over his inability to make sense of the computer's nitty-gritty, but dismisses the straightforward information that tells him what function the program was running when it failed, because there's no reason for the program to be in that function at that point. Surely any programmer worth their salt would realize that this is, in itself, a huge indication of what's gone wrong? Just by saying this, of course, I'm validating Ullman's point. I'm behaving exactly like one of her programmer characters, obsessed with being the one to get it right (and with crowing about that fact) and utterly lacking in patience towards anyone to whom the solution isn't as obvious as it was to me. But on the other hand, Ullman wants us to believe in a story in which a bug destroys its programmer's life. Maybe readers who aren't steeped in the computers field will be able to accept that (honestly, I'm starting to wonder whether even this review will be comprehensible to someone who doesn't have that background), but for me, Ethan's failure to take the obvious steps out of his predicament short-circuited his alleged tragedy.
On the day that I wrote this review, I went into work. I had a bug, something I thought I'd solved several times, but which kept cropping up. "It's a black hole from which there is no escape." I announced. "It's a minefield," said my officemate, who was working on the same area of the code, and then we debated whose metaphor was better. I spent most of the day repeating the same tests, staring uncomprehendingly at their results. Some time in the afternoon, though, everything started to make sense, and I felt like an idiot for not seeing days ago what was so obvious now. I wrote a fix, which turned out to have a mistake in it, which I fixed, only to find another mistake, which I fixed, and then everything worked, and I left work feeling pretty pleased with myself. I've had much worse days, days when I've felt frustrated and ill-tempered and behaved in ways that I'm not at all proud of, and The Bug captures a lot of that, as well as the high of wrestling a problem to the ground, and making a program do what you wanted it to do rather than what you've told it to do. But it's also riddled with a foreignness that I can't accept or get a handle on, an insistence that at the root of my profession there is not simply dysfunction, but disease. Especially in a novel that cuts so close to how I experience my life, that alien perspective is too much for me to accept.