研究者与开发者的代码

计算机学科研究者和软件开发人员都会编写大量的代码,但这是非常不同的。从目的来讲,前者通常是面向计算结果的,服务对象就是自己;而后者大多是面向使用者的,虽然使用者可能是外部用户,也有可能是公司内部人员(所谓in-house programmer)。

如前所述,作为研究人员,一段代码的存在意义是计算结果,并且通常情况下只需要那一批结果。所以首要目标是快速写出代码,所以各种快速编程语言在研究者中非常流行,如Matlab, python等。

另外一点不同是研究人员并没有自己的产品经理(PI也许算,但是不太会给予具体实验层面上的指示),并且每个小时都会有新的需求。造成研究人员写了大量代码,其中大部分自己也不记得是用来干什么的。删除怕以后要用,不删碍眼占地方。

这种状况的一个结果是代码质量相对较低,当然这并不是绝对的。研究人员的代码并不像他们的文章那样经过同行评审,而大多数开发人员的代码都会经过同时的code review。所以平均来讲,研究者的代码无论在正确性、可读性、执行效率方面都会逊于公司开发的代码。这也一直被人诟病的一点。

有效缓解这种问题的方法之一就是公开代码。优秀工作公开代码必然会被千百人复用。对于研究者来说,这是检验自己代码、证明自己工程能力的好机会;对于使用者来说,这可以降低增量工作难度;但是公开代码也有可能面临被人发现问题、未来工作被人抢先一步等等问题。

Leave a Reply

Your email address will not be published. Required fields are marked *