Friday, May 17, 2024

你以為Statistical Programmer只用SAS?原來還有其他可能!




百瑞精鼎身為全台灣最大的CRO公司,資料處理的相關職位也是非常多元的,包含Data management, Statistical programming, Biostatistician 部門等等。在我們的Statistical Programming部門裡還隱藏一個神祕的職位,叫做Application Programmer。這個職缺可說是可遇不可求,非常少人知道但卻在我們公司扮演著極為重要的角色。

今天我們請到上海的Chaos以及台北的Alexandar來介紹這個極為神秘的角色,目前這個位子也正在招聘當中,我們需要R語言的高手,如果看完文章躍躍欲試,也非常歡迎各位小夥伴們踴躍投遞!


📌 請與我們分享您的背景及為何加入Parexel Statistical Programmer team吧!

💬 Chaos: 「我所學專業為概率論與數理統計,在課程中接觸統計軟體SAS,並深深喜歡上了用此語言程式設計,於2013年6月加入Parexel Statistical Programmer team,後於2018年5月開始做application programmer的工作。」

💬 Alexandar: 「我研究所是念流行病學的,當時主要是做癌症研究。後來在疾管署研檢中心的工作過程中有接觸到臨床試驗,因此對臨床試驗領域感到好奇,又剛好聽說Parexel有在應徵Statistical Programmer,所以也是誤打誤撞加入這個產業。」


📌 Application Programmer的工作內容有哪些? 日常工作是什麼樣子的呢?

主要的工作內容是開發協助統計分析團隊及研究團隊日常工作所需要用到SAS macro或工具,當有任務進來的時候,指定的Application Programmer(Assigner)會跟問題提出方(Reporter)合作,對涉及到的工具做出更新改善以確保問題能被妥善解决。比如: 產出圖表的SAS macro、QA檢查工具、臨床試驗監管應用工具等。

可以將工作內容劃分成以下幾項:
  • SAS macro開發及維護
  • Script的開發及維護
  • 系統或者平台的開發及維護
  • 解決統計分析/研究團隊在前述的工具中遇到的疑難雜症

當我們收到來自研究團隊的需求後,我們會根據需求或問題開始編寫/修改程式碼、撰寫文件(Document)、單元測試(Unit test)。前述工作主要都由一個人負責,但會指派另一人一同討論和給建議。待程式碼完成並通過使用者測試後(UAT),會進行對應的Git版本管控,並佈署/發佈程式碼至適當的環境中。


📌 Application Programmer可以培養哪些能力?

  • 對於每個工具的開發,都要嚴格符合完整的標準。
  • 程式設計語言能力會相當扎實。
  • 解决問題能力强(比如,短時間開發新工具,解决Macro的Bug,及支持新加功能)。
  • 工具的聚合能力。例如: 一個新工具由多個子工具聚集在一起,一個APP有多種程式設計語言編寫。

📌 最常合作的部門有哪些? 會有跨國合作的機會嗎?

Application Programmer會跟各個國家的Study Team,CCG Team,CSM Team,Medical Coding Team緊密配合,支持並解决這些團隊的需求或問題。當然我們團隊中也有美國、英國、印度的同事,所以內部討論就屬跨國合作的範疇了。以內部流程來說,當我們有佈署需求的話會需要和DevOps team接洽,我們也會向Data Science team學習他們開發的模式或方法。


📌 擔任Application Programmer最有挑戰性以及最有成就感的事情?

💬 Chaos: 「針對挑戰的部分。我認為在一個應用程序中會包含多個小程序,Application Programmer需要確保各個程序集成在一起並良好運行,這會是一個很有挑戰性的工作! 但同時很高興聽到開發的工具可以順利地工作,並幫助同事們提高了工作效率。」

💬 Alexandar: 看到自己做的application/script/macro release to production 並且被研究團隊和統計分析團隊使用的時候,會覺得自己做的事情是有意義的。


📌 你覺得這個職位需要具備什麼個性特質以及技能?

會建議至少要熟悉除SAS外的任一種程式語言,並稍微了解Linux、Git版本管控、單元測試和佈署的概念,甚至了解任一種網頁框架,例如: R Shiny。除了可以比較了解工作內容,有了這些基礎概念才有辦法和其他co-worker溝通。我們比較像是”Engineer” ,而不單單只是一個”Programmer”,你必須對你負責的Project有全局的視點和考量,從而對你的Project有個藍圖,最後才能可以像建房子似的從地基開始一步步將其完成。

除了程式語言之外,英文能力也相當重要,很多時候我們需要和提需求的人、co-worker溝通,良好的溝通可以幫助你釐清問題、歸納出需求並解決問題,另外,撰寫文件也是工作內容的一部分,好的英文能力有助於提升工作效率。最後是細心,除了程式碼的格式外,在編寫程式時你必須要能想到各種出錯的可能,包括在寫各種錯誤處理、單元測試等,能不能考慮到各種使用上的問題/情況也是很重要的。


📌 ParexelApplication Programmer的同事有哪些可能的職業發展?

Application Programmer的職業發展比較多元,可以發展成為Senior Application Programmer(高級應用程序程式師)、Software Consultant(軟體顧問)、Technical Lead(技術負責人)等。


🔆 給未來新夥伴的建議?

在這個職位,你可以有機會和不同國籍的人合作 、對話、交流、溝通;你可以有機會磨練你的程式語言技能,目前我們會使用的程式語言有SAS,R,Python,bash,Perl,JavaScript (React.js and Next.js) 等。

你可以有機會學習前後端程式設計、佈署、版控、CI/CD、單元測試等等;你可以有機會負責一個開發計畫,實踐如何做好專案管理;如何和不同部門溝通、如何和需求者討論才能找出最佳的方案等等,因此可以先試著了解這些項目的概念。



🔆 額外加碼的三個問題,由於Alexander是2022年剛轉入這個組,小編問他在準備內轉的時候做了哪些準備,他也不藏私地跟大家分享。


💻 內轉前有做什麼準備嗎?Statistical Programmer的工作差別在哪邊呢?

💬 Alexandar:「在內轉之前,有被告知會使用到R做開發,所以事先複習了一下R 語言。

這邊的工作基本上和Statistical Programmer的工作不太一樣,除了編寫SAS macro外,可以說是完全不一樣。這邊的SAS編程主要以macro為主,比較不會有需要去編寫創建SDTM、ADaM、TFL等等的工作,而且編寫程式碼的規範及流程稍有不同。另外,我自己有負責在應用程式和Script的開發及維護,我相信這部分Statistical Programmer一般不會接觸到這一塊。」


💻 你是如何學習R語言與其他工作上會使用到的語言呢? 或者有什麼契機?

💬 Alexander: 基本上會先從看該程式語言的文件開始,如果有不懂的再從網路上找資源或買書來研究,甚至有需要的話也會去坊間的課程進修。當然時間允許的話,研究別人寫的code/project,自己試著做一遍也是很有幫助的。我在大學的時候曾經和資工系朋友一起修習C/C++ 和Python課程,所以對程式是相當有興趣的,雖然後來選擇往生醫領域發展,有機會的話仍會去研究感興趣的套件及框架。


💻 轉過來之後,跟想像中的一樣嗎?

💬 Alexandar:  比想像中有趣一些,原本以為僅限於做SAS macro開發及維護。但我們也有做應用程式的前後端 (UI and database) 開發,也是最吸引我的地方之一!