尬聊系列之一---生信编程初学
出发点
大半年了,我没事就会在课题组内发一些脚本需求,希望通过这些需求来驱动课题组内成员的编程学习与提升,争取尽快能找到一个可以替代我的人。稍有进展,但仍不太快。转念一想,是否组内真的需要有能替代我的?故有此文。
学习生物信息到底要不要学编程
生物信息专业的朋友便无需考虑这个问题,毕竟是本行。而对于其他生物相关专业的朋友,事实上,不会有太少是不得不,更或者随大流地进去生信学习大军。到底需不需要学编程。我个人觉得,这一块的朋友在科研成果上,往往是干湿结合;那么如果侧重的是分析,则可能真的不得不学一些非常基础的;而如果侧重的是实验,则正好相反,需要做的可能是了解清楚并使用已有的工具,有必要的情况寻求科研或者商业合作。毕竟,每个人发挥擅长的,或许才是最有成效
编程要学到咋样?
目前市面上,各种生信N个任务,或者生信M个题目…我个人其实不感兴趣,毕竟我似乎没有认识的某某是通过刷这些题目而写一首好脚本的。相对而言,我觉得所谓的生信编程题目,最适合的并不是作为训练,而是作为测验,亦即,如果你会,那么你行;如果你不会,那么你需要更多的学习,而不是来刷题。
这似乎跟某些技能的日常应用和考试是一个逻辑。类比一下,你的六级考试666,然而你却说不好英语。
我个人觉得编程学习的逻辑应该是,了解一门语言,如果是第一门语言,应该是看经典的入门书(或者适合自己的入门书),刷书里面的题,随后再做一些带有自身需求的生信编程项目。这个说法似乎跟前述的生信N个任务或者M个题目有所矛盾。
其实没有。一本经典的编程入门书,往往是一版再版。后面的题之所以设置,事实上是带有训练意义,也往往是书本作者教学经验的归纳。相比之下,目前可见的生信N任务与N题,自然是有适合生信入门的朋友所需要的。但是否是合适的编程规范和思维形成,则并不说。
这也可以让我们看到存在部分公众号,为了某种商业化目的,其实本身初学并指示掌握了软件的使用,即推出各种绘图教程,如经典案例,某某用了Y叔的clusterprofiler,除了一个其实诡异的富集气泡图。对于真正要学习的人,到底是好是坏,更不谈各类培训班。有时候,我想想,到底是谁给你的自信?
看完书之后,要做些自身存在需求的或者课题组有需求的项目,而不是刷别人的题。我本身是做非模式生物较多的,所以并不是别人给的题目就适合自己的需要,更或者回事我们最终需要掌握。
编程的学习也需要一个正反馈过程
做自身有实际需求的项目 与 所谓刷题 ,所最大区别,事实上即是 完成之后的正反馈。
此点才是促进个人进步的最大动力。
想想为什么有些人会继续写博客,有些人会持续不断的开发新的工具,有些人会热衷论坛与公众号的运营,
一方面是兴趣(这点是扯淡的),更重要的是另一方面,存在一些持续的正反馈
那么我的想法
所以生物背景的朋友学习编程,我觉得需要确定的可能有:
到底需不需要学习
到底要学习到什么程度
找到兴趣或者放弃
看书,完成一些有趣的项目
完成一些自己有需求的项目(当然可以参考从一些生信M题),但最重要的还是从课题组出发
最后,还是自我定位 ==》 我与课题组的师妹聊过之后发现,她的定位很清晰,以后开展科研是要像现在课题组PI一样,那么其实,我给她在编程上的建议,大部分其实并不需要或者不合适的。
生信学习,其实真的不要相信任何人,应该相信自己,审视所有人的建议,包括这篇推。
再声明
本推文出发点就是……个人觉得有趣
本推文已尽可能地保证零基础的朋友能在windows下完全重现,但不保证每个人都能重现。毕竟我没有义务。所以最好不要针对本文的步骤向我提问(星球的朋友除外),近期赶课题,木有时间。
(另,个人时间和精力有限,大群可以学习交流,但我不一定会回复(也没有义务),直接私信我讨论交流的朋友,请先微信转账或附图支付宝转账-)。