Another day, another class. Today was the first in-class assignment: Find a poem or song lyrics, and using basic HTML and Cascading Style Sheets, mark up the document so that [a] The code is clean, and [b] it renders appropriately in the browser.
At the beginning of class I asked the (what will soon be) usual question: “Does anyone have any questions about anything we have covered in this class, thus far?”
Silence.
“Okay! This is your assignment!”
The questions began after about half an hour, and continued until the end of class at 8:30. All in all, everyone did quite well, but it was a good learning experience; for them, the difference between what you think you know and what you know; and for me, what to emphasize in my lessons, and in what order.
Talking over teaching strategies with Bock later in the evening I recalled something Scott and I concluded a year or so ago: Web development, and indeed almost all aspects of programming, would be best taught in an apprentice/master environment. Programming is equal parts science and art, left-brain and right-brain, inductive and deductive. Were it pure science the classroom would work perfectly. The classroom is the best place for rote memorization and repetition. Were it entirely art there would be no real instruction at all; merely predefined tools and a blank canvas.
But in development and in programming, you have at your disposal a very specific set of tools which work in very specific ways, and thus set up very specific boundaries. Within those boundaries you have a great deal of freedom, and thus have ample opportunity to use those common tools to create something unique. The science eventually becomes art.
Perhaps in a more rational world apprenticeship would be the next step after school, but for now there are internships where students learn to smile while being pissed on. All we teachers can do is try to make them waterproof.