Scott Rosenberg‘s Dreaming in Code is the best journalistic portrayal of software development that I’ve ever read.
The romantic cliché of the lone introverted genius shaping masterpieces through many midnights of unfathomable incantations is mercifully absent. Rosenberg follows the Open Source Applications Foundation‘s Chandler project through several years of development, from initial impetus to its milestone 0.6 release. We see the process as it actually is: as a highly social undertaking in which people pass through the project, and the project passes through people’s lives. The developers have families, pets, outside interests; they also have passions (often conflicting) about technology and the process of creation.
Dreaming in Code is much more than a simple chronicle: Rosenberg delves deeply into the history of software development and the frustration it causes for its participants and customers as the results never seem to improve even as the underlying hardware undergoes the most rapid progress of any technology ever.
Issues of data representation, storage, and synchronization are front and center in Dreaming in Code, all carefully explained by the author in terms that make sense to the non-practitioner while remaining recognizable to us professionals (he’s really, really good at this).
I might give this book to my mom to read.
[Disclosure: I've known Andi Vajda, one of the developers portrayed in the book, for about twenty years, and count him as a friend.]