I am a software engineer with a couple of years of experience. However I feel my problem solving skills need to be improved. To put in crude terms given facts A and fact B I have difficulty in reaching conclusion X ? Some people seem to have the ability to reach conclusion X given facts A and B and and also remembering to take facts C,D in account.

What techniques do you use to improve your problem solving and analysis skills ?

There is a book called Analysis Patterns by Marin Fowler. It is about object models and not about any algorithmic analysis, but learning about this patterns, helped me recognizing patterns in various domains and thus being able to analyze it more thoroughly.