- Simplify/Shrink (without changing external behavior).
If you move to a fuzzier world, these become additional techniques:
- Simplify/Shrink (by changing requirements).
I don't emphasize algorithms, because picking up ready-made algorithms from a third party is so common these days. (Does that mean we actually make progress? I think so.) However, some folks still have to provide said algorithms, so it might apply to you. The same kind of issue applies to being hardware-friendly, I think.
Anything else I'm missing that doesn't fall into these categories?