先说结论,科研与工程能力培养并不冲突,两者没有前后之分,相反是一个螺旋上升的过程。
没有engineering能力的科研工作者是老板和coauthor的负担,而且也不利于你独立科研并把精力花在学术创新思考上面。而拥有科研能力能让你在工业界的时候提纲挈领看待真实问题的关键,乃至高瞻远瞩的去预测趋势,从而去规划做一些影响力更大的事情,避免成为照着别人的design doc写码的机器。
过去的博士五年我都呆在微软研究院直到最近离开。这是一个介于学术界和工业界之间的“两面派”,一方面可以看到真实生产场景里的系统(比如推荐广告的线上系统,成千上万的GPU构成的生产集群),知道一些业务算法前进的方向(通常来自于Google的paper)和需求(多大规模的数据量、时效性等);另一方面你的paper的系统实现原型在git repo中可能只有你自己以及至多一两个合作者的commit,也没有design doc/design review/code review等完整的软件工程流程(相信学术界亦是如此),你自己得为自己设计实现的系统负全责。而回过头来,科研并不追求完整的end-to-end system,科研的目标是创造新的知识,为行业发展指明正确的道路,这使得高效的科研工作重在主干系统的构建和发明价值的展现,而应该忽略一些边边角角的问题。在工业界中造一个新的系统会遇到很多dirty work,最基本的就是跟已有系统的数据对接,与上层业务的接口等等,这些琐碎的必须工作并不会对科研工作本身带来任何价值,而你的时间又非常宝贵。另外就是一个对自己负责任的人应该去不断思考自己要的是什么,做高质量开源系统是真的有很大的工业界影响力,同时也耗费巨大的精力,但是很遗憾的是这些并不能真的证明学术水平,或者功利的说,不是大的有创新价值的部分无法写进paper。学术界成就和工业界影响力两者兼得的系统科研工作有,但是少之又少,有一些我是真的很佩服的,比如说UC Berkeley那帮做system的人能不断在科研的同时发布高质量的系统,以及对近几年DL学术和工业界带来深远影响的 @贾扬清 的Caffe和 @陈天奇 的TVM这样的系统。
在过去的五年,我在MSRA认识了很多前来实习的同学,分布于各种年级,从大二到博五。其中有工程能力很强的大四小鲜肉两三个月徒手撸FPGA上的redis最后中SOSP的,也有ddl前老板都得帮着修python代码bug的高年级博士生,你愿意当哪一个呢?所谓博士学位,其实是对于一个人能够独立做科研工作的标签。其目标是产出科研成果,而独立的工程实现能力是基本素养。就题主描述的状态来看,这两个方面都还需进一步的锻炼,所以现在选择做哪一个都不会有错,重点是现在就要行动起来!
很少在知乎上看到要读System或PL的PhD,一点鸡汤不成敬意2333
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有