Software Design by Example

a tool-based introduction with JavaScript

The best way to learn design is to study examples [Schon1984, Petre2016], and some of the best examples of software design come from the tools programmers use in their own work. In these lessons we build small versions of things like file backup systems, testing frameworks, regular expression matchers, and browser layout engines both to demystify them and to give some insights into how experienced programmers think. We draw inspiration from [Brown2011, Brown2012, Brown2016], Mary Rose Cook’s Gitlet, and the books that introduced the Unix philosophy to an entire generation of programmers [Kernighan1979, Kernighan1981, Kernighan1983, Kernighan1988].

All of the written material in this project can be freely reused under the terms of the Creative Commons - Attribution - NonCommercial license, while all of the software is made available under the terms of the Hippocratic License. All proceeds from this project will go to support the Red Door Family Shelter.

Reviews

  • Jessica Kerr: “Software Design by Example is the book I’ll recommend to every new dev… It is nice to you. It wants you to succeed… It’s a bridge from ‘learn to program’ to working programmer.”

  • Jenn Schiffer: “I am v much enjoying gvwilson’s book Software Design by Example. It makes me miss teaching, it would be such a fun text to use!”

  • Emily Gorcenski: “There’s a lot of books on programming but fewer books that couple software development with effective and practical use of tools, presenting a language not as a main course but as a part of an engineering ecosystem. Greg Wilson’s book hits all the right notes in bringing together theory, pragmatism, and best practices.”

  • Danielle Navarro: “The book is really bloody lovely.”