这是篇翻译文章,原文在这里。作者是Jason Eisner,宾夕法尼亚大学的计算机博士。本文写于1997年。生物人类学家 Loren Eiseley曾将科学家分为两类:大家和小家。(他称自己为小家,在科研方向的打骨架中坐着丰富数据的工作。如果Eiseley是个程序员的话,他估计会把自己成为”自底向上“的科学)计算机科学包括很多不同种类的研究方式,其中有一些相对于另外一些很庞大。你可以通过某个方式做出自己的贡献。估计你在计算机科学中能找到的最小研究点就是替换或者实现其他人的算法/工作。这种方式可能对你所在领域或者学习很有用,但无法让你的工作有独创性。当然如果你能使自己的工作对足够多的人们有用(比如,让他具有更好的可以执行和互联特性),你也能有点名气。稍微大点的研究点就是努力寻找改进现有著名技术的方式。(在很多子领域,别人更期望你的工作能确实带来改进).大多数的研究都是这种。读论文的时候,注意文章中的关键条件和问题。实际中,注意作者在他的机制中使用到的有害简化或者太过随意的假设。这些地方都是你能做的与众不同的机会。另外,还有个稍微大点的研究。针对两个或多个算法,通过一些客观的效率、准确性测量方式评估他们。设计一个合理清晰的对比,并且实现并给出对比结果,通常需要大量的工作。这个研究的好坏,不仅取决于需要多大的工作量,而且还需要看你所得到的结果是否很出人意料。要知道,这种量化的研究方法正在一些重要的领域变得越来越重要。(如操作系统、机器学习、自然语言、算法).写综述:你可以透彻的回顾某些领域的已有研究。但要注意,要想做得好,需要花费大量的时间,而且对于你的研究工作作用也不大,除非很多人想读并引用你写的牛综述。(要想发表此类综述,你需要和非常著名的导师一起写这类文章,或者找一个期望接受低水平研究生高层次综述文章的一流期刊吧)。好的方面是,通过写牛综述,你可以成为该方面的专家,可以游刃有余的和其他该领域的研究者探讨。而且可以给你关于过去研究成果的不足之处。而且这种综述对于一个高级本科生、硕士生论文,或者博士论文的第一部分很合适。当然,如果你还是忍不住想炫耀,可以在网页上发布。构建一个大型程序或者设备。这会让你有些知名度,毕竟这么大型的系统还不多,而且这也能证明你可以做个合格的软件工程师。但是,请想清楚:这个系统其他人可以直接用吗?如果不能,它能刷新性能记录之类的吗?如果还是不能,它还有其他的长处吗?比如,能演示如何整合和扩展已有技术,或者能引入新的技术或者前景。如果你只是实验室若干工程项目中的一个参与者,那么请务必确保你自己有独立的贡献–这个工作的某些方面让人印象深刻,独一无二,而且其他人的工作和你直接相关。你的领域有很多重大的问题。这种问题通常表现为该学科的主干结构上–问题经常出现,但解决方案却有很多种。了解一些这种问题和已经针对此类问题展开的工作。如果你发现了能首个解决此问题,或者找到更好的解决方案,或者有不同的解决方式,这就是个大发现!通常,寻找好的解决方案都需要稍微改改这个问题本身。如果你壮志踌躇,而且励志做大的科研,那就需要研究计算机分支中你所在的分支中著名的论文,了解一些相关会议上其他人都在做什么,并且多问问自己,在这个领域,是什么已经被发现的或者未知的问题阻碍了发展?我能解决吗?如果不能,我能先形式化他们吗?我能证明给同事们看,解决这个问题后会有什么不同吗?和你导师聊聊目前已经研究透彻的领域。每个领域都有些共性的问题,“有点重要”的问题,这些问题可能被提及和诺,但是还没有人做个认真的尝试。如果自己觉得找到了这样一个问题,别忘了向你的同事,以及图书馆求证这个问题还未被研究透彻。最后,你会找到一些有趣的问题,而且通常都不是听起来那么难。 研究已有的(已经使用的)系统,关注哪些地方它们做的不好。如果你的领域是交叉学科,多询问另一学科的人感兴趣的是什么。实际就是问他们为什么计算机科学家都不着边际的乱弹。在很多领域,数据已经给出了存在的问题。语言学家能在任何一本杂志文章里找到不能解释的现象。系统程序员能在实际磁盘访问中收集数据,研究如何通过正则的方式表达。程序语言理论学家能够学习实际的编程语言,图形程序员能实际观察真实的图形和动画,只是不知道如何捕获他们。请务必谨记:有很多的研究可以做,所以你可以选择某个领域。(即使你的导师是个实干派,你仍然有很多的选择).所以,尤其是当你在考虑非常耗时的工程时,要做好打持久战的准备,并且问问自己。这个项目是不是真的能:让你学到很多?带来更好的项目?能让你享受自己即将花费的时间?能让你从现在起坚持6个月、12个月甚至48个月的时间,仍然觉得很有价值做下去?从某种意义上,有成功的希望?(比如:能以此为话题,带来一个有趣的报告或者讨论)让导师不会太责怪?让整个学术界对你和你的工作感兴趣?给工业界的人证明你所做的工作正是他们需要的?让你成为所谓的“优秀毕业生”?最后:现在你终于在研究生院了,没人为你设置课表和日程,你所做的每件事都是无期限的。这就意味着你很容易花费很多时间在任何一个任务上,尤其是固执的要求完美或者重复体力活的任务会让你觉得工作永远不会足够好。或者自己的潜意识在逃避下一个研究阶段。不要花费过多的时间在背景阅读上。你要意识到自己的工作肯定会在充满未知的情况下展开。你没有时间来学习所有你需要知道的事情。没什么,你的导师也是这么过来的。实际上,这是好事,因为未知让你的思想没有束缚,可能会有新的灵感迸发。所以,早点开始做自己的思考。你可以边做边读,只需要周期性的把你自己的想法告诉那些能在相关工作上给你指导,并推荐你读哪些相关论文的人就行了。不要在某一个问题上花过多时间。没有哪个解决方案是完备的。着力提高自己工作的健壮性,让自己的工作更好看些,更方便的秀出来。关于《编译点滴》的定位和未来