Improving analysis skills [closed]

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 ?

-

closed as off-topic by durron597, MichaelT, gnat, Snowman, amonJul 14 '15 at 8:17

This question appears to be off-topic. The users who voted to close gave this specific reason:

• "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – durron597, MichaelT, gnat, Snowman, amon
If this question can be reworded to fit the rules in the help center, please edit the question.

– Rudy Aug 2 '11 at 9:29

Generally when I'm solving problems via analysis I do the following:

• locate in a system, the sub-components that are the focus of the problem
• State the initial assumptions for the components state
• given a set of initial state(s), predict what you believe will be the outcome.
• If the prediction(s) fail, remove each state assumption one at a time, and confirm that the state is what you assumed it to be.
• If the states are all correct, then the issue is one of logic.
• To solve a set of Logical issues, start off with a set of "Logical Transform" assumptions
• Repeat the above method but for "Logical Transforms" example: "assume (1) when condition X -> x transforms to y"

That's loosely how I work through problems.

-

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.

-