Look at problems from as many viewpoints as possible. Figure out the implications of the problem. Implement the solution.