What Makes A Good Problem Solver