Programming is not just about syntax. It focuses on problem solving. It requires a feasible approach. Teaching programming is also learning in turn as you come across new problems and a variety of solutions everytime. The aim of an instructor must be guided by the goals of the student. Learners love analogies that relate programming concepts to real-world concepts they're already familiar with.