1. I try to break the problem into smaller problems.
2. Pick the hardest one from those smaller problems and apply step 2 until it can't be broken into smaller pieces.
3. Once I have a "constrained" hard problem, I just try to solve it however I can.
If I solve that problem, that normally allows me to build from there, otherwise I may have to re-frame the problem. But by just starting, I get more information and ideas on how to tackle it.