写点什么

在象牙塔里写代码:高学位、低收入,软件还必须“高质量”

  • 2022-06-05
  • 本文字数:2665 字

    阅读完需:约 9 分钟

在象牙塔里写代码:高学位、低收入,软件还必须“高质量”

整理|燕珊


2012 年 3 月,一群志同道合的软件开发者聚集在牛津大学并参加了一个研讨会,这群开发者的职业的共同之处是:通过写代码/开发软件来支持科学研究。但他们的职位各有不同,而且没有清晰的职业道路,于是这群人创造了一个术语来描述自己的工作:研究软件工程师(research software engineer,以下简称“RSE”)。


十年后的今天,RSE 社区已经遍布英国、欧洲、澳大利亚和美国。谢菲尔德大学 RSE 小组负责人、英国研究软件工程协会前任主席 Paul Richmond 在接受《自然》杂志网站采访时指出,尤其在英国,至少有 31 家大学拥有自己的 RSE 小组,这表明这一工作的重要性日益增加。


但从现实的角度看,在互联网高速发展的时代,作为 RSE 在学术界能赚到的钱,也往往不如在科技大厂里做一名码农来得多。《自然》的这篇内容也因此在 Hacker News 上炸出了好多 RSE 们现身说法。

RSE 是做什么的?

本质上,RSE 做的事情就是建立软件来支持科学研究。但他们通常没有自己的研究问题——他们是通过开发软件工具来帮助其他人做很酷的事情。因此,他们每个人做的事情并不绝对,比如为现有的软件增加功能,解决 bug,又或者从头开始建立一些东西。但他们并不只是坐在电脑前写代码,写代码只是 RSE 角色的一部分,他们必须是良好的沟通者,能够将自己融入到一个团队中。


按照 Richmond 的说法,几乎每一个科学领域都需要运行软件,因此 RSE 会发现自己几乎可以从事任何工作。在 Richmond 的职业生涯中,他一直致力于开发用于成像癌细胞和模拟行人交通的软件。作为博士后,他其实从事的是计算神经科学的工作。“我对这些特定的研究领域了解不多,因此我需要与肿瘤学家或神经科学家或任何人密切合作以开发所需的软件。”


最初许多 RSE 都是博士生或博士后,他们从事软件工作以支持自己的项目。但他们意识到,比起实际的研究工作,他们更喜欢这部分工作。因此,RSE 肯定具备在工业界工作的技能,但他们选择了在学术界的前沿科学环境中茁壮成长。


“当然,博士学位不是必要的。”Richmond 说,“我鼓励任何对研究感兴趣的有经验的开发人员考虑将 RSE 作为一个职业。”

缺乏相应的认可和奖励

RSE 工作的一个重点是开发高质量的软件。但 Richmond 坦言,在过去,研究人员并不被激励去使用或创造好的软件。好消息是,这个情况正在发生变化。“许多期刊现在要求研究人员公开软件代码,而且需要遵循 FAIR 原则:可查找、可访问、可互操作和可复用。最后一个词非常重要:好的软件是研究‘可复用’的一个重要组成部分。”


Richmond 强调,他希望可以看到 RSE 在学术环境中是平等的。软件贯穿整个研究过程,但教授往往才是获得大部分认可和声望的那个群体。实际上软件可以产生与某些研究论文一样大的影响,甚至是更重要的角色。如果 RSE 能够获得他们应得的认可和奖励,那么 RSE 这个职业将会更有吸引力。


Richmond 的这些话透露了 RSE 职业存在认可和奖励不足的现实问题。而在技术论坛上,不少人随之对学术界展开抱怨。


一名自称在生物科学领域有 10 年以上经验的研究工具开发者分享道,自己的实验室制造了最先进的显微镜、硬件和图像分析软件,他也觉得学术界的工作确实很棒,能与来自世界各地的非常有趣的人一起工作,对项目也拥有完全的创意控制权。但在薪酬、期望和福利方面,永远不会得到像软件行业那样的高回报,当超过 30 岁时,可能仍在支付进入这个领域所需的学生贷款,而且仍然住在同一个糟糕的公寓里。“学术界,至少在生物科学领域,仍然是一座象牙塔。”


有人直言,“在学术界工作的一个严重现实是,你基本上是以较低的报酬为业界工作,而他们有一天会转过身来,拍拍你的肩膀,然后以数百万美元的价格出售你的工作。”“说实话,你越是接近应用领域,情况就越糟糕。在那里,你已经跨越了你的更‘纯粹’(和收入较少)的同行所认为的‘科学界限’,但实际上做出的东西将使人们的生活更美好。由于这也更靠近能看到你的工作是如何使别人发财的地方,就会很难让人不想跳槽,去成为另一头赚得盆满钵满的人。说实话,这是个令人不安的情况。”


也有人认为是关于地位的问题,“RSE 总是被认为不如研究人员(研究科学家),他们据称提出了“大创意”,而 RSE 只是执行被告知要做的事情。实际上,这条线要模糊得多。没有想法的实施就没有创新和迭代,RSE 工作同样重要。但除非这种观点改变,否则没有人愿意成为 RSE。”

RSE 职业发展还任重道远

“离开学术界后,我工作量变少,得到的报酬更高。在一个人屈服之前,理想主义可以持续很长时间。”


不少观点均指出,从职业道路选择和竞争性薪酬的角度来看,RSE 这个职业很难有好的前景。“如果你拥有材料科学、物理学、化学、生物学等方面的博士学位……并且对 Python(或类似)有相当的了解,也许可以花一年的时间做博士后。在那一年之后,认真考虑转到一家科技公司。”


但也有人对学术界始终抱有憧憬:“我放弃了对对抗性算法和生成对抗性网络的研究生研究,因为我意识到我可以得到 6 位数的报酬来制作商业软件并利用空闲时间做任何我想做的事情。像许多其他潜在的有前途的学术软件工程师一样,我有一个家庭要抚养,我要过上自己的生活。科学确实需要更多的研究软件工程师,但在科学能够支付软件工程师至少基本的最低收入之前,这种情况不会改变。当这种情况发生变化时,我会考虑从我离开的地方再度开始。


另一方面,有观点不认为科学家需要研究软件工程师。“PI(首席研究员)通常喜欢承担项目中的任何角色,包括软件设计。他们不喜欢交出事情并让人们构建现代的最佳实践软件。你开始谈论源代码控制、包管理器、工业中使用的一种他们甚至从未听说过也不太关心学习的语言等等,然后你就会被问到‘为什么你不能直接用 Python 或 C 编写,因为这是我唯一熟悉的两件事,然后将其压缩并放在 USB 驱动器上’。”


学术界还是工业界,这个问题始终没有固定答案。不少人指责学术界普遍存在资金不足且官僚作风的问题,一位自称在学术界和工业界都待过的 PI(首席研究员)直言,前者可以通过拨款申请来解决,后者必须被容忍,直到政治家/活动家解决它。他进一步解释道:学术界的钱和奖励在大多数情况下不受 PI 的控制(例如在德国,这是政府层面的决定,每个人的报酬都是一样的),所以他们往往有两种选择:与普通人共事或找到既聪明且有理想主义的人......


同时,该 PI 在评论区顺带发布了一则 RSE 招聘,寻找愿意与之一起使用最佳实践(尤其是使用 Rust)构建研究软件(本地和 AWS 云)的人。一位用户随之留言打趣道,这很可能就是当前难以招到 RSE 的最佳证据。


参考链接:

https://www.nature.com/articles/d41586-022-01516-2


https://news.ycombinator.com/item?id=31577376

2022-06-05 18:183927
用户头像
罗燕珊 AI practitioner | Tech media

发布了 500 篇内容, 共 339.4 次阅读, 收获喜欢 799 次。

关注

评论

发布
暂无评论
发现更多内容

算术四则混合运算表达式的求值

可口也可樂

算法 10月月更 四则运算

Node.js实现大文件断点续传

coder2028

node.js

“程”风破浪的开发者|元宇宙给我们带来了哪些机会

石云升

区块链 元宇宙 10月月更 “程”风破浪的开发者

资源不准下的网络故障定位探索

鲸品堂

故障定位 企业号十月PK榜

TCP/IP协议中分包与重组原理介绍、分片偏移量的计算方法、IPv4报文格式

Python-派大星

10月月更

融云直播SDK开路,给电商大促加点“魔法”

融云 RongCloud

直播 社交娱乐

Nodejs+Redis实现简易消息队列

coder2028

node.js

项目汇报复盘

Geek_XOXO

复盘 项目复盘

调度线程池ScheduledThreadPoolExecutor的正确使用姿势

JAVA旭阳

Java 线程池 10月月更

JS词法环境和执行上下文

hellocoder2029

JavaScript

Go Web 实战:如何创建项目及增加日志功能

宇宙之一粟

日志 Go web Go 语言 10月月更

大咖说·小码王|人工智能时代,如何让孩子掌握与机器交流的语言?

大咖说

人工智能 阿里云 降本增效

完整议程 | 2022 XDR网络安全运营新理念峰会

未来智安XDR SEC

网络安全

2022-webpack5实战教程

Geek_02d948

webpack

@程序猿:旺链科技惊喜已到,请速速查收~

旺链科技

区块链 产业区块链 1024程序员节 企业号十月PK榜

js裁剪(分隔)字符串常用方法

木偶

JavaScript 前端 10月月更

“程”风破浪的开发者|C#下WPF中实现贪吃蛇小游戏(超详细步骤附带源码)

木偶

C# 学习方法 贪吃蛇 10月月更 “程”风破浪的开发者

以太网数据链路层、Ethernet_II帧格式、IEEE802.3帧格式,以太网的MAC地址的组成,ARP地址解析协议的工作原理,单播帧、组播帧、广播帧的区别

Python-派大星

10月月更

Linux网络-HTTP协议

可口也可樂

Linux 网络协议 HTTP 10月月更

蒙牛前数科部总监刘瑞宝分享蒙牛数字化转型成果-星策社区大咖说(一)

星策开源社区

决策 智能化转型 数据链路 蒙牛

C++中的四种类型转换

可口也可樂

c++ 类型转换 10月月更

Flowable 服务任务执行的三种方式

江南一点雨

Java spring springboot flowable JavaEE

一步一图带你深入理解 Linux 虚拟内存管理

bin的技术小屋

内存管理 Linux Kenel 虚拟内存

【开发利器Hutool】推荐一个超好用的本地缓存

JAVA旭阳

Java hutool 10月月更

我摊牌了!真正的灰度队列实现方案!全网你都搜不到!

艾小仙

Java kafka RabbitMQ 中间件 计算中间件

Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型

Python-派大星

10月月更

嵌入式 Linux 入门 环境篇(一、开发板初体验)

矜辰所致

Linux 开发板 启动流程 10月月更

Webpack中的plugin插件机制

Geek_02d948

webpack

JS知识点梳理之作用域、作用域链、柯里化、闭包

hellocoder2029

JavaScript

怎么购买公有云?具体流程是怎样?

行云管家

云计算 公有云 企业上云 云管理

JavaScript刷LeetCode模板技巧篇(一)

Geek_07a724

JavaScript LeetCode

在象牙塔里写代码:高学位、低收入,软件还必须“高质量”_文化 & 方法_罗燕珊_InfoQ精选文章