Some people start out in life able to solve hard problems. Others cannot seem to do it. I believe that intelligence is not innate, but few people know how to work on hard problems. Some may learn by luck, or by observing smart people.
Here are a few things I was able to learn over the years:
- Use your intuition, but keep it in check. Hard problems often require that you question every single assumption.
- Start small and do not stare directly at the nasty problem. Always focus on an easy non-trivial next step.
Trying repeatedly to solve a hard problem in one pass can be depressing, so get small victories. Try to learn something new about the problem every day.
- Write a lot. Describe your false starts and explain why they are false starts. Doing so has benefits: you are less likely to go down these paths again and writing tends to bring forth new ideas. Do not worry about filling up notebooks: paper and ink are cheap.
- Stand on the shoulders of giants: repeatedly go learn about related problems using wikipedia or Google Scholar. Jot down any result that may help you later.
- Computers are very powerful assistants: use them to plot your problem or to test out theories quickly. It is sometimes amazing how much you can understand by looking at a plot.