北美博士生生存手册Updated long long ago

undefined View/edit this page on 语雀
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

最近遇到了一些新来的读博的学弟学妹,也跟一些混迹北美多年的博士生聊了不少,加上新闻里不断爆出的留美博士抑郁自杀的各类新闻,让我觉得有必要给大家分享一下我个人的北美留学生存感想。总结起来就是经常感觉不到希望,但是也不至于绝望,该不怂的时候真的不能怂,如果自己都不搞事,就别指望别人帮你搞事了。一个训练有素的博士生,首先需要会写提纲。
phd112219s.gif

本系列的一个很随意的提纲

  1. 北美博士生生存挑战
    1. 听不懂,也不会说 (Done)
    2. 数据,代码?怎么又弄丢了!(New!)
    3. 写论文也太难了吧。。。
    4. 课程太难???
    5. 拖延症!
    6. 教授太 push!!
    7. 教授不管我~~
    8. 单身狗好孤独。。。
    9. 教授不是人,让我做牛做马,就是不让我毕业!!!
    10. 没朋友!
    11. 研究太难了,做不出来。。。
    12. 实验失败了!发不了论文了,啊啊啊
    13. 我太爱搞课外活动了,我好像不适合读博士。。。
  2. 我在美国读博士的奇葩经历
    1. 论文作者排名被套路了
    2. 老板的破事儿太多,还都是无关紧要的
    3. 反抗暴政
    4. 社会支持
    5. 自省

北美博士生生存挑战

我导师说科研论文标题之间一定要填充一点文字,所以我照做了。
本章主要讲我所接触,听闻,以及自身体会到的北美中国博士生可能面临的问题,以及个人的看法,感想和建议。不负责任的说,不一定对,但是肯定能引发讨论。

听不懂,也不会说

最近跟一个新来的博士学妹聊天,跟我抱怨跟不上课程,特别是听说能力有点不够。我说我刚来的第一学期也这样,还曾经很恐慌地买了个老式录音笔(当时还没有买智能手机),把整节课的内容都录了下来。最搞笑的是后来我发现学校提供了所有课的视频录像,并不需要录音。其实语言问题已经越来越不是问题。因为英文教育的普及,美剧好莱坞电影的流行,以及社会英文培训机构的兴起,现在很多刚来的留学生,甚至是本科生,都能很好地适应语言环境,至少听课没问题。但的确也有人听说的能力完全不足以应付博士生活。怎么提高语言能力方面我没有建议,因为大家都足够聪明,不然也混不到美国。心态上我想说根本就不要慌,你迟早能适应印度教授的咖喱味英语,毕竟每天都要吃。
另一方面,语言问题更像是个思维方式和表达习惯的问题,因人而异。就我个人而言,我导师曾经跟我说过写文章时应该用先说原因,再说结果的句式。就比如 Because A, then B。但是我发现我的思维习惯是 B, because A。然后据我观察,我说话的时候也喜欢先说结果,再说原因。后来我深入分析了一下,觉得先说原因会让语言更有逻辑性,也更符合大多数人接受信息时的思维习惯。所以之后就特别注意这方面的问题了。曾经也有人说过我说话缺乏条理,重点不够突出,建议我说话之前最好在心里打个腹稿,提纲,这样表达出来会更简练,有条理。这些关于思维习惯的问题每个人都会面对,也需要不断在实践和训练里培养好的习惯,相比于单纯的听说问题,我个人认为这些表达能力反而更应该重点关注。
最后,有时候我就是觉得美剧的梗没那么好笑。讲真,融入美国文化这种事因人而异,也不应该强求,特别是当你真的只是对知识有兴趣,对美国文化兴趣不大的时候。除非是要在美国混到中层及以上,想要把这种文化语言艺术当成工具时,大部分时候并不需要学习怎么开那种美式玩笑。有时候我甚至发现,在充满了国际学生的美国学术圈,我的中式玩笑经常能把坐我旁边的尼泊尔和印度小哥逗乐。

数据,代码?怎么又弄丢了!

作为一个理工科博士生,每天除了论文,数据和代码是日常生活一定会大量接触的对象,甚至多于我的真实对象,Sigh!!树立对待数据和代码的正确态度,对于实现成功又轻松惬意的博士生活至关重要。我大概总结了一下这几年因为数据和代码走的弯路,以及一些重要的原则,希望对大家有帮助。不过最重要的,就是你一定要是标准流程(SOP)和最佳实践(Best practice)的拥趸,否则再多的原则和方法论也不大有用,很难坚持。

原则一:你真的只是一个人在战斗

避免过度代码共享。不要相信跟别人复用代码在科研工作环境里是件很靠谱的事。在导师,deadline和科研焦虑的三重压力下,大多数时间,你并不想再花更多地精力去跟别人分享代码,你最多只需要跟自己共享。同理,不要轻易相信别人处理好的现成数据,你唯一信任的只有使用前再次检查,小到格式问题,大到数据错误,当你耗费了几周时间最后发现是原始数据的问题时,这种滋味真的不会好受。

原则二:你真的不是一个程序员、数据库管理员或者服务器运维人员

避免过度依赖流程自动化。不要想着利用复杂或者高度自动化的工作流程来跨项目处理数据,不要过分信任先进的数据库分布式系统,计划永远赶不上变化。很快,你的自动化代码就会因为维护成本爆炸而变成一堆垃圾,然后下一个项目开始时,你依然只能重头再来,然而有太多时候你因为赶工快速实现的代码会因为缺乏必要文档,让你一头雾水。很快,你就会发现花在维护脚手架代码上的时间彻底爆炸。

原则三:你真的不是一个软件架构师

_避免过度抽象化或者API化。_上一次我听人说起在自己写库或者框架的时候,我的反应就是想“喷他一口白沙,说他妈江湖不是你的!”(自《江湖流》)。你真的写不了库或者框架,就算写了也没有那么多时间维护,你唯一能写的就是把你开发的算法稍微整理一下,然后加上足够的注释和怎么使用的说明,仅此而已。也有大神能成功,但是很显然,本文不是给大神看的。

原则四:确定并坚持自己的数据管理和代码编写风格

在另一篇博客里我介绍了常用的管理思维,包括文件的命名。其实采用什么并不重要,养成良好的收纳习惯最重要。形成自己的习惯和最佳实践,才能保证在尽可能少的注释下一年半载突然有感兴趣的论文读者来找你时,你依然可以看得懂自己的代码。

原则五:完美主义陷阱

懂的都懂,完美主义科研不可取。随着时间的推移,你会总结出很多最佳实践,你科研的清洁度和效率也会大大提高,但是你不应该也不可能一开始就能做得完美。

原则六:可以不高端,但要懂

什么101种编程语言,代码优化,编译器原理,数据库结构,分布式计算,平行计算,你可以不精通,但是一定要懂一点,并且能够预判你当前项目需要你怎么搭配技能槽,以及强化哪些技能。戳这里看很好的资源列表

原则0:你的价值不在写代码和管理处理数据

最最最重要的原则:你要时刻提醒自己是一个研究者,一个思考者,一个科学家!而不是一个码农!除非你最终发现自己就是喜欢写代码或者处理数据,多搞搞也挺好的,毕竟技多不压身。