Can Software Development Be Taught?
Have you ever heard the classic teacher's lament? "I taught them but they just didn't learn." Well, guess what? This happens all the time in software development courses. There's a massive amount of things that you have to learn in order to become an effective software developer, and unfortunately most don't really fit into a classical lesson plan.
By the time the key concepts have been distilled and identified, they become just boring facts to be memorized. The reasoning behind the concept is lost because it doesn't really make sense in a 50-line program. Given a 50,000-line application containing thousands of methods encapsulated in hundreds of classes, the concept would be really obvious, but how do you fit that into a two hour lesson?
Even worse, when the students really get to try out the ideas, the student/teacher ratio is so bad that anyone who needs help has to wait for ages to get assistance. True, the students can help each other, but typically the problems are so different that it's only the really self-motivated learners who actually make any progress. And because of the time it takes for the whole class to complete the exercise, many students end up sitting around waiting for the rest to catch up.
Small wonder then that while part of the class is sitting around looking bored, another part is totally stumped and frustrated. The teacher has a dilemma: how to make the class more challenging and interesting for the students who are bored while stepping through the material again for those who are stumped. To make matters even worse, each new topic will stump different people and leave others bored.
I'm not surprised that the idea of teaching as a "performance art" has come about. After all, how else can a teacher keep the students interested in a subject when the students keep on getting bounced between boredom and frustration? Talk about solving the wrong problem! Mass teaching works for some things but manifestly fails for complex, hands-on skills like software development.