Rob Pike’s 5 Rules of Programming

Rob Pike’s 5 Rules of Programming

  • Rule 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.

  • Rule 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.

  • Rule 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.)

  • Rule 4. Fancy algorithms are buggier than simple ones, and they’re much harder to implement. Use simple algorithms as well as simple data structures.

  • Rule 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.

A bit more can be found at the source here: http://users.ece.utexas.edu/~adnan/pike.html

In my experience, I’ve come across Rule 1 enough times to know how to avoid the lesser obvious bottlenecks (which for me generally focus on data merging). I’ve definitely come across Rule 4. Rule 5 trumps them all, as it were. A deep understanding of the appropriateness of data structures is core to good code. Rules 2 and 3 don’t generally impact my day-to-day programming.

Via Hacker News, which I’m sure will lead to a killer comments thread.