how are you with problem-solving?

how do you go about solving problems? especially with things like difficult decisions, or tackling challenges in life

(and programming! how do you programmers problem-solve/debug within your code?)