how to build logic skills in programming