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:
- Attempt to solve a problem.
- Conceive of a need or desire to add structure to that attempt.
Notice a pattern.
- Look for a pattern in the problem you are solving.
- Try to understand the pattern as best you can:
- What’s the essence of this pattern?
- How can I simplify this pattern?
- Label it.
- Try it (experiment with it).
- Be a skeptic.
- Vary your label.
- See if you actually remember your heuristic when you need it.