Develop your own methods

To sum up, my message to the serious programmer is: spend a part of your working day examining and refining your own methods. Even though programmers are always struggling to meet some future or past dead-line, methodological abstraction is a wise long term investment.

- Robert W. Floyd's 1978 ACM Turing Award Lecture

Here are some guidelines James Bach gave me for coming up with a heuristic:

  1. Attempt to solve a problem.

  2. Conceive of a need or desire to add structure to that attempt.
    OR
    Notice a pattern.

  3. Look for a pattern in the problem you are solving.

  4. Try to understand the pattern as best you can:

    • What’s the essence of this pattern?

    • How can I simplify this pattern?



  5. Label it.

  6. Try it (experiment with it).

    • Be a skeptic.

    • Vary your label.

    • See if you actually remember your heuristic when you need it.