1980年代末,威尔逊还是爱丁堡大学计算机科学系的博士生,同时在校园里作一名程序员。当他将物理学家编写的代码输进超级计算机时,十分惊讶地发现,其中有一些的效率十分低下。“我看着他们花上几个小时甚至几天,才弄出那些我几分钟就能搞定的东西。这些科学家比我聪明得多,他们只是不知道早有人弄通了那些让他们挠头的代码。”
威尔逊设计了程序创建、调试和版本控制的课程。“纯粹是自卫训练。”他1992年毕业,六年之后,得到了在洛斯阿拉莫斯国家实验室给科学家和工程师们上课的机会——教他们如何有效率地编码。威尔逊在企业和学术界都待过,现在是Mozilla基金会的全职雇员,他训练出的志愿者正在全世界的校园训练营里教人们编程。
对那些想要踏入数据催生的新科学领域的年轻科研人员,威尔逊的建议是:选择数据密集型项目、保持专注、并且学习控制数据容量。“学习从数据中找到有用信息,发现其中的矛盾与无常、并且知道如何处置,就如同在物理实验室学习仪器操作一样,是一种动手能力。”人在实践中更容易长进,而研究生学习可以提供实践的天时与地利,威尔逊补充说道。最大的困难并不是编程上的,“而是判断应该使用哪种分析手段,分析出的结果又是否有用。”开源社区,在他看来,是一个找寻编程导师的好地方。
上课去!
为了方便更多传统科研人员学习数据科学,一些院校已推出了提供证书的数据科学和数据采掘课程。网络上也出现了入门级课程,譬如Coursera上的这一发。
在计算机系找一些选修课程,可以帮助研究人员获得自己需要的技术,但许多科学家发现,这并不是最有效率的学习方法。一个对他们的学科领域有足够了解的编程教员,授课的效果要远好得多。
朱莉·梅西尔(Julie Messier)是亚利桑那大学研四的学生,她在加拿大一个北温带森林保护区测量了25个物种、超过400棵树木的35个不同指标。为了完成论文,她必须用到编程和统计学的技术,对这片巨大的数据网络进行分析。她在犹他大学找到了一门一学期的课程——“生物学家的编程课”。这正是她需要的,但犹他州路途遥远,课也没有在网络上公开。授课教师伊桑·怀特(Ethan White)建议梅西尔到自己志愿工作的“软件工坊”去。意识到系里好多人和她有相同的需求,梅西尔在图森的自家校园里组织了一个为期两天的编程突击营。
只需贴补路费和食宿,"软件工坊"的志愿者就能免费上门开办速成班。系统化的校园课程可以向学生们提供需要的技能,但其中总有些东西他们一辈子也用不到。"速成式"培训却只教有用的东西,不过往往效率不高,学生常产生挫败感。梅西尔觉得,速成班可以作为“需求向”学习过程的一个不错的补充。
自学成才
速成教育也许并不完美,但对杰文·韦斯特(Jevin West)却很管用。韦斯特是瑞典于默奥大学一位有生物博士学位的物理学博士后,他与人共同创立了“特征因子”(Eigenfactor Project)项目, 按一定规则为科学知识排序,并绘制一张分布图。他们将学术文献看作一张大网,论文构成节点,引用是其间的联系。"我们可以用这张网衡量学术影响力,最重要的,是它能在不断膨胀的文献海洋中发挥导航作用。"韦斯特说道。最开始对计算机感兴趣的时候,他没有上过一堂正经的编程课,不过,他周围有很多这方面的专业人士。"我很幸运,不明白的都能问他们。"
学得越早,效果越好。华盛顿大学化学工程系的研究生安德鲁?怀特(Andrew White)很小就开始玩父母淘汰的苹果电脑,高中时一度想当个黑客。如今的他,正在用计算机模型寻找新的生物材料。他创建了一些分析数据的网页应用供大家使用,并且设计了一个线上软件,在同事之间共享数据。
怀特说,像他一样自学成才的程序员,一般都在网上阅读教程和书籍,看彼此写的代码,在公共论坛上讨论问题。研究生时,他又在计算机系上了一些选修课,确保自己已全面掌握了编程的基础。
更多详细信息,请您微信关注“计算网”公众号: