Skip to content

Instantly share code, notes, and snippets.

@kaar
Created November 1, 2024 08:57
Show Gist options
  • Save kaar/d466db633ec9eb7b836059e9602f250c to your computer and use it in GitHub Desktop.
Save kaar/d466db633ec9eb7b836059e9602f250c to your computer and use it in GitHub Desktop.

Rob Pike's 5 Rules of Programming

  1. You can't tell where a program is going to spend its time.

    • Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is.
  2. Measure.

    • Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.
  3. Fancy algorithms are slow when n is small, and n is usually small.

    • Fancy algorithms have big constants. Until you know that n is frequently going to be big, don't get fancy. (Even if n does get big, use Rule 2 first.)
  4. Fancy algorithms are buggier than simple ones, and they're much harder to implement.

    • Use simple algorithms as well as simple data structures.
  5. Data dominates.

    • If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment