It's good to see Joel Spolsky weighing in on the question of the inadequacies of computer science education. When Joel on Software talks, people listen. It's a great article, of course -- so many of his articles are great -- but here's the essential quote:
"Where are students supposed to learn about version control, bug tracking, working on teams, scheduling, estimating, debugging, usability testing, and documentation? Where do they learn to write a program longer than 20 lines?"
The alleged answer: the senior capstone project. Almost every CS program requires its students to complete the senior capstone. In theory, fantastic. In practice... not so much.
In a way, the problem is simple: time. Learning to be a real programmer requires deep immersion in real problems, and that's not really the purpose of an undergraduate education. An undergradate education is a survey of many topics, and a student that's taking five or six different courses can't really spend 40 hours a week diving into code. That's why co-op programs and internships are so important.
Still, the question must be asked: what good is a capstone project if it doesn't actually provide the real world experience it purports to provide?
Because most capstones don't provide real world experiences. The difference between "the software project that four kids write, part time, in a semester" and "the software project that the new hire will be thrust into" is truly a night-and-day difference. Real software projects consist of thousands of lines of code, with lots of different hands touching parts of that code all the time. Learning the tools to survive in that real-world environment is absolutely crucial -- and most CS students just don't learn those tools.
Open source software has the potential to be a game-changer for these students. And to be clear, it's not open source itself that matters here; it's what open source makes possible. Open source allows students to see real world code, in real world scale.
Dave Humphrey of Seneca College says it best: the real skill that students need is the ability to be "productively lost". Open source projects provide the opportunity to develop that skill.
Which is precisely why initiatives like UCOSP and HFOSS and teachingopensource.org matter. A handful of professors are starting to bring their students into open source software projects. It's up to us in the open source world to embrace them. Better for students, better for professors, and definitely better for open source projects.