Back at the beginning of the year I had lunch with a university professor interested in the notion of software craftsmanship. This is an extract from an email he sent me at the time:

I wonder about how scalable the apprenticeship model is. It seems to be predicated upon mentorship, where each apprentice has a mentor. This means you need a large number of mentors if you have a large number of apprentices. They will have to be found and paid. This will cause difficulties... If you want 1 teacher per 10 students you'd have to find an pay 10 times as many as now. How does the Software Craftsmanship movement intend to deal with this?

Buried in this problem is an inherent assumption about the way programming is taught. It assumes the current university model of teaching undergraduates: employing researchers who spend most of their time away from their students doing what they’d really like to be doing, whilst having to teach classes to pay the bills.

If you try and use an apprenticeship model in this context, you run into severe funding issues: who will pay for all the extra researchers?

A different way

Why don’t universities do real software projects? Why can’t we have master practitioners being paid by real clients to do real work, and have the students along for a ride, learning as they go?

The funding issues will be cleared up as business will be paying. Students work for free, or perhaps room and board. Either way they won’t be saddled by exhorbitant fees.

If this makes sitting in a lecture hall listening to information difficult to fund, then great. That’s one of the most inefficient ways to learn: why do we persist in trying to sustain it? There is value in book learning, and the industry does currently rely on students to achieve that through university education. But the best way to pick up those principles is through real-world examples on real projects, supported by appropriate exercises designed to drive home specific points. It is certainly not through sitting in a lecture hall.

Maybe this model is a step too far for a traditional university. Perhaps they’re not be the best place to learn our craft. Our current university system is designed to create great professors, not great practitioners. Perhaps it’s time for a change.