I get it. I’m ancient. But when I realized that so few self-taught developers and young developer companies knew of the following list of definitive works, I wanted to get this started. Some of the ideas in the following works will seem quaint and obvious, but at the time of publication these were groundbreaking.
Writer James Baldwin once said, “You’ve got to know where you came from, to know where you’re going.” This list is meant to offer a sense of history for some of the thinking we’ve come to generally accept and aims to inspire you to question the principles you use to build on a daily basis.
The Cathedral and the Bazaar: Written by Eric S. Raymond, The Cathedral and the Bazaar is an essay on software engineering methods based on his observations of the Linux kernel’s development. “The Cathedral” method is seen as the traditional commercial model of shipping code where programmers work in secrecy prior to pushing monolithic releases. Meanwhile, Raymond advocates for “The Bazaar” model where code is developed in public in the belief that “given enough eyeballs, all bugs are shallow”. This work helped inspire the open source release of Netscape, the creation of Mozilla, and Wikipedia founder Jimmy Wales says it “opened his eyes to the possibility of mass collaboration”.
The Cluetrain Manifesto: The Cluetrain Manifesto is a list of 95 theses written as for those building web services to understand the value of people-centric design and communication. Written by Rick Levine, Christopher Locke, Doc Searls and David Weinberger, the authors assert that the internet is less an advertising vehicle and more a human-to-human conversation. This critique of Cluetrain in which the writer calls it a “Cult” and suggests it “sounds like something someone would find written on a napkin after a two-week LSD bender” is as much a reason to read Cluetrain as any”.
The Agile Manifesto: Written by 17 software developers, The Agile Manifesto is perhaps one of the earliest works on incremental project management, pair progamming and rapid delivery of software. The Agile principles stress the inevitability of change, a call for vigilance when it comes to maintaining software, and the importance of self-organizing teams. Although sometimes applied fanatically today, this is one of the first works on lightweight development methods and can be used as an objective guideline for simple problem solving.
The Pragmatic Programmer: From Journeyman to Master : Written by Andrew Hunt and David Thomas and published in 1999, this book teaches developers to care about their craft, be a catalyst for change, and always use the power of source code control. It’s commonly recommended reading for university-level Computer Science courses and reminds us to turn off autopilot, and opt for an approach that’s measured and thoughtful. One of my favorite principles in the book is to stop ignoring “Broken Windows”. The idea here is that bad design, wrong decisions and poor code should be corrected immediately to avoid welcoming other bad behaviors in software design.
The Mythical Man-Month: Essays on Software Engineering: Written by Fred Brooks on everything that went wrong with his experience managing the development of IBM’s 360 Batch Operating System, The Mythical Man-Month is a look at how techniques of estimating engineering projects tend to be poorly developed and how “adding manpower to a late software project makes it later.” Says Brooks, “Nine women can’t make a baby in one month.” Brooks points to two main reasons additional manpower hinders shipping time. The first is that few managers account for the time it takes for a new employee to ramp up. And secondly, the communication overhead of syncing up multiple employees is cumbersome.
Additional Suggestions from the Community: The Folklore Behind Macintosh, Peopleware, Joel on Software’s Collection of Essays, You and Your Research, Here Comes Everybody
Thanks to PVH, Ragi Burhum and Oren Teich for weighing in with contributions.
Check out Part 2 of this series.