為什麼科學需要更多的研究型軟體工程師? - nature
2012年3月,一群志同道合的軟體開發人員聚集在英國牛津大學,參加他們所謂的合作研討會。他們有一個共同的職業--編寫程式碼以支援科學研究,但有不同的工作頭銜。而且他們沒有明確的職業道路。與會者創造了一個術語來描述他們的工作路線:研究型軟體工程師(RSE:research software engineer )。
十年後,RSE協會在英國、歐洲大陸、澳大利亞和美國興起。在英國,至少有31所大學有自己的RSE小組,這表明這個職業的重要性在不斷增加:
RSE是做什麼的?
從根本上說,RSEs建立軟體來支援科學研究。他們通常沒有自己的研究問題--他們開發計算機工具來幫助其他人做很酷的事情。他們可能為現有的軟體增加功能,清除錯誤,或者從頭開始建立一些東西。但他們並不只是坐在電腦前寫程式碼。他們必須是良好的溝通者,能夠將自己融入到一個團隊中。
他們從事什麼型別的專案?
幾乎所有的科學領域都是在軟體上執行的,所以RSE可以發現自己在做幾乎任何事情。在我的職業生涯中,我從事過癌細胞成像和行人交通建模的軟體。作為一個博士後,我從事計算神經科學的工作。我對這些特定的研究領域瞭解不多,所以我與腫瘤學家或神經科學家或其他什麼人密切合作,開發所需的軟體。
為什麼這麼多大學支援自己的RSE小組?
一些處於學術梯隊頂端的高權重研究人員有能力僱用自己的RSE。該工程師可能致力於維護一個已經存在了10年或20年的單一軟體。但是,大多數研究小組只是偶爾需要--或者能夠負擔得起--一個RSE。如果他們的大學有一個RSE小組,他們可以僱用一名內部工程師,每週一天,或一次一個月,或任何他們需要的東西。這樣一來,RSE小組就像一個核心設施。大學試圖確保該小組有一個穩定的工作流程,但這通常不是問題--不缺專案可做。
RSE還做什麼?
工作的很大一部分是提高對高質量軟體的重要性的認識。RSE可能會培訓一個博士後或研究生,讓他們自己開發軟體。或者他們可以舉辦一個關於良好軟體實踐的研討會。從理論上講,培訓50個人可能比在一個專案上工作更有影響力。在實踐中,因為忙於支援研究,RSE們往往很難抽出時間進行教學、指導和宣傳。
主要研究人員(PI)是否理解對RSE的需求?
這是很複雜的。在過去,研究人員並不總是被激勵去使用或創造好的軟體。但這正在改變。許多期刊現在要求作者發表程式碼,而且這些程式碼必須是FAIR:可查詢、可訪問、可互用和可複製的。最後一個詞非常重要:好的軟體是研究可重現性的一個重要組成部分。我們向首席科學家解釋,他們需要可靠的程式碼,這樣他們就不必在六個月後收回他們的論文。
誰應該考慮從事RSE工作?
許多RSE開始時是博士生或博士後,從事軟體工作以支援他們自己的專案。他們意識到,比起實際的研究工作,他們更喜歡這部分工作。RSEs當然有在工業界工作的技能,但他們在學術界的前沿科學環境中茁壯成長。
大多數RSE擁有博士學位--我有一個計算機圖形學的博士學位--但這不一定是一個要求。一些RSEs最終走上了終身職位;我最近被提升為教授。其他許多人作為實驗室技術人員或服務人員工作。我鼓勵任何對研究感興趣的有經驗的開發人員考慮將RSE作為一個職業。我還希望看到更多來自代表性不足的群體的人加入這個領域。我們需要更多的多樣性來發展。
你對有希望成為RSE的人有什麼建議?
試著在一個開源軟體上工作。如果可能的話,在一個合作的環境中做一些培訓。如果你有問題,可以和正在工作的RSE交談。考慮加入一個協會。英國研究性軟體工程協會很樂意為人們提供有關進入該領域或如何在工作申請中脫穎而出的建議。在美國的人可以聯絡美國研究軟體工程師協會。
如果你是一個博士生或博士後,給自己一個挑戰:試著說服你的導師或PI,他們真的需要接受好的軟體技術。如果你能改變他們的想法,那就說明你有成功的激情和動力。
你對這個行業在未來10年的發展有何設想?
我希望看到RSE在學術環境中是平等的。軟體貫穿整個研究過程,但教授們往往得到大部分的認可和聲望。一款軟體的影響力與某些研究論文一樣大,有些甚至更大。如果RSEs能夠得到他們應得的認可和獎勵,那麼這條職業道路就會更加明顯和有吸引力。
doi: https://doi.org/10.1038/d41586-022-01516-2
相關文章
- 為什麼需要更多的程式語言
- 成為谷歌軟體工程師,你需要準備什麼?谷歌軟體工程工程師
- 資料科學家最需要什麼技能?資料科學
- 為什麼軟體工程師應該學習哲學?軟體工程工程師
- 從AIGC到AGI,為什麼我們需要更多的“技術信仰派”?AIGC
- 深度學習為什麼需要那麼多的資料?深度學習
- 為什麼需要Docker?Docker
- 為什麼遊戲界需要更多像三上真司這樣的優秀導師?遊戲
- Kafka學習筆記(一) :為什麼需要Kafka?Kafka筆記
- Kafka 學習筆記(一) :為什麼需要 Kafka?Kafka筆記
- 為什麼企業需要關注深度學習深度學習
- 為什麼 JVM 需要 GCJVMGC
- 為什麼Spark將成為資料科學家的統一平臺Spark資料科學
- 醫學影像AI為什麼需要小資料學習?AI
- 成為軟體工程師最精彩的地方是什麼?軟體工程工程師
- Elasticsearch:是什麼?你為什麼需要他?Elasticsearch
- 什麼是資料科學?資料科學
- 為什麼資料科學家應該開始學習Swift?資料科學Swift
- (資料科學學習手札134)pyjanitor:為pandas補充更多功能資料科學
- 科學需要模型 需要精確模型
- 為什麼我們需要 VuexVue
- 為什麼需要require.jsUIJS
- 為什麼MCU也需要AI?AI
- 為什麼需要資料治理
- 爬蟲為什麼需要HTTP?爬蟲HTTP
- 為什麼企業需要Kaizen?AI
- 為什麼Javascript需要型別?JavaScript型別
- 為什麼需要Web Service (轉)Web
- 為什麼需要依賴注入依賴注入
- 【前端筆記】Vuex 是什麼,為什麼需要前端筆記Vue
- 為什麼軟體工程師的價值總被大大低估軟體工程工程師
- 邊緣計算是什麼以及為什麼需要它
- 【Java面試】什麼是 ISR,為什麼需要引入 ISRJava面試
- 什麼是Web workers?為什麼我們需要他Web
- 為什麼Java需要物件的序列化Java物件
- 為什麼需要改變RAN的架構?架構
- 為什麼爬蟲需要大量的IP地址?爬蟲
- NoSQL為什麼需要模式自由的ETL工具 ?SQL模式