what are the things that a programmer must know in order to solve problem​