Possible Duplicate:How can I improve my problem-solving ability? When starting a programming task, I have trouble breaking it up into steps and figuring out how to go about solving it. I want to get better at it. Should I to focus on data structures/algorithms? Or should I be studying more design patterns? What do you think would help in thinking more logically and being able to break things into steps? 
Should I learn design patterns or algorithms to improve my logical thinking skills?
design;self improvement;programming practices;algorithms