My main job as a lecturer at Ngee Ann Polytechnic is to teach a bunch of 16 to 19 year olds important concepts like programming, systems analysis & design, and (gasp!) math. When I say important concepts, I mean these concepts are important if you want to find a good job in the IT industry. To most of my students, however, this stuff is not as important as the life-changing and earth-shattering issues of whether Choi Young can save the life of Princess Nogoog in the next episode of some Korean drama, or what's in the next DOTA 2 expansion, or what to have for lunch.
That's the main challenge: motivating the students. These are young adults who are still finding their identity, and their studies is only one of the many issues they are currently facing. As a lecturer, I am competing for their attention against all the distractions that relationships, teenage angst and the Internet can bring. I have four main tactics in this battle for attention; in no particular order:
Show applicability. When teaching a concept, I always try to show how it can be useful in real situations. This is especially important for abstract concepts like math where the application is not immediately obvious. It's one thing to teach the basic concepts of probability, it's another to use it to explain why there is no such thing as a non-profit casino. Related to this point is:
Present the concepts in terms the students understand. These are teenagers with little or no world experience, so it would be hard for them to relate to industry examples. Their world consists of school, socializing with friends and popular culture, and I always try to tailor my examples with this in mind. For example, when explaining the concept of software design patterns, I used an example from online gaming: a "tank" build implies high defence and probably hit points, while a "dps" build does lots of damage but is probably fragile, and these builds can be considered patterns. This is much more interesting to the students than talking about hub-and-spoke and grid patterns in network design.
Keep it fresh. I am constantly looking for new and/or interesting ways to present the material. It could be something as simple as a relevant post on 9gag or as complex as a role-playing exercise spanning weeks. It would be great if I can integrate technology like Twitter or Google docs into a lesson, but I would be just as happy to get the students excited about a gameshow-style lesson using nothing more than pencil and paper.
Be passionate enthusiastic. This stuff I'm teaching? It's really cool, and I'm really excited to share it with you! After you learn this, you can get a great job, impress your friends, build a better mousetrap and/or cure cancer! (okay, you probably can't cure cancer - I did say "or") The point is to raise the energy levels of sleep-deprived and overworked students, and nothing saps energy faster than a lecturer who seems to feel that what he's teaching is boring. Incidentally, being enthusiastic is not the same as being passionate - you can't make yourself be passionate about stuff that you don't find interesting, but you can deliver your material with enthusiasm.
Although I believe that following these maxims will maximize the chances of successfully teaching the material, they are by no means a guarantee of success. Despite appearances to the contrary, all students are individuals with their own preferences, prejudices and personalities; there is no one-size-fits-all tactic. Furthermore, as times change and people (and students) change with them, teaching approaches have to change too. I'm still learning how to teach, and I don't think the learning ever finishes.