How do you mean? It seems to me that the only way to uncover more productive programming is to do it on your own. Someone teaching you is going to teach you their way. Even if they've already discarded the less productive techniques, isn't it likely that there are other more productive techniques you won't learn from them?
Disagree completely. You learn to program from somewhere. Even if you pick up a book and teach yourself, you utilize the techniques and paradigms within. Self-taught programmers typically learn procedural programming. A little bit of education and you learn about the invariably superior advantages of OOP. Then you typically discover that your hierarchy is unwieldy and the overhead is too large, a bit more education and you learn about aspect-oriented or component-based design- etc. Then you have development/design methodologies like test-driven, agile, black-box, SOLID etc.
Different models are better/worse for different degrees of complexity and applications. There are some that are generally bad in that they result in poor maintainability and difficult debugging.
Experience and education have dual-importance in the improvement of your expressiveness and productivity. A lot of research has gone into production methodologies/paradigms that don't really trickle down to introductory programming.
A few lists worth looking at to get an idea of the creative solutions people have come up with.
http://en.wikipedia.org/wiki/List_of_software_development_philosophieshttp://en.wikipedia.org/wiki/Programming_paradigmIf you search "Is ____ good for games?" on google, you'll get a lot of interesting perspectives.