用版本控制概念来管理若干个长期课题

Update:怎么本文这么多人点进来看?我知道了,是我的题目太像那种“分享经验”、“多图”、“教程”之类的标题了。哈哈你们被骗了!本博客不是那种讨好读者赚流量的博客,因此我是不会花这么多功夫搞什么“多图”“教程”来“杀猫”的!

从我老板回国做聚电解质凝胶开始,我们组做物理凝胶化已经快二十年了,现在还要经继续做。关于凝胶化的研究当然会产生关于凝胶材料的研究。前者为后者提供新的idea,后者又会为前者提供新的idea。其他领域和课题组的工作也会给提供新的idea。以前曾经做过的东西,在有了新的手段和仪器之后又可以炒冷饭继续做。我知道作职业的科研工作者80%其实是跟着申请基金来跑,有哪笔钱就做哪个课题,不由得自己作“长远规划”。于是,断断续续或者“遍地开花”或者“过期不候”的情况都很常见。如果能把版本控制的概念应用到个人科研职业发展中,就可以尽可能的让曾经有过的原创性思想不至于在长期的“围着基金转”过程中消逝。没钱的时候只做了一点的事情,有钱的时候想捡起来做,不至于重头开始。

现在的Good Laboratory Practice(GLP)已经比较好地保证了科研记录的延续性。你想捡起以前的课题,当时的实验样品和记录在GLP的保证下应该是可以很方便的访问到的。但是,从我个人的经验来看,更有价值的不是这些,而是当时在做课题的时候所做的各种笔记、文献总结、小综述、学位论文等。如果连这些东西都track下来,而且全部都有history可查,就会是一笔比较可观的思想财富。在云计算时代,这些东西完全可以用版本控制对课题组范围内开源。

当然,真正让所有课题组成员上网并统一学习使用Git命令,还是一个遥远的理想。现在课题组连个公共ftp都没有,用QQ群来进行事务通知,定期开一下组会似乎已经解决所有问题了。其实所有Web 2.0和类似的新技术要真的能发挥其所声称的效率提高,至少需要所有人都能很好地掌握这一前提,因此是很难真正实现的,哪怕借助行政力量。在现有的Office 2003+QQ的work flow基础上进行的创新才有可能大受推广。不过,对于个人而言,只需要你自己是个所谓的geek就足够了。我已经使用Git来管理一个LAOS程序的设计过程。最近由于写毕业论文而没有更新这件事,但毕业论文其实也可以通过版本控制来管理。尤其是一些在写稿的中途添加的内容,最后由于篇幅和其他原因删掉的,如果有了版本控制,这些内容不至于永久消失。而且,毕业论文的目的有可能是多方面的,一方面是要应付毕业,另一方面是为博士期间已经做了实验进行总结,我个人还有第三个目的就是按照博士课题的目标完成该完成的实验,进行该进行的总结。而博士三年很可能并没有完成该完成的实验,很多实验可能根据现有结果需要改进后重做,才能更好地说明现在想说明的问题。但是最终只会有一本学位论文,这个于是这个学位论文必然是上述多个目的相互妥协下的产物。但是有了版本控制,你可以为每个目的设立一个brach,最后根据时间所允许的先后次序完成各个branch,最后使得你博士论文的三个目的都能尽善尽美地达到,而又不因此发生“错过毕业”这种牺牲。这可能只是我个人性格所产生的意图,于是就不需要其他人的配合,Git有多geek,都没所谓了。

我觉得,系统地学习过程序开发,对一个人的思维方式会有很大的影响,尤其反映在科研上面。因此我觉得给化类专业的学生开设C++或者SQL课程并不是“乱来”的。关键在于在此情况下课程的重点是放在概念和算法上还是实际开发上的问题。这个跟“学数学有什么用”的问题是相通的。