程序员如何自学生物信息学

缘起豆瓣上Yummy同学的询问:Programmer如何自学Bioinformatics。在经过一些思考之后,以下是我的回复:

Hi, Yummy, 个人感觉你给自己身上压的担子太重了,这个有那么多书要看,那个有那么多基础要学,最终可能会把初始的兴趣给磨掉的 — 依据兴趣而来的学习、工作,总是轻装上阵的比较好。

不确定你自学Bioinformatics的目的是什么,如果你自学Bioinformatics是想玩Paper找教职呆高校研究所的话,那就没有必要学习Bio的东西,也没有必要学习Perl或者Python。找个你信得过的Bio背景的人做搭档,他/她提供数据/需求,你来做分析/实现,最后一起发Paper。需要用到Perl的时候学Perl,需要用到Python的时候学Python,需要用到统计的时候学统计 — 以你多年的开发经验,拉起一门编程语言翻上一星期书也就够了(当然,代码质量可能差点,但一上来实现想法/功能的时候代码质量没那么重要);统计也许麻烦点,但也不会麻烦太多。

如果你自学Bioinformatics纯粹只是出于兴趣,出于对生命科学领域的爱好,或者对未来该领域产业化的看好,而不在乎是否发什么Paper,那么上面很多同仁的建议都是可以商榷的 — 个人认为,上面的大多数建议都很好,但很多都是从发Paper的角度来给出的建议。

另,我认为上面很多同仁把你进入生物学领域的难度给夸大了。

生物很难吗?Yummy你应该已经看过一些生物学的书了,不管是普及性的普通生物学也好还是看似高阶的生化分子也好,你有没有发现一个现象:生物学里面知识性的东西很多,非常多,但是技能性、推导性的东西很少,非常少,仅有的一些推导性的东西也往往以Boolean运算为主。什么情况下学习知识性的东西会感觉很难?我个人认为是对文字描述理解困难的时候会感觉很难。但那并不意味着生物学本身很难,而是教材没有编好的缘故。举个例子,沈同、王镜岩的《生物化学》,这部教材在国内已经算好的了,但里面还是充满了很多令初学者百思不得其解的描述,配上质量并不上乘的插图,读起来确实很难。但是相同的内容在Lehninger的Principles of Biochemistry里面,通俗清晰的描述配上高清的插图,理解起来几乎可以不用转动任何大脑。这就跟谭浩强的C教材一样,C语言的语法规则其实很简单,薄薄的一本The C Programming Language就足够了,但是谭的教材写那么厚,又错误百出,所以自然就难了。

想要理解Bioinformatics结果所需要的生物学知识很多吗?我觉得未必。我认为本科阶段的生物学知识就足以理解大多数Bioinformatics的结果了,如果还有不理解的,通过Google也可以在短时间内掌握;而本科阶段的生物学知识多吗?看上去多,不算上宏观生物学的话,也有生物化学、分子生物学、遗传学、细胞生物学等等,但从教材目录上就可以看出来,这些课程(本科)的重复性比较大,经常是生化书上学到了,分子生物学课堂上再教一遍。所以我认为,需要学习的生物学知识并不多。以BLAST为例,理解这个东西都不需要去额外学习什么分子生物学,高中生物的知识就足够了:知道碱基ATGC,知道DNA是由碱基组成的序列就够了,BLAST说白了不就是对两段字符串进行比对匹配么,这个在本质上和你做code review的时候生成的diff文件又有什么区别(当然,算法上是不一样的)?

如果嫌只看书跟不上最新的研究进展,那么可以去找近年来Nature, Science或者Cell这些好杂志上面发表的综述Paper (网上找找,可以下载到),挑一些感兴趣的来看看,也就够了。

我个人的建议:

  1. IT方面的工作继续干着,票子拿着,业余时间玩玩Bioinformatics。从你感兴趣的方向入手(e.g. 基因,癌症),先看些普及性的教程(基因是什么,癌症又是怎么回事),然后再遵从自己的兴趣深入看一些东西(比如,癌症的产生),碰到不明白的生物学概念直接Google就是了,一直follow the heart,东西看多了之后,自然会有一些使用计算机技术来做些事情的想法与冲动 — 根据这些想法做就是了。也许会有人说,这只是自己玩玩而已,并不解决实际科研中的问题,并不解决Biology的问题;可关键是:你为什么要去解决别人的问题?如果那些所谓的Biology问题并不是自己真正感兴趣的,那还能持之以恒的继续下去吗?业余玩票也能够玩的很好,而很多专职从事科研的人都不过是挖空心思发Paper罢了。

  2. 如果你不想继续在IT公司干,想去生物公司,那么建议去大型医药企业(阿斯利康、GSK etc.)的研发中心,那里也有生物信息相关的软件开发职位。

  3. 如果你很有钱,以后也不用再考虑家庭经济的限制,那么建议去美国名校找个好点的老板读Ph.D。但如果你现在上有老要孝,下有小得养,那么就不建议走这条路了。

祝好运