发现每年都有一批人(主要是本科生)连科研是什么都不知道,就要申请博士;每年也都有人在申请之前纠结,到底是否应该为了奖学金而申请读5年博士?我适合做学术搞科研工作吗?

不同专业的人对什么是science什么是research定义截然不同。我记得当年在学校里就有其他系的老师问过,你们Computer Science那能叫science吗?if so,怎么science上很少见到你们cs的科研成果?即使是同一个专业内部,也有一些人瞧不起另外一些人做的东西。中国有个老说话,叫文人相轻。

对于还在申请的人来说,高深的research是什么可能暂时不用考虑,但是你需要弄清楚什么算是科研,什么是应用。

我以CS为例子,每年都可以见到CS的人问,XXX认证是否管用?有没有学校侧重java?读phd是不是要编程很牛?我是本科生,做科研能力不够吧?

说的通俗点,一项technology从头开始,一般经过这样的一个过程:学校或者专门的科研机构
研究新的方法理论,成熟了以后,公司拿去做成产品。产品上市以后,需要工程师能熟练应用解决实际问题。相应的也就产生了各种认证, 来证明该工程师能熟练使用某些产品。然后拿cisco认证的工程师搭建管理网络,拿java认证的工程师编写软件,最后我们这些人作为终端用户花钱买网络买软件来使用。

你要申请美国学校读研究生做科研,是在最上游,你说得认证和java编程,是在下游,很多情况下,仅比最末端的终端用户高一点。

所以说认证对于申请学校没用,所以说没有哪个学校教研究生java。你对网络应用,对操作系统,对编程语言的基本知识,应该是本科期间学会的。

同理,既然读phd也就是在最上游研究/开创新的方法理论,那么你说你的java编程能力对你读好phd是不是最重要的?诚然,做科研也不是说你就彻底不依靠其他的东西,比如说你可能还是要用思科的网络设备,要用linux或者windows系统,要用java/c++编程,让这些成熟的技术,成为你研究新方法新理论的基础;有的美国教授给RA offer之前,也有可能考察你
的编程功底,但是这些基础再重要,也只是基础,不是目标。计算机教授们经常挂在嘴边的,是idea,是你的新颖想法。

至于你是否适合做科研,如果你喜欢想出新颖的idea,只要能high level论证是正确的,而且要么是首创要么比现存的方法好就可以,那么做研究更合适;如果你更喜欢使用成熟技术来解决实际应用问题,如果你觉得摆在你面前的现实产品比数学公式更有说服力,你觉得长时间作些很底层很基础的重复性工作也可以接受,那就不要做研究。

不可否认,有的人的科研做的很出,广受推崇,甚至成为开派宗师,但是很多做科研的,更像是闭门造车,孤芳自赏,你的东西最多也就是你和少数同行觉得好,现实世界/industry 很可能把你的美丽论文当成一堆垃圾 --- 有的博士生甚至自己都觉得自己的科研没用很无聊。

不可否人,有的人在技术应用上也做的很好,很enjoy解决实际问题,也可能拿到很高的报酬,但是大部分做应用的,都是在做重复性基础工作,很boring。典型的就是软件工程师,java做什么的
尽管号称是最有创造力的职业之一,但是在开发一个软件系统的时候,大部分工程师们往往面临的是低层次工作,按照软件工程的基本方法,按部就班的实现具体的函数功能,占据了大部分时间。


-- Warald