说说PhD那些事
82110119
PhD已过大半了,以下是我的个人体会与大家分享,希望大家少走弯路,做好规划。
1. 导师
其实大部分phd招进去的时候导师已经定了,但是还是说一下吧。
从工作style上分,导师有2类,就是俗说的push和不push。push的导师往往要求你经常向他汇报结果(可能每天),深夜给你发email,如果你几天不干活或者vacation他就会不爽。不push的导师往往给你较大空间,但并不代表不管你,我后面还有说明。我个人认为 不push 的导师好,至少不会给你造成很多人为精神压力。当然你需要有一定的自控力。从我的感觉看 导师push 和phd的成果之间没有必然关系。
从advise的style上分,有 hands off 和 hands on。 hands off 的导师给你在科研海洋中探索的自由,往往鼓励你自己想idea,而不是给你idea让你做,当然有些hands off的导师是因为太忙活学生太多。 hands on的导师会一步步引导你做project,至少在phd的初期。我发现 hands off 类型导师的学生的成就方差很大,有可能成为大牛,也有可能发展的不好。hands on类型的导师学生方差会小,结果就是总是能发一些paper毕业的。我个人倾向于 hands on 的导师,尤其对于idea不是很多的phd学生来说。
从导师的影响力来说,可以分为已经奠定声望的领域大牛或冉冉之星。个人倾向于领域大牛。跟一个大牛导师的好处是:paper的录取率可能会高一些(但不会太明显,因为现在好conference基本都是双盲审),你毕业以后无论去学术和工业界你的老板推荐有分量,你几乎会有被你老板refer去审稿的机会,你的paper引用次数可能会高,因为大家会关注大牛文章。(注意我用了 “可能”和没用“可能”的地方。)BTW,phd初期注重自己能不能文章录用,后来会比较关注自己的文章会不会被别人引用。而且引用次数对于审绿卡很重要。
绝大部分导师分布于我以上分析的各种分类的组合空间。最好的组合我想是:不push 并且 hands on 的大牛。如果一定要取舍,我觉得可以接受push的导师。
当然很多时候导师是无法选择的,所以这个东西不要去纠结了,我们只是希望在给定的条件下做到最好。
2. 研究课题的宽与窄。
我以为这个问题没有固定的答案。如果课题宽,一般你就能涉及多个问题,接触的面广,但同时也意味着你很难有精力在某些方向上深入。如果课题窄,你可能会做的很深入,但局限性比较大。我觉得如果准备去工业界,课题应该做的宽些。原因是 exact match 几乎没有,你如果做的太窄了,公司不需要那个东西的话就没太大机会了(纯research部门除外)。如果你做的比较宽,适用范围广,公司可能会因为你在多个方面都有发展前景而雇佣你。毕竟公司的project也会一直变的。如果想去学术界,就真的不好说。从我观察系里的faculty search的情况看,研究面太窄是个劣势。毕竟学校也有match的情况,比如学校希望找一个老师同时他可以教某一门课。Candidate A 在一个小方向上很牛但没有表现出教那门课的能力, Candidate B 虽然略差于A 但他似乎方向广,可以教那门课,那么B就有很大优势了。Department里面的有些事情Candidate是不知道的。如果PhD方向过窄了,postdoc应该有意识的把自己方向放宽些。
3. 选课
作为PhD,应该在初期选跟自己研究方向有关的课,这点没有争议。有争议的是 是否应该选 跟自己方向关系不大 而又是CS的核心方向并且很重的课。比如做 vision 的人选不选 algorithm 或 os 呢? 个人觉得要看自己的背景。如果本科这些课的功底很扎实,比如算法自认为没有问题,这种情况可以不选。如果转专业过来或者自己当时这些课混过去的,那一定要选。这些是基本的,到时候Phd毕业了 二叉树,深度优先搜索 或者 动态规划 都不知道的话 确实是比较丢人。还有也要给自己留个退路,万一以后就决定找 SDE 了呢。 同理,不管你什么方向,coding能力还是要加强加强再加强。尤其theory的同学,平时coding机会 不是太多。
4 编程语言
你会发现你的research code基本都是用一种语言写的。如果这种语言不是常见popular语言怎么办。很多情况下你所使用的语言和你的领域有很大的相关性。比如 system,network的人用 C 的很多, 数据库 的人用 java 比较主流, vision和machine learning 用Matlab, graphics用c++甚至GPU, theory的人用笔写 等等。 语言本身是相通的,但是一直用一种语言必然会导致另一种语言的生疏。我觉得底线是不管你用哪种语言,你一定要熟练掌握 c++ 或 java 中的一个。比如做vision的人 你必须 熟练 c++ 尽管你不用 c++ 写research code。 基本要求就是 你能够拿一道面试题 用 c++ 编出来。当然一般公司雇佣phd并不是看重你这个能力,但是这是基础,是属于你是phd但是不会这个是很丢人的。
5 industry vs academia
我知道很多人phd都是想去 学术界的,但是我非常负责任的说 “除非你是很杰出的phd牛人,不然不要考虑academia”。因为去学术界非常难。想去学术界不仅科研要非常非常好,而且出身要非常好。如果把学校分一下,tier1: standford berkeley mit cmu, tier 2:其他前50的学校 tier 3: 50以后。有一个普遍情况是 tier1学校几乎只招tier1学校的毕业生。tier2 学校candidate很大的比例是tier1学校的毕业生。tier3学校几乎只招tier1或tier2. 当然特殊情况是有的,但现在看就是这个pattern,请对号入座,同时别忘了research做的非常出色是基本前提。还有的情况是,尤其是在私立牛校,faculty的教学任务是很重要的一部分,中国学生表达的劣势是很吃亏的。这个劣势在学术界会被放大很多,相比于工业界。
6 实习
这个问题我和系里的phd讨论过。大家比较公认的是 有机会去research的实习(以发paper为目的)很好,如果是纯工业界实习(不以发paper为目的)的话要看情况。首先看的第一个情况是 方向。如果是偏system方向的纯工业界实习我觉得挺好的,因为去大公司感受大系统是很重要的,对拓宽视野有很大的好处。说实在的在学校里做的东西其实比较小打小闹了,也许创新性是高,但是从产品角度看很差的。有机会从工业界视角看他们的project是很有好处的。对于vision ,machine learning什么的纯工业界实习就意义不大。事实上有些phd说他们后悔去纯工业界实习了。第二个情况是对自己和自己学校的定位。如果你是stanford的,哪怕你没做过实习,但是有很好的科研成果,去顶尖公司也是没问题的。如果你是一个很一般的学校,可能去GOOGLE MSFT 的实习会是你的一个亮点。这就如同什么是你的亮点,如果你是 mit毕业with very good research的,这个亮点override工业界实习了,那么工业界实习就是一些minor plus了。如果你是很一般学校,你可能需要一些big name的工业界实习作为你的亮点。总的来说综合这两条。有机会去大公司research实习的话是非常好的机会,要抓住。
7 每周工作时间
这个问题没法回答,每个人的情况不一样。有人几乎一直在实验室的,有人比较清闲。我观察看平均时间在40-70小时左右之间。实际上效率远远比绝对的时间重要,其实如果你能一天保持高效8小时工作,一周6天,也就是48小时高效率,已经足够了。因为这个工作是一个需要思考,需要创造力和一些灵感的,所以一味增加时间其实可能有负面效果。平时要适当的放松自己,不能把神经绷太紧,不然5年时间一直绷那么紧精神会崩溃的。以前经常喜欢熬夜考前抱佛脚的同学要注意了, that working style simply doesn't work. 咬牙跺地的说我接下来2个月天天干到2点一定发一篇top conference的思想是不管用的。当然在paper deadline前适当绷一下是正常也应该的,但不能成为你的常态和节奏。每天做一些,每天有一点斩获比拼命一个月,然后彻底放松1.5个月要好得多。PhD是一个马拉松 不是百米。
8 动机
读phd最重要的动机一定要是 passion。要有非常强的passion,不然这个过程会很辛苦。那么有什么其他动机呢,比如有人说想读PhD是因为想提高自己,并且把这个理由写在PS里面。大家觉得这个东西会给professor的印象加分还是减分呢?诚然提高自己是没有错,但其实这是经历PhD以后自然的结果。如果把这个作为动机就有点问题了。原因是提高自己的方法很多,你去公司工作6年难道提高的就一定比phd少吗,未必,更别说经济上了。如果你的动机是提高自己,试想你的phd如果不顺利的话你会想还不如当时去工业界呢,不照样提高自己。。。从另一个角度说,如果动机确实是 passion,那么即使你的phd可能不顺利,你还是会坚持下去,毕竟这项工作对你来说有乐趣,你从心里愿意去做,你会缩小phd给你带来的苦恼而放大它给你带来的快乐。有些人读了phd以后做的不开心,不顺利,但是他们有坚强的毅力,最后通过重重努力拿下了学位,这些人当然值得尊敬,但对于他们而言,这么有恒心和毅力能把自己不喜欢的事情都做好,他们去公司也会混的好。这就是机会成本。不能只看到你phd毕业时水平比刚读phd时高就满足了,毕竟6年时间谁不提高,要看的是如果你把这6年时间放在别处是否会给你的人生带来更大的愉悦感,经济的回报,和未来预期的收获。
9 止损意识
一直说phd是人生很大的投资,既然是投资就有可能成功或失败。止损意识就是当你意识到大量迹象表明你可能会往失败的方向发展的时候你应该有什么举动。我的理解是 给自己两年时间,全身心的投入研究,如果仍然建立不起兴趣或者仍然觉得过程非常不顺的话,也许是离开的时候了。这不丢人,phd drop率很高的,没人会看不起你。为什么是2年,因为2年时间基本是一个新手进入某个领域开始研究后应该出成果的周期了,同时它又是一般master所需的时间。这个时候退出损失很小的,当然前提是能够有master学位。不要因为你所在的学校是牛校所以留念那个牛校的phd学位而苦苦挣扎,无数例子证明大部分这样挣扎的人都会后悔。其实你有牛校master也混的开了,你的能力还是要强于你们学校master的平均水平的。同时你也可以看出为什么我是一直认为phd要去好学校的,因为好学校的phd是进可攻退可守的,大不了drop了那master走人。而一般学校drop的话master的分量就低了。总之有一点,这个决定要做的果断,是继续还是离开,千万不要犹豫,一犹豫可能就是1年没了,到时候已经过了3年你想再离开就不一定能下得了决心了。如果把这个过程想成股票,你买了这个股票如果跌了,你已经损失了,有些人割肉出来了,而有些人一直想也许明天就会涨。其实做股票也就是钱的问题,phd是时间和青春。
待续
1. 导师
其实大部分phd招进去的时候导师已经定了,但是还是说一下吧。
从工作style上分,导师有2类,就是俗说的push和不push。push的导师往往要求你经常向他汇报结果(可能每天),深夜给你发email,如果你几天不干活或者vacation他就会不爽。不push的导师往往给你较大空间,但并不代表不管你,我后面还有说明。我个人认为 不push 的导师好,至少不会给你造成很多人为精神压力。当然你需要有一定的自控力。从我的感觉看 导师push 和phd的成果之间没有必然关系。
从advise的style上分,有 hands off 和 hands on。 hands off 的导师给你在科研海洋中探索的自由,往往鼓励你自己想idea,而不是给你idea让你做,当然有些hands off的导师是因为太忙活学生太多。 hands on的导师会一步步引导你做project,至少在phd的初期。我发现 hands off 类型导师的学生的成就方差很大,有可能成为大牛,也有可能发展的不好。hands on类型的导师学生方差会小,结果就是总是能发一些paper毕业的。我个人倾向于 hands on 的导师,尤其对于idea不是很多的phd学生来说。
从导师的影响力来说,可以分为已经奠定声望的领域大牛或冉冉之星。个人倾向于领域大牛。跟一个大牛导师的好处是:paper的录取率可能会高一些(但不会太明显,因为现在好conference基本都是双盲审),你毕业以后无论去学术和工业界你的老板推荐有分量,你几乎会有被你老板refer去审稿的机会,你的paper引用次数可能会高,因为大家会关注大牛文章。(注意我用了 “可能”和没用“可能”的地方。)BTW,phd初期注重自己能不能文章录用,后来会比较关注自己的文章会不会被别人引用。而且引用次数对于审绿卡很重要。
绝大部分导师分布于我以上分析的各种分类的组合空间。最好的组合我想是:不push 并且 hands on 的大牛。如果一定要取舍,我觉得可以接受push的导师。
当然很多时候导师是无法选择的,所以这个东西不要去纠结了,我们只是希望在给定的条件下做到最好。
2. 研究课题的宽与窄。
我以为这个问题没有固定的答案。如果课题宽,一般你就能涉及多个问题,接触的面广,但同时也意味着你很难有精力在某些方向上深入。如果课题窄,你可能会做的很深入,但局限性比较大。我觉得如果准备去工业界,课题应该做的宽些。原因是 exact match 几乎没有,你如果做的太窄了,公司不需要那个东西的话就没太大机会了(纯research部门除外)。如果你做的比较宽,适用范围广,公司可能会因为你在多个方面都有发展前景而雇佣你。毕竟公司的project也会一直变的。如果想去学术界,就真的不好说。从我观察系里的faculty search的情况看,研究面太窄是个劣势。毕竟学校也有match的情况,比如学校希望找一个老师同时他可以教某一门课。Candidate A 在一个小方向上很牛但没有表现出教那门课的能力, Candidate B 虽然略差于A 但他似乎方向广,可以教那门课,那么B就有很大优势了。Department里面的有些事情Candidate是不知道的。如果PhD方向过窄了,postdoc应该有意识的把自己方向放宽些。
3. 选课
作为PhD,应该在初期选跟自己研究方向有关的课,这点没有争议。有争议的是 是否应该选 跟自己方向关系不大 而又是CS的核心方向并且很重的课。比如做 vision 的人选不选 algorithm 或 os 呢? 个人觉得要看自己的背景。如果本科这些课的功底很扎实,比如算法自认为没有问题,这种情况可以不选。如果转专业过来或者自己当时这些课混过去的,那一定要选。这些是基本的,到时候Phd毕业了 二叉树,深度优先搜索 或者 动态规划 都不知道的话 确实是比较丢人。还有也要给自己留个退路,万一以后就决定找 SDE 了呢。 同理,不管你什么方向,coding能力还是要加强加强再加强。尤其theory的同学,平时coding机会 不是太多。
4 编程语言
你会发现你的research code基本都是用一种语言写的。如果这种语言不是常见popular语言怎么办。很多情况下你所使用的语言和你的领域有很大的相关性。比如 system,network的人用 C 的很多, 数据库 的人用 java 比较主流, vision和machine learning 用Matlab, graphics用c++甚至GPU, theory的人用笔写 等等。 语言本身是相通的,但是一直用一种语言必然会导致另一种语言的生疏。我觉得底线是不管你用哪种语言,你一定要熟练掌握 c++ 或 java 中的一个。比如做vision的人 你必须 熟练 c++ 尽管你不用 c++ 写research code。 基本要求就是 你能够拿一道面试题 用 c++ 编出来。当然一般公司雇佣phd并不是看重你这个能力,但是这是基础,是属于你是phd但是不会这个是很丢人的。
5 industry vs academia
我知道很多人phd都是想去 学术界的,但是我非常负责任的说 “除非你是很杰出的phd牛人,不然不要考虑academia”。因为去学术界非常难。想去学术界不仅科研要非常非常好,而且出身要非常好。如果把学校分一下,tier1: standford berkeley mit cmu, tier 2:其他前50的学校 tier 3: 50以后。有一个普遍情况是 tier1学校几乎只招tier1学校的毕业生。tier2 学校candidate很大的比例是tier1学校的毕业生。tier3学校几乎只招tier1或tier2. 当然特殊情况是有的,但现在看就是这个pattern,请对号入座,同时别忘了research做的非常出色是基本前提。还有的情况是,尤其是在私立牛校,faculty的教学任务是很重要的一部分,中国学生表达的劣势是很吃亏的。这个劣势在学术界会被放大很多,相比于工业界。
6 实习
这个问题我和系里的phd讨论过。大家比较公认的是 有机会去research的实习(以发paper为目的)很好,如果是纯工业界实习(不以发paper为目的)的话要看情况。首先看的第一个情况是 方向。如果是偏system方向的纯工业界实习我觉得挺好的,因为去大公司感受大系统是很重要的,对拓宽视野有很大的好处。说实在的在学校里做的东西其实比较小打小闹了,也许创新性是高,但是从产品角度看很差的。有机会从工业界视角看他们的project是很有好处的。对于vision ,machine learning什么的纯工业界实习就意义不大。事实上有些phd说他们后悔去纯工业界实习了。第二个情况是对自己和自己学校的定位。如果你是stanford的,哪怕你没做过实习,但是有很好的科研成果,去顶尖公司也是没问题的。如果你是一个很一般的学校,可能去GOOGLE MSFT 的实习会是你的一个亮点。这就如同什么是你的亮点,如果你是 mit毕业with very good research的,这个亮点override工业界实习了,那么工业界实习就是一些minor plus了。如果你是很一般学校,你可能需要一些big name的工业界实习作为你的亮点。总的来说综合这两条。有机会去大公司research实习的话是非常好的机会,要抓住。
7 每周工作时间
这个问题没法回答,每个人的情况不一样。有人几乎一直在实验室的,有人比较清闲。我观察看平均时间在40-70小时左右之间。实际上效率远远比绝对的时间重要,其实如果你能一天保持高效8小时工作,一周6天,也就是48小时高效率,已经足够了。因为这个工作是一个需要思考,需要创造力和一些灵感的,所以一味增加时间其实可能有负面效果。平时要适当的放松自己,不能把神经绷太紧,不然5年时间一直绷那么紧精神会崩溃的。以前经常喜欢熬夜考前抱佛脚的同学要注意了, that working style simply doesn't work. 咬牙跺地的说我接下来2个月天天干到2点一定发一篇top conference的思想是不管用的。当然在paper deadline前适当绷一下是正常也应该的,但不能成为你的常态和节奏。每天做一些,每天有一点斩获比拼命一个月,然后彻底放松1.5个月要好得多。PhD是一个马拉松 不是百米。
8 动机
读phd最重要的动机一定要是 passion。要有非常强的passion,不然这个过程会很辛苦。那么有什么其他动机呢,比如有人说想读PhD是因为想提高自己,并且把这个理由写在PS里面。大家觉得这个东西会给professor的印象加分还是减分呢?诚然提高自己是没有错,但其实这是经历PhD以后自然的结果。如果把这个作为动机就有点问题了。原因是提高自己的方法很多,你去公司工作6年难道提高的就一定比phd少吗,未必,更别说经济上了。如果你的动机是提高自己,试想你的phd如果不顺利的话你会想还不如当时去工业界呢,不照样提高自己。。。从另一个角度说,如果动机确实是 passion,那么即使你的phd可能不顺利,你还是会坚持下去,毕竟这项工作对你来说有乐趣,你从心里愿意去做,你会缩小phd给你带来的苦恼而放大它给你带来的快乐。有些人读了phd以后做的不开心,不顺利,但是他们有坚强的毅力,最后通过重重努力拿下了学位,这些人当然值得尊敬,但对于他们而言,这么有恒心和毅力能把自己不喜欢的事情都做好,他们去公司也会混的好。这就是机会成本。不能只看到你phd毕业时水平比刚读phd时高就满足了,毕竟6年时间谁不提高,要看的是如果你把这6年时间放在别处是否会给你的人生带来更大的愉悦感,经济的回报,和未来预期的收获。
9 止损意识
一直说phd是人生很大的投资,既然是投资就有可能成功或失败。止损意识就是当你意识到大量迹象表明你可能会往失败的方向发展的时候你应该有什么举动。我的理解是 给自己两年时间,全身心的投入研究,如果仍然建立不起兴趣或者仍然觉得过程非常不顺的话,也许是离开的时候了。这不丢人,phd drop率很高的,没人会看不起你。为什么是2年,因为2年时间基本是一个新手进入某个领域开始研究后应该出成果的周期了,同时它又是一般master所需的时间。这个时候退出损失很小的,当然前提是能够有master学位。不要因为你所在的学校是牛校所以留念那个牛校的phd学位而苦苦挣扎,无数例子证明大部分这样挣扎的人都会后悔。其实你有牛校master也混的开了,你的能力还是要强于你们学校master的平均水平的。同时你也可以看出为什么我是一直认为phd要去好学校的,因为好学校的phd是进可攻退可守的,大不了drop了那master走人。而一般学校drop的话master的分量就低了。总之有一点,这个决定要做的果断,是继续还是离开,千万不要犹豫,一犹豫可能就是1年没了,到时候已经过了3年你想再离开就不一定能下得了决心了。如果把这个过程想成股票,你买了这个股票如果跌了,你已经损失了,有些人割肉出来了,而有些人一直想也许明天就会涨。其实做股票也就是钱的问题,phd是时间和青春。
待续
