编程马拉松方兴未艾,能否革新计算机科学教育?
2011年秋天,当戴夫·方特诺特(Dave Fontenot)离开他在南佛罗里达州的家搬去密歇根大学的宿舍时,他带上了所有大学新生都会带的标配装备——衣服、鞋子、书籍和一个背包。不过,他少了一件装备。
“我当时还没有自己的笔记本电脑,”他说。
然而,这并没有影响他出席他人生中的第一个编程马拉松,也就是大学开学后的几个星期举行的 Hacka2thon 。方特诺特在这次编程马拉松中开发了自己的第一个网站。这次经历点燃了方特诺特对这项活动的激情,并且他在接下来的两年里,一手组织创立了MHacks赛事,该赛事现在已经发展成为 美国国内最大的编程马拉松赛事之一 。据介绍,上个月, 有1000多名来自全国各地的学生 来到密歇根州参加该赛事。方特诺特谈及此事时语气也略显微妙,方特诺特在Twitter上直抒胸臆的写道:“#hellyeah”。
此外,预计下个学期将有超过一万名学生参加这项大型的编程马拉松赛事。至于这项赛事有多大型,告诉你一个数字你就知道了,美国 2012年计算机科学专业的大学毕业生人数为16000人 。也就是说,接下来的几个学期大多数的计算机科学专业的学生都将在毕业前参加编程马拉松活动。
虽然编程马拉松这种形式的比赛只是计算机科学教育未来转型的其中一种形式,但是一旦计算机科学专业的学生发现某门理论课程过于繁杂的话,他们越来越倾向于通过参加编程马拉松、参与开源项目或到创业公司工作等方式去学习此行业所需的技术集。这么做的学生,最后往往都能拿到不错的工作要约。
然而,这种重建现有的工程师培养方案的行为,也引发了我们对软件开发教育的未来的深度思考。大学在这个过程中应该扮演怎样的角色?学位课程应发挥怎样的作用?编程马拉松项目中的创客文化与研究型大学的传统研究文化应该如何衔接?在这个并不是每个人都有机会参与研究活动的时代,尤其是在女性和未被充分代表的少数民族的平等问题仍然是一个显著而且突出的问题的情况下,这些赛事的组织者该如何确保减少新人加入的障碍,而不是给他们增加麻烦?
改变文化
对于戴夫·方特诺特而言,参加美国第一个也是最大的一个由学生自发组织的编程马拉松—— PennApps ,是其人生中的决定性时刻之一。当时,他得知该活动的主办方愿意付费邀请其它学校的学生参加他们举办的编程马拉松,于是他四处招募他在密歇根州的朋友,最终说服了大约25人和他一起长途跋涉到费城参加该活动。据方特诺特回忆,当时整个活动的气氛和感觉都令人异常兴奋。方特诺特还透露,“我们回到学校的时候,有一半参加了该活动的同学都转到了计算机专业。”
PennApps编程马拉松由阿列克谢·康密斯萨洛克(Alexey Komissarouk)于2010年秋创立,康密斯萨洛克认为这种形式的活动之所以能让人激动,主要是因为人们可以在这项活动中用自己所掌握的技能进行创造,开发出真正的产品。康密斯萨洛克在接受采访时表示,“参与这项活动学生们在比赛中学会了如何创造,而不是如何完成家庭作业。”
学生们对编程马拉松的热情是显而易见的。据估计,这个学期全美国将有10个甚至更多大型的学生编程马拉松,与上个学期的3个相比,出现了大幅上升,而且上升速度还有加快的趋势。康密斯萨洛克还热心的推动这类活动的推广,他在上个月帮助组织了 HackCon ,与有兴趣的学生们分享高效组织编程马拉松的经验。尽管如此,该研讨会的发言人之一方特诺特还是感叹到,“学生的参与热情的扩张速度,还是远远超过了我们扩张这类活动的速度。”
计算机科学专业的学生毕业之后有几条传统的出路,比如进入企业从事软件开发工作或者从事学术研究。从计算机科学专业创办之初,理论和应用之间的差距就是计算机科学专业课程设置争论的重点,这个争论都现在也没有结束。
计算机科学专业在学术领域算是比较年轻的学科,计算机技术最早出现在二战后期,当时主要用于导弹打击定位。早期,该领域的大部分教育要么是不太规范,要么就是隶属于其它学科,比如数学或电子工程。从上世纪六十年代开始,计算机科学专业的发展速度才开始加速,最终形成了专门的学科,并建立了正式的计算机科学院。
很显然,那时候计算机科学专业是一个拥有巨大潜力的学科,但是人们还是对此学科的地位进行了深刻的讨论。对于研究人员而言,他们需要解决一个问题,那就是计算机科学到底应该算是技术型学科还是应用型学科,又或者是否应该从该专业的知识中抽象出一套连贯的知识集,以建立其在学术界的地位?
尽管如此,争论并没有持续多久。在斯坦福大学等大学的努力之下,该学科迅速向理论方向发展。如今,计算机科学的教育主要专注于数学和数据结构的教学,只有少量的关于软件开发的课程。理论这个方向仍然支撑着美国众多顶尖的计算机科学院。
这个具有里程碑意义的课程标准,已经出版了将近五十年,然而,雇主们却已经完全改变了他们的招聘标准。公司的招聘人员越来越希望刚毕业的工程师能从第一天就开始开发软件,因此他们也更加青睐那些在毕业前就已经拥有丰富的软件开发经验的毕业生。在创业公司中这个倾向更是明显,因为这些创业公司往往缺乏指导和培训等基础设施,人手也比较紧张,没有人有时间来带领毕业生跟上正常的开发节奏。
从最近的活动中我们可以看出,这种形式的比赛几乎都是学生组织的。这类活动正好填补了学生对于创造新产品的热情与学校的课程所强调的理论建构之间缺口。
方特诺特在接受采访时就指出,“学生们很快就会发现,这绝对不仅仅是一个爱好,而是一次教育革命。”他还特别强调,参加编程马拉松活动的学生提升的不仅仅只有纯粹的编程能力,还有产品设计能力和团队合作能力,而这些能力正是传统的计算机科学教育无法教授的。
不过,康密斯萨洛克也警告说,“这个变化主要还是起到辅助当前的计算机科学教育的作用,而不能替代传统的计算机科学教育。这种形式的比赛主要作用是调节一下当前的计算机科学专业的课程,并做一些合理的调整。宾夕法尼亚大学的IR (国际关系)部门有一个巨大的MUN(模拟联合国)项目,我们的创意写作课程也有一个写作项目,而计算机科学专业的课程设置中没有类似的项目,我所接触的都是一群博士生在谈论的高新技术研究。虽然这看起来很酷,但是大多是计算机科学专业的学生毕业之后都不会做这些研究,而且这也不是大多数学生选择这个专业的原因。”
2013年9月21日,黑客们在美国密歇根州安娜堡市举办的MHACKS编程马拉松2013比赛中编程的场景。 [由约瑟夫·徐拍摄, 密歇根州工程通信及市场推广部 版权所有,未经许可不得使用]
参与开源项目以提升自己
诚然,编程马拉松也只是创造新产品的众多方式之一。除此之外,开源项目也越来越受到用人单位和学生的重视,对于应届毕业生而言,参与开源项目无疑是提升自己的技术能力的可靠手段之一,同时还有助于培养长期的开发思维。
谷歌也从2005年开始举办代码之夏( Summer of Code ),让来自全世界的约7500名学生有机会参与到最重要的开源项目的开发工作之中。不过,尽力挖掘学生在开源项目中的贡献能力的不仅仅只有谷歌这样的大公司,还有不少初创公司也充分利用了学生在开源项目中的潜力。
奎因·斯莱客(Quinn Slack)和彼洋·刘(Beyang Liu)联合创办了 SourceGraph ,旨在帮助开发者实现跨代码库查找代码使用样例。据他们介绍,他们发现学生在拓展其公司的开发知识库中发挥了关键性的作用,学生在开源社区中的作用也不容小觑。上个月,该公司公布了他们甄选出的 10位开源先锋 ,这些开源项目的贡献者参与的项目类型非常广泛。从MIDI输入库到专为政治分析开发的数据分析工具都有。他们还希望在短期内选出第二批开源先锋。
斯莱客在接受邮件采访时表示,“参与开源项目不仅可以让学生接触到真实世界中的真正的项目代码,还能教会他们如何与他人协作开发软件项目,同时又能提升他们作为一名程序员的声誉。此外,这还是一个超级有意思的过程。通过参与开源项目,学生还可以接触到世界上最顶尖、最聪明、最有热情并且真正有做一些东西出来的程序员。”
正如斯坦福大学计算机科学本科生和Sourcegraph开源研究员朱莉娅·李(Julia Lee)所言,开源项目更复杂,也更接近现实生活中的软件开发。据她介绍,“很多斯坦福大学计算机科学专业的本科课程都有期末项目,但是那些项目与很多开源项目相比都只能算是小项目。”此外,她还提到参与开源项目的另外一个好处,即选择项目的自由。她说,“我在开发一款应用程序的过程中教会了自己开发Android应用,斯坦福大学公共卫生研究所的研究人员将在今年晚些时候开始采用该应用。”
编程马拉松这种形式的比赛正在替代招聘会,尤其是那些在工科学校举行的招聘会。因为招聘人员希望能够招到有开发能力的学生。
招聘
对于像Sourcegraph这样的公司而言,招聘会并不能帮助他们提前接触到斯坦福、伯克利等名校的一些顶尖的软件工程专业毕业生。事实上,我与之交谈的每个人都表示,聘用开发者的方式将在这个新时代得到彻底的改变。
MHacks的组织者方特诺特在这点上也是颇为肯定,他说,“有一件事已经很明显,那就是编程马拉松正在替代招聘会,尤其是那些在工科学校举行的招聘会。因为招聘人员希望招到有开发能力的学生。”如能在编程马拉松或其他项目中展示出自己的编程能力,将为应聘的学生带来“巨大的竞争优势”。PennApps的组织者康密斯萨洛克也相信,编程马拉松已经变成一种类似于棒球联盟中青年训练营一样的编程训练营。
据上述两位编程马拉松组织者透露,他们时常看到风险投资者和招聘人员来到编程马拉松活动现场寻找他们想要的人才。方特诺特就特别指出,安德森-霍洛维茨(Andreessen Horowitz)的工作人员就经常出现在这些活动的现场。方特诺特在接受采访时表示,“我对参与编程马拉松的学生作了一项调查,看他们是如何开始找工作的,我发现大部分学生都说A16z的网站是他们的主要搜索场所。A16z的网站一直都非常有效,因为该网站收录了很多那些从A16z的网站出去并成为顶级的创始人和工程师的例子,这就给用户带来了一个很好的印象。”
另外,方特诺特认为编程马拉松已经开始逐渐取代公司招聘时的面试环节。他说,“对于公司而言,这就是一种人际关系。编程马拉松就像一个精英大会,在那里你可以遇到最好的工程师,这些工程首先会帮助公司和团队解决一些大问题。公司无需面试这些应征者,你可以直接现场看他们编程。你不需要评估他们,因为你也可以在现场亲身认知那个人。”
关于编程马拉松的发展速度
这些编程马拉松赛事的益处之一是赛事的民主本质,任何人都可以注册参与比赛。同样的,开源项目也是任何人都可以自由参与的,并获得自己应有的荣誉。
然而,康密斯萨洛克也指出,这些活动的参与机会也不完全平等。他说,“一方面,编程马拉松越来越流行,这当然是好事。事实上,越来越多的工程师受到感染,慢慢接受了他们的职业就是创客的事实。学生们也开始意识到,计算机科学远不止家庭作业和工作这么简单,而是要美妙得多。另一方面,随着顶尖程序员的门槛的提高,编程马拉松也变得越来越专有化,甚至开始吓跑了一部分我们真正希望吸引的一群人。”
的确,以前的学生只需顺利毕业,然后到公司去应聘,或许还会带上几个课堂上做的几个项目就行了。如今,公司对学生的技能集的期待已经显著提高了。举个例子,如今很多初创公司都使用GitHub来寻找潜在的雇员。这么做虽然可以让招聘过程更加透明化,但是同时也大幅提高了对学生能力的要求。或许,他们得设法在上他们的第一堂算法课前,就积极向社区贡献代码。
方特诺特和其他编程马拉松的组织者都敏锐地意识到了这个隐患,并积极致力于扩大选择计算机专业的学生人数。正如方特诺特指出的那样,“当你拥有更大人数基数时,你会得到更加多样化的人才。”
Sourcegraph的斯莱客则对这种发展速度持积极的态度,他认为这有利于培养学生快速学习的能力。他指出,“今天的计算机科学专业的学生将会成为科技行业和开源社区的未来领导者,因此如果说我们能做些什么的话,就是帮助他们提前几年成为领导者。”
这种速度已经可以在MHacks中看出来了,过去的7位最高奖获得者中有两位还是高中生。的确,方特诺特也认为,当今,如果你想进入大学,参加一次编程马拉松是一个绝佳选择。
“在密歇根,我们推荐到高校招生办公室的高中生超过50名,因为他们都希望未来的10位马克·扎克伯格成为他们的学生。”至于如何选择,主要是看他们开发的应用。
然而,这种速度的提升是有代价的。如果学生需要在上大学以前就早早的展示出他们所拥有的成为工程师的天资的话,这就有可能会把一大批在上大学之前甚至连电脑都没碰过的学生拒之门外。尽管这些编程马拉松赛事的开放和灵活本质的确有助于学生的发展,但是这些活动与招聘的关联越大,这些活动就越有可能会成为人们展示自己适合被聘用的平台,而非获得进一步教育的开放机会。
结论
与今天的大多数职业一样,软件开发工程师这个职业也在反过来影响着计算机科学教育和地位认同。在某种程度上,麻省理工学院或斯坦福大学的学位还是进入硅谷主要公司的重要门票,并从那里开始走上创业之路,或者成为管理者。
这种形式的比赛和开源项目创造出的新文化,注定是要颠覆这个行业的。如今,越来越多的学生选择在毕业之后加入创业公司。也就是说,他们选择在自己职业生涯的初期,就参与到产品的开发之中,而不是编写样本代码。随着这些活动继续专注于教育方面的事务,他们有机会通过这种方式解决工程师紧缺的问题,吸引更多不同背景的人加入到这个行业来,甚至还有可能会催生下一个伟大的初创公司。(译:牧码人)
图片版权:2013年9月20日,MHACKS编程马拉松2013,在美国密歇根州安娜堡市克赖斯勒冰球场上举行开幕仪式。 [由约瑟夫·徐拍摄, 密歇根州工程通信及市场推广部 版权所有,未经许可不得使用]
- With Hackathons Taking Center Stage, The Coming Transformation Of The Computer Scientist