计算机科学教育的现代化
编者按:杰•伯恩斯坦( Jay Borenstein )是 斯坦福大学 计算机科学讲师兼 Facebook开放学院 (Open Academy)创始人。
很多人,尤其是硅谷的人,觉得现在工程师毕业生还不足够。 美国劳工部 预计,到2020年,将会有140万个计算机科学(以下简称“CS”)岗位,但该专业的毕业生将仅能够覆盖其中的30%。或许更令人烦恼但往往被忽略的是,当下的工程师毕业生往往不具备岗位所要求的CS实践技能水平。为什么会这样呢?简单来说,成为一名CS学生跟成为实际的软件工程师迥然不同。
面向多数CS学生的课程教授重要的软件开发实践,但由于它们是围绕普通的课堂教育模式设计的,有该专业的很多东西并未能够传授给学生。与课堂不同,现实中的软件开发项目比学生在课堂上遇到的要大,不管是在时间线方面还是在规模方面。要在实践中发挥作用,工程师还必须掌握部分现成的实质性代码库。此外,在实践中,项目管理和人机关系处理能力对于软件设计的影响并不亚于技术问题,系统说到底是由学生满意度而非技术水平来衡量。
该问题最好的解决方案是,对接学生与开源社区,将大学有价值的CS基础教育与实际工作实践结合起来。
参与开源项目可让CS学生接触软件行业的一个关键部分。开源让每一个参与者都不必被迫从头开始就可以进行开发,打造新基础架构,及展开设计。在学校,项目可能只是理论上的,或者仅与课程相关。而给开源项目做贡献,学生则可以立即看到给生态系统带来的影响。
创造更便利的条件让学生积极为开源社区做贡献,是让他们为职业工作做好准备,以及帮助他们更早意识到自己对世界带来的影响的关键所在。
寓开源于课堂的最佳方式远远胜过只是鼓励学生通过参与开源社区来打磨技能。相反,它应该是对课程体系进行正式化,让教师、学生和资深工程师一块去维护热门的开源项目,如 MongoDB 、 Mozilla Open Badge、 Ruby on Rails 、SocketIO等等。事实证明,这种 已为数家大学采用 的方法很成功,好处包括:
- 接触专家:没有CS教授所有的开源项目都擅长。而让项目专家加入到教育过程,可以确保学生得到最好的工作指导和反馈。例如,修复开源项目的漏洞并不容易,因为大多数‘简单的’漏洞都已经被修复。在专家的指导下尝试修复“困难的”漏洞可给学生带来课程上学不到的宝贵经验。
- 团队合作:从事同一个项目的学生,如Ruby on Rails,需要团队作战,共同完成专家指派的任务。这种团队合作是重要的经历,但却往往为大学课程体系所忽略,因为团队项目不便于评定个人表现。
- 产生影响:开源课程可给学生带来真正的从事漏洞修复及其它任务的经验,他们的努力可以真正推动开源项目前进。
- 专注力:让学生参与实践最重要的因素或许是,促使学生专注于特定项目,以培养适用于现实实践的技能组合如还未成为医生的医科学生在“实习期”需要将所学到的东西应用于现实世界,从事特定项目的CS学生也是在应用他们的技能,获取宝贵的专业知识。
将开源项目引入大学课程会带来种种的教育益处,事实上开源还有一种让人上瘾的精神。我们都是相互协作的个体,而开源则是一种没有国界限制的、专注改变事情的规模化协作。我认为,CS教育的未来是,可让学生更能胜任实际工作的无边界课堂。(译:羽腾)
The Modernization Of Computer Science Education