我2017年10月初到的美国,到现在已经5个月了。这里的生活和科研环境都和国内差别很大。国别不同,文化不同,环境差异再所难免,不可能做到国内外一样。文化习惯方面的差异没有优劣之分,各自有其相适应的环境。但在科研方面还是有一些地方,我认为美国这边比国内好,而且国内也可以复制学习的。
下面是我想到的几点可以学习的方面:
- 个人层面
- 科研记录与版本控制
- 编程及数据处理
- 团队层面
- 交流工具
- 项目文档管理
个人层面
科研记录与版本控制
科研工作面对的问题,往往有很多的步骤,非常多的细节,而且有时候,有一些参数我们并不知道。我们需要经常性的猜测/测试/对比/修改/推倒重来。因此,除了要提前做好规划以外,做好记录也是非常重要的。如果不把做过的东西详细的记录下来,过一段时间后就不知道自己曾经做过什么,当初是怎么做的了。因此,在进行一个项目的过程中,使用能够保留过程中每一个版本的细节的工具非常必要。
主要困难
记录并不是一件简单的事情,因为:
- 任何一个测试也都包含很多参数,我们没法记录全部的内容,只能记录其中的重点参数。这样其实丢失了其他的细节。
- 不同的阶段会做各种各样的测试,需要保留非常多的版本,有时还会出现命名的冲突。
- 一个修改涉及到多个文件时,由于各种原因(名称接近/数据类似等)非常容易出现失误。
我对此深有体会。在做各种测试的时候,产生并保存了很多版本,由于文件多,处理过程多,非常容易犯错误,出现错误后又很难通过肉眼检查出来。
现用方法
国内常用Word文档来记录科研过程,用Word来写论文。过程中会产生非常多的版本,但是我们没办法非常方便的比较不同版本的区别。另外Word文档不方便在文档外全文搜索,导致过一段时间想找文档就不好找了。
推荐工具
在美国这边大家都把自己的科研过程(从方案设计规划,模拟计算数据到写论文过程)用git配合github留存着。使用这套工具,只需要一套文件,不需要复制/另存/重命名多个版本就可以保留所有过程的细节。利用这套工具可以很方便的:
- 创建分支:一个分支就是一个版本,可以方便的查看任意版本的所有细节
- 比较分支差异:可以非常方便的查看不同版本之间的差异
- 查看修改:这一次修改了什么,也一目了然
同时,需要注意,git+github可以只管的查看以文本格式保存的内容(常用的txt, dat, csv, tex, bib等),但是不能查看和比较二进制保存的文件(如docx, xls, ppt等)。
因此,推荐使用能够以文本格式保存的文件来保存和记录科研过程及成果。
PS:如果用git+LaTeX写论文的话,那么从项目的开始到结束,所有的细节全部都能够保留并方便查看。
编程及数据处理
科研过程中伴随着大量的数据文件,输入文件,输出文件,后处理等等。很多时候,特别是对某些参数做扫描式对比的时候,会需要对相同格式的数据进行相同的处理步骤。也有些时候我们需要处理的数据量很大,或者处理步骤比较繁琐。总而言之,我们需要处理并维护大量的数据。
现用方法
现在课题组还常用excel来保存数据。常见的数据处理流程:(从word文件/excel复制参数到输入文件)->计算,得到输出文件->拷贝结果到excel保存数据->拷贝数据到word文档写报告。
这样的流程有非常明显的弊端:
- 耗时多
- 容易出错
- 检查错误很困难
- 只能对数据进行简单处理
推荐方法
使用简单的程序来自动化处理各类数据能够在很多程度上简化数据处理过程,减少错误的发生,更容易检查错误,而且能够对数据进行更为复杂的处理。
国外这边的课题组,编程基本是每个研究生必备的技能。现在python在这里非常流行,它简单易学,处理数据能力强,还能方便的用数据绘图可视化,配合git+github也能方便的进行数据备份,检查,非常方便。
团队层面
交流工具
现状
国内科研人员的交流工具主要是QQ,微信和电子邮件。但这几个都有各自的缺点。QQ和微信没办法永久保留文件。邮件交流互动性和及时性比较差,文件大小也有明显限制。
需求
科研人员交流,具有以下特定:
- 能够双人/多人交流
- 小组,一个人会有不同的小组
- 经常需要传递文件和图片
- 文件/文字的要长期保留
- 文件内容需要多人能够修改/评注
- 要能通过关键词进行文字/文件的查询
- 团队或小组日程/通知功能
推荐方案
Paul课题组使用Slack+google drive的方式进行团队交流。Slack是一款交流工具,可以直接在网页上/电脑上/手机上使用。具备上面所说的功能,通过把文件放在drive里,通过链接放入文件。
国内不能用google drive,但可以使用其他类似的代替品。
国内也有专门的协作配合的软件,把科研交流集中起来,能够更方便团队协作。
但我并没有对国内的这些工具进行过调研,尚不清楚最好的方案。
项目文档管理
进行一个科研项目的过程中,会产生非常多的文档。这些文档分布在课题组的各个成员手中,由课题组成员创建与更新。这些文档作为项目过程中的重要资料,也需要记录与管理。
现状
目前,课题组对于项目文档的管理存在一些缺陷。
- 一个课题组成员创建了文档,里面包含了一些更新的设计参数和方案等内容。但其他成员并不知道,依然在使用比较旧的版本。在设计不断迭代更新的过程中,不同课题组的成员经常使用了不同的参数。
- 项目设计报告,论文等基本都是在结题的时候收集整理。对于时间跨度较长的项目,很多报告可能存在找不到了,有些报告是最新版还是已经淘汰的版本不明确。
- 查看组内其他人写的文档不够方便。有时不知道自己的师兄/师姐以前是否有相同或相似内容的报告。不知道自己用的一些参数是否有在其他报告中有更新。
- 文档之间相互引用非常不方便。一个项目往往涉及到多个方面,某个组员A做的工作,他的输入参数和设计是来自于另一个组员B,他的结果可能会被组员C使用。但是现在我们课题组的相互引用仅限于论文的引用。但是在设计工作中使用的设计参数很可能相对于论文的内容是有更新的。
项目文档管理建议
建议项目文档:
- 集中管理。Paul课题组是将文档放到google drive,然后根据子方向分类。所有人都能看到全部的文档。
- 更新时组内审核。更新报告文档时,还需要相关的上下游同学确认参数。
- 引用和更新通知。建议在文档中加入引用和被引用内容。引用其他文档的数据和参数时,在本文档中著名哪些参数是引用自哪篇文档;同时在被引用文档中加入说明,说明被引用文档的哪些参数被另一篇文档引用。这样,当一个作者更新某you篇文档时,他就可以通知那些引用这篇文档的人文档有更新。
这样管理文档的话,相信可以使得大家对其他方向的同学的工作有更多的了解,文档的更新也能更加方便,避免了课题组不同同学使用不同参数的情况。
备注
上面写到的一些建议,是基于美国Paul课题组和国内课题组的情况,结合我自身的感受想到的内容。 这里只涉及了科研工具方面的内容。美国的研究生培养模式还有很多其他方面与国内差异很大,但是我现在对那些差异也还没有很好的了解与理解,因此没有提及。
另外,我个人认为比较好的改进,其他同学可能并不觉得好。做出改变也需要花费时间和经历,还是需要根据实际情况与效果做决定。