Skip to content

Aim Small, Miss Small: Writing Correct Programs

Stuart Halloway edited this page May 22, 2018 · 3 revisions



We have tons of tools and practices to help us write correct programs, including:

  • red squiggly underlines
  • type systems
  • automated tests
  • proofs
  • generative testing
  • stacktraces
  • frameworks
  • agile methods
  • test-driven development
  • logging
  • humane error messages
  • step debuggers
  • simulation

Net result so far: We invest a lot of time and money, and our programs are still full of bugs.

I don't have a silver bullet to offer, nor do I plan to denigrate any of the ideas listed above. But I will say this: I regularly watch programmers aim too large and miss by miles.

To aim small is to:

  • plan ahead and catch misconceptions early before they ramify
  • make small things, at every level

and then plan to miss anyway:

  • expect failures and make them more evident
  • divide and conquer when things go wrong

This talk will show you how.

You can’t perform that action at this time.