I believe one cannot teach Program Methodology by teaching only Programming.
Programming methodology deals with the analysis, design and implementation of programs (John E. Howland, Trinity University, Texas).
Programming (often shortened to programming or coding) is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs (Wikipedia),
Programming is the process of expressing an algo/flowchart/psedocode in a computer language.
By definition, these terms (Program Methodology & Programming. ) are different!
I believe that if we fail in imparting the analysis, design, and implementation skills, we cannot 'produce' decent programmers.
The key would be to help them acquire problem solving (analysis & design) skills which can then be expressed using any language (whether its a natural or Programming language).
Should the person not be able to express the solution in a natural language let's say 'English', it would be silly to teach him to program in any language.
However the main situation I am witnessing, is the fact that some people are failing to fully understand the problem leading to major difficulties when it comes to conceptualising a possible solution.
As a matter of fact it one cannot conceptualise, this implies that one cannot express the idea- this results in one's inability of program.C'est un problème de fond!!!
We are now in a paradoxical situation - can we teach people to think or is it something they have to learn by themselves?
IMHO should i try to 'teach someone to think'- this would be a failure, because i will only be able to teach that person to think like I do, what about his brain, to a certain extent I would be suppressing his creativity and decreasing the number of 'Aaaaha' or 'Eureka' moments . What fun would there be in that?