很高兴看到 Joel Spolsky 权衡了关于 计算机科学教育不足之处 的问题。当 Joel on Software 说话时,人们会倾听。这当然是一篇很棒的文章——他的很多文章都很棒——但这是最重要的引言
“学生应该在哪里学习版本控制、缺陷跟踪、团队合作、排期、估算、调试、可用性测试和文档编写?他们在哪里学习编写超过 20 行的程序?”
所谓的答案:高级顶点项目。几乎每个 CS 课程都要求学生完成高级顶点项目。理论上,太棒了。实际上…… 没那么好。
在某种程度上,问题很简单:时间。学习成为一名真正的程序员需要深入沉浸在实际问题中,但这并不是本科教育的真正目的。本科教育是对许多主题的概览,一个同时修读五到六门不同课程的学生不可能每周花 40 个小时深入研究代码。这就是合作项目和实习如此重要的原因。
尽管如此,仍然必须问这个问题:如果顶点项目实际上没有提供它声称提供的真实世界经验,那么它有什么好处呢?
因为大多数顶点项目没有提供真实世界的经验。“四个孩子在一个学期兼职编写的软件项目”与“新员工将要投入的软件项目”之间的区别确实是天壤之别。真正的软件项目由数千行代码组成,并且始终有许多不同的手在接触这些代码的各个部分。学习在真实世界环境中生存的工具绝对至关重要——而大多数 CS 学生只是没有学习这些工具。
开源软件有可能成为这些学生的颠覆性力量。并且需要明确的是,重要的不是开源本身;而是开源使之成为可能的东西。开源允许学生看到真实世界规模的真实世界代码。
塞内卡学院的 Dave Humphrey 最好地说明了这一点:学生需要的真正技能是“高效迷失”的能力。开源项目提供了发展这项技能的机会。
这正是像 UCOSP 和 HFOSS 以及 teachingopensource.org 这样的倡议很重要的原因。少数教授开始将他们的学生带入开源软件项目。我们开源世界有责任拥抱他们。对学生更好,对教授更好,当然对开源项目也更好。
4 条评论