北美博士生生存手册:数据和代码爆炸

undefined September 7, 2020 View/edit this page on 语雀

Creative Commons License This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

本文着重探讨如何写,存储,处理科研中产生的碎片化数据和代码的问题,都是血与泪,还有头发的教训。未完待改!

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

不要相信跟别人复用代码在科研工作环境里是件很靠谱的事。在导师,deadline和科研焦虑的三重压力下,大多数时间,你并不想再花更多地精力去跟别人分享代码,你最多只需要跟自己共享。
不要轻易相信别人处理的数据,你唯一信任的只有使用前再次检查,小到格式问题,大到数据错误,你有时间真的很难相信别人是真的认真了。

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

不要想着利用复杂或者高度自动化的工作流来跨项目处理数据,不要过分信任先进的数据库分布式系统,计划真的永远赶不上变化,很快,你的自动化代码就会因为维护成本爆炸而变成一堆垃圾。然后下一个项目开始时,你依然只能重头再来。很快,你就会发现分布式系统本身就是一个巨坑。很快,你就会发现花在系统维护上的时间彻底爆炸。

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

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

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

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

原则五:完美主义陷阱

懂的都懂,完美主义科研不可取。

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

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

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

你是一个研究者,一个思考者,一个科学家!不过,如果你其实发现自己也喜欢写代码或者处理数据,多搞搞也挺好的,毕竟技多不压身。