I have tried here to collect a list of “core” books for various facets of our field. I certainly don’t think you need to read all of them to be a capable software professional; rather it is the list I would put together if asked about how to learn more about specific areas.
This page came about because after compiling similar lists two or three times over the years in various places and formats, I’m following good development practice and factoring it out for reuse and sharing.
The books in each section are roughly ordered by “level”, so the ones at the start of each sub-list should be useful and accessible to anyone (even students just getting started) but ones later on may only be interesting — or you may get the most value from them — at later stages of your career.
Please let me know your favourites too!
The Soul of a New Machine
The true history of a scrappy, time-pressed, skunkworks project to develop a new computer in the late 1970s. A different kind of project than most today, but a recognizable culture and work environment for today’s startups.
Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
A chronicle of a completely off-the-rails project with wildly optimistic estimates, endless scope creep, and no plan. A fascinating look at just how badly things can go wrong, and how teams fail to see it happening to them.
Coders at Work: Reflections on the Craft of Programming
This collection of interviews with luminaries of the field covers everything from oral histories of how they built important software milestones to their preferred working hours and why they like Perl.
Where Wizards Stay Up Late: The Origins of the Internet
The history of how computers got networked, how networks got interconnected, and the people who did it.
Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age
How the Xerox PARC team was formed and grown, how they reinvented computers into the form we know today, and how difficult it was to convince anyone that what they were doing was of any use.
The Rickover Effect
A somewhat hagiographic but still extremely interesting overview of how Hyman Rickover outmanoeuvred the bureaucracy, inertia, and cronyism of the military and political establishment to put together, grow, and defend a truly uniquely excellent team of technical specialists; as well as how his uncompromising standards and rigorous methods ensured success after success and continued safe operation of seaborne nuclear reactors.
Coming some day.
The Visual Display of Quantitative Information
This is a must-read for anyone who ever needs to put together a chart, data table, or report — or, in other words, everyone. It is a quick and easy read and the book itself is a beautiful physical object. It will instantly make you better able to express complex datasets and create compelling visualizations.
Sketching User Experiences
If your software has a user-facing interface, you’ll at some point need to experiment with how it might look and behave — or even study how users interact with it. This book will show you how.
I believe that for documents, presentations, interfaces, diagrams, and the whole panoply of visual forms that software developers are likely to interact with daily, typography dominates the design. You can make a beautiful webpage, a coherent and accessible user interface, or a stunning presentation, with just typography. So leave the graphics and pictures to the professionals, but learn your type.
The Design of Everyday Things
This is the best all-around introduction to thinking about how and why people will use what you’re building, and how you can make it easier for them. It’s not software-specific, but the concepts are generalizable.