前几天跟一个牛人聊天,话题是关于system research。
牛人说,做system research很难。在很多领域(比如俺以前的NLP),你可以做一些很理论化的东西,或者简单实现一个算法跑一跑实验,如果结果好的话,你就可以去发paper了。而做system research的人,他们就需要去搭建一个大的system,无疑工作量要大很多。此外,在一些领域,你可以事先假定一些条件,在这些条件范围内来进行你的工作,更有意思的是,你假定的这些条件可以是理想化的,或者可以是现实当中不存在或者无法达到的。比如做NLP,做分词,我就可以假定词与词之间的联系只是一阶马尔科夫链,但实际上,这个条件毫无疑问是不可能的。做system research的人则不同,他不可能基于一些现实中不存在的条件去做他的系统,你总不能宣称说我的系统性能非常好,不过前提条件是内存无限大。所以做system research的人总是非常的实际,因为他们大部分时间都花费在了解决非常实际的问题中,他们的工作首要是能够在实际中运转起来。
所以,你也许能够看见一个做database或者NLP的博士期间在SIGMOD或者ACL上发表过近十篇paper,但是一个做system research的博士期间能够发表一篇SOSP就已经很不错了。
牛人还说,做system research虽然难,但是收获也很大。一者,做system research的人对于技术的taste会很好。就是说,对技术的感觉或者直觉会很好,这样,在项目或者研究一开始的时候不至于选错方向。二者,能够学到很多东西。做system research的人需要接触到很多的知识,而且这些知识都是Computer Science最核心的那部分。
以上内容来自于一次讨论,俺随笔记下,对内容的正确性不做任何承诺,仅自勉之。
为了更好的佐证以上的部分观点--"假定一些很理想化的条件",转一个joke:
There's this farmer and he has these chickens but they won't lay any eggs, so he calls a physicist to help. The physicist then does some calculations, and he says: "I have a solution, but it only works for spherical chickens in a vacuum".
——Leonard, The Big Bang Theory, S01E09