Saturday, January 05, 2013

The Bug by Ellen Ullman

We live in a world that has been--is still being--profoundly transformed by technology, and yet you'd hardly know that to look at our fiction.  Sure, there's a whole genre devoted to inventing outlandish--albeit, sometimes, plausible and rigorously thought-out--technologies and using them, and their effects on individuals and society, as jumping-off points for stories.  But science fiction rarely turns its eye on the present and on existing technologies, and when it does--usually in the form of outsider SF--the result is rarely to imagine change and transformation, as authors plump for the familiar standards of apocalypse, collapse, and the end of human civilization, if not the human race.  Somewhere in the interstices between these two extremes, however, is a small cluster of novels that make technology their business--novels that look at the present through SFnal eyes, like William Gibson's Blue Ant trilogy, or Neal Stephenson's Cryptonomicon (and, far less successfully, Reamde), or novels that take an anthropological perspective on the technological industry and its effects on society, like Allegra Goodman's The Cookbook Collector.  As someone who works in the technology industry, who loves science fiction's affect and would like to see it extended past the genre's boundaries, and who is fascinated by fiction's ability to capture a world at a moment of flux, this is the kind of writing I'd like to see a great deal more of, so Ellen Ullman's 2003 novel The Bug--in which programmers and testers battle against a mysterious software error--seemed right up my alley.  But The Bug left me curiously unsatisfied, and for reasons that I hadn't anticipated.  It's a novel that is, at one and the same time, too familiar to me, and too foreign.

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.

6 comments:

Gareth Rees said...

That sounds like a really interesting book, and I've ordered a copy. I can totally believe in someone destroying themselves over a bug: either through hubris ("of course I'm clever enough to find this bug") or through guilt ("I can't let my coworkers down by failing to find this bug"). The "failure to take the obvious steps" would be the hero's tragic flaw (just as, say, Othello's "failure to take the obvious steps" to check out the correctness of Iago's calumnies leads to his tragic end).

Though I slightly doubt that someone working professionally in the early 80s would have been unfamiliar with low-level debugging: people did a lot more of it in those days because the high-level tools weren't so good and you had to get a lot closer to the metal to get things done.

Abigail Nussbaum said...

One of the points they make in the novel is that a lot of people in the company came to programming through very roundabout ways - it's not just Roberta whose background is in the humanities but the entire QA group, and Ethan had academic aspirations as well before moving to work in-house for banks and insurance companies (something that feeds his inferiority complex). So maybe Ullman's point is that this route to working in a start-up company didn't take him through low-level debugging. But then in general I found the novel's ideas of what constitutes debugging very strange - at one point Ethan steps through the entire area of the program where the problem appears, one instruction at a time, hoping to catch the bug, an utterly bizarre approach. That could also be a more modern approach to programming talking, but it only intensified my sense that the characters' approach to the bug was more nonsensical than tragic.

Gareth Rees said...

At one point Ethan steps through the entire area of the program where the problem appears, one instruction at a time, hoping to catch the bug

In some situations, this is exactly the right thing to do. (Whether it makes sense in the context of the novel is another matter.)

baeraad said...

I just read the novel based on this review. Very interesting. I work in programming too, and it was weirdly fun to see the job... romanticised, for lack of a better word.

I agree that the issues in the book are partly true for the industry, and also that they are vastly exaggerated. The story is probably better read as a caricature of human flaws than as something strictly realistic. It's not just the computer crowd who are shown to be deeply neurotic and self-involved, after all - everyone outside the industry, like Ethan's girlfriend, are just the same (in fact, just about the only thing that made me feel sympathetic for Ethan, aside from the sheer extent of how miserable he was, was how everyone including himself seemed to think he was purely the bad guy in their breakup. It looked an awful lot to me like it took two entitled, self-pitying asshole to fuck it up, not just one). The only characters who come off looking good are the ones like Wheatley, that aren't examined much but just sort of pass through while uttering some words of wisdom that the main characters won't pay attention to.

Abigail Nussbaum said...

I think Ullman does a pretty good job of arguing that Ethan was, ultimately, the bad guy in his relationship in the book's final chapters, when she reveals the inciting incident of its breakdown (she got pregnant, he passive-aggressively pressured her into getting an abortion she wasn't comfortable with, then acted high and mighty because she hadn't "consulted" him about it). It certainly doesn't make the girlfriend character look good that instead of leaving at this point (or any point afterwards) she waited around for another man - in this case, someone else's husband - to turn up, but even so it feels as if there was only one person trying to make that relationship work and it wasn't Ethan. Honestly, my main problem with how Ullman depicts this strand is that I have trouble believing Ethan could have gotten a girl like that in the first place.

All that said, I did find Ethan more sympathetic than you seemed to, though a lot of that is, as you say, because he's so miserable. I thought Ullman did a good job of laying out the combination of personal and professional forces that led him to develop such an unhealthy attitude towards every aspect of his life, and the utterly toxic work environment that allowed him to essentially go crazy without anyone around him noticing or caring (the latter, as we've both noted, is an exaggeration, but to me it does make Ethan more pitiable). He seems like a person trapped in assumptions - about how to be a programmer, a professional, a man - that are steering him completely wrong, and yet at the core of them is an unwillingness - an inability, even - to examine himself and his choices and consider that some or all of those assumption might be wrong.

baeraad said...

Actually, that was the incident that made me decide that I really didn't like either of the characters. Ethan is indeed his usual infuriating self - first absolutely refusing to engage with the situation while sending frantic signals that he wants it to just go away, and then afterward getting huffy that he wasn't "allowed" to be involved in it. And that's without mentioning that the reason why he was so reluctant was because of some stupid, half-baked macho "can't be stuck with a family - must go out and conquer the world first" notion (like you said, Ethan has some very iffy assumptions about what it means to be a man).

On the other hand, I am also not terribly sympathetic to the girlfriend character, maybe because I don't buy that she, who throughout the story comes across as being if anything excessively strong-willed and independent, could be "passive-aggressively pressured" into doing anything she didn't want to. So this is how it looked to me: she was stuck between two options she didn't like, Ethan failed to be of any use whatsoever, and she used that as an excuse to have the abortion so that she could pin the blame for it on him. In other words, I see her acting very much like Ethan - refusing to deal with her emotional hangups, blaming the people around her for not helping her with them, and using their failure to do so as a justification for doing whatever she likes. I also didn't see her try to work on the relationship - she looked to me like she was sullenly refusing to communicate with Ethan even as he was chickening out of trying to communicate with her.

I don't know if that was how Ullman meant for it to come across, of course. But it would go some distance towards answering your question. How did Ethan get a girl like that? Because they are very much alike - which is that is also the reason why they fell apart at the first bump in the road.

Post a Comment