Ellen Ullman's first book on the life of the software developer was the biographical Close to the Machine (1997). Her second book, The Bug, is a fictional work on the same theme.
Set in the early eighties, it is the story of Ethan Levin, a senior engineer at a Californian start-up software company called Telligentsia. Levin is a talented developer with a fascination for artificial life and a somewhat obsessive approach to his work. Early in the story we are introduced to UI-1017, a bug that is Levin's responsibility to fix. UI-1017 is that most elusive of bugs, the type which is transitory and intermittent - only manifesting during critical demonstrations at trade shows and to venture capitalists. The novel traces Levin's escalating preoccupation with the bug, and the effect his compulsive work habits have on his mental state and personal life.
Interleaved with Levin's story in alternating chapters is a narration from the perspective of Roberta Walton, a disenfranchised academic who winds up in a testing role at Telligentsia. It is she who first discovers UI-1017, gives it an identifying label, and delivers it to Levin to be fixed. She enables us to see the absurdity and isolation of the typical developer mentality from an external perspective, as she plays witness to Levin's declining composure and progressive retreat into solitary combat with his debugger.
Ullman manages to capture the eccentricities of the programmer personality, along with the pressure-filled, frenetic atmosphere of the software development environment. Thankfully, because she is a programmer herself, the book is technically accurate and veracious - to the extent of containing code fragments and in depth descriptions of the technical arcana of the programmer's work day. Therefore the book is free of the simplifications and inaccuracies that frequently accompany the portrayal of technology in popular media, and which make technologists cringe.
The Bug is an entertaining and entirely believable depiction of the high intensity and all consuming atmosphere that characterizes many software development environments, and the deleterious effects that our profession can have on its practitioners.