|Think about Loose Coupling|
I wish you good luck !
Even to only define the 'planning before', could take a whole book.
I remember loooong time ago I was told :
"Use organigram(ordinogram) to build your program."
I was then said :
Lately the hype was :
"everything is an object, think in terms of interaction between those objects".
(And I don't speak about other exotic scheme : predicate,recursive solving...)
Even for the naming convention things changed :
The hungarian was once good, it's now bad...
Of course everything isn't so clear,
but the fact is that there isn't to my mind one way to code :
There are several, each best suited for a specifical kind of problem...
I fear that you can only teach basics things :
loop, I/O, branching, error handling, different type of variable, pointer/reference...
Learning how to program can only be, IMHO, a long process,
made of experiments, other coders comments, mistakes, book reading...
Now, please don't see it as an "It's impossible" answer,
but rather as "give them THE BASIC and THE WILL TO LEARN"
Anyway knowledge transfer is an interesting field,
and I long to read here what you (perl mongers) think.
I'd really love to see a method to learn how to programm,