Felix Crux

Technology & Miscellanea 

Recommended Reading List

…for software professionals.

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!

Culture and History of Our Field

It’s not always enough to just know the dry facts about how we work today. Knowing what’s been tried before, which parts worked well (and which didn’t), and understanding where things came from and why they are they way they are will help you develop an intuitive sense for what works and what doesn’t, and an appreciation for the foundations we’re building on.

  • The Soul of a New Machine

    Tracy Kidder

    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

    Scott Rosenberg

    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

    Peter Seibel

    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

    Katie Hafner

    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

    Michael A. Hiltzik

    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

    Theodore Rockwell

    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.

People & Project Management

Don’t think you need the word “manager” in your job title to benefit from learning these skills. If you want to make yourself useful to a team, teach others, help your projects succeed, or guide groups to making good decisions, these books will help. And if you are a new manager, going further down this list will give you a great start.

Coming eventually.

Practices and the Craft of Programming

These books have insights and techniques for the everyday duties of the job… and for when things go wrong.

Coming some day.

System Design and Architecture

The best way to learn what works and what doesn’t is to build a lot of systems. The second best is to read about ones others have built and their experiences.

Coming later.

Presenting Information, Design, and User Experience

I’m not a designer, and reading these books won’t make you one either. But every developer should know how to present information and interfaces clearly and comprehensibly.

  • The Visual Display of Quantitative Information

    Edward Tufte

    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

    Bill Buxton

    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.

  • Practical Typography

    Matthew Butterick

    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

    Donald Norman

    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.