There are several traps that even experienced teachers fall into, many of which can be avoided with common sense, deliberation, and stepping back from the subject they love so much. Here is some advice to avoid the traps:
* You recovered from earlier programming experiences that were "wrong" (e.g., I started in FORTRAN); so can your students. You do not have to be "right" from the very beginning.
* Problem solving is done in terms of certain tools; it cannot be taught in the abstract. You need to know something about a programming language before you can begin to solve problems in programs.
* OOP and all other "right" techniques are expressed in a language or they are not intelligible. In addition, they are motivated by need, not by altruism and "rightness". Until your students get into predicaments, or until they can be shown a useful simplification (etc.), they will not understand the "right" way.
* Hello World is an introduction to programming, not to OOP. You can teach all the basic language constructs using code placed only in the main method. There are many, many language and programming details that can be introduced this way. At some point, the main gets big enough that you have genuine motivation for introducing concepts for information hiding, parameterization, partitioning, and ultimately OOP.
* Students must (and do) take a lot on faith when they begin programming; so do you, even now. There is nothing damaging about it.
* The "grad student syndrome" in which the instructor wants to do a direct brain dump to his students is frightening to students, and wrong; it can be avoided.
After the main method gets too unweildy, and you start using other methods, consider changing to applets using the AWT to heighten interest and a sense of reality.
By the way, while we are all correcting our behavior with respect to teaching and writing about programming, here are some other pointers for getting out of the rut:
* Put discussions of machine structure at the end of the course, where it can have some meaning.
* Don't pretend to show the stepwise (or other rational) development of common algorithms unless you know for a fact that they were actually developed that way; most were not.
* Quit using the word "notion" all the time; try "idea", "concept", and others.
* Don't provide quotes from "Alice in Wonderland" or Douglas Adams' books.
* Skip the "Towers of Hanoi" and other cliche examples. Use something real, even if trivial.