I think it is inevitable that people program poorly. Training will not substantially help matters. We have to learn to live with it.
It goes against the grain of modern education to teach students to program. What fun is there to making plans, acquiring discipline, organizing thoughts, devoting attention to detail, and learning to be self critical.
In computing, turning the obvious into the useful is a living definition of the word ‘frustration’.
You can measure a programmer’s perspective by noting his attitude on the continuing vitality of FORTRAN.