In praise of small systems

A fictional technical essay about making software easier to understand, one boundary at a time.


Ada Lovelace’s diagram for the computation of Bernoulli numbers
Ada Lovelace, Diagram for the computation of Bernoulli numbers (Note G), 1842. Public domain.
In this piece

A fictional programmer begins with a list of notes and an unnecessarily large plan. The useful question turns out to be smaller: what is the simplest thing the system needs to remember?

Give the data a shape

A type makes an assumption visible. In this example, a note has a title and a publication state.

type Note = {
  title: string;
  draft: boolean;
};

const publishedNotes = (notes: Note[]) =>
  notes.filter((note) => !note.draft);

The function has one responsibility. Its result can be inspected without starting a server or understanding an entire application.

Make the boundary visible

A small system still needs a boundary between private work and public output. Filtering a list is not enough if a separate route exposes the same draft.

Leave a path back

Good tools make it easy to return to the question that prompted them. The fictional margin index project sketches one such tool.

Ashleigh Garnett

Written by

Ashleigh Garnett

I write about faith, code, Japanese and politics from London. These are notes from thinking things through.

Write to me →

More on Programming

  • Fictional demoProgramming

    Margin index

    An imagined command-line notebook for keeping a trail through things read and learned over time.