醫療軟體工程師[] / []

職業心智圖
系統整合醫療軟體工程師
醫療軟體工程師_職業心智圖

醫療軟體工程師 (電子業|系統整合|研發部)  當系統整合公司與包括醫院、診所、藥局或儀器廠商等醫療產業接洽合作案時,必須思考如何協助客戶改善各環節的作業流程。從傳統人工流程、紙本作業、檢驗檢查儀器整合、醫療科室作業、遠距照護、行動醫療到雲端病歷等,探討是否有可能透過軟體、韌體或硬體的優化,提供客戶更好的解決方案。

系統整合公司的軟體研發部門在專案開發裡擔任許多角色,根據職務的分工流程包括需求分析師(RA:Requirement Analyst)負責先提出計劃書;接著,系統架構師(SA:System Architect)規劃專案的整體架構;系統設計師(SD:System Designer)負責設計功能規格;程式設計師(PG:Programmer)撰寫程式碼;品保師(QA:Quality Assurance)則負責保證產品的良率等。以開發一套心電圖檢查系統為例,SA與客戶溝通醫療業務層面並理解系統流程後,必須負責確認所需的軟體功能,包含掛號、排診、檢查、儀器傳輸、登打報告、上傳資料等,完成後再交由SD設計前述的各項功能並完成電腦系統層面的轉換,包含介面規劃、雛形設計、細節規格等。接著才交由PG去實行程式設計。以整個專案來看,SD就相當於是SA(外部)和PG(內部)間的溝通橋樑。

軟體工程師也稱為程式設計師,在開發的過程中,軟體工程師可能必須導入協作平台,例如IDE、GitHub、Bug Tracker等,工程師必須透過撰寫完整的開發文件,讓開發團隊有可依循的開發機制。同時,軟體工程師也必須編寫附帶清晰備註的程式碼,讓接手者可以看懂撰寫者的程式邏輯,方便後續維護或新增系統功能的任務。

職場

職涯探索影片
遊戲公司3Q時間-1

電玩遊戲的演進? 回憶殺?你第一次玩的遊戲是哪一款呢?邀請天火數位總經理林志帆先生與您分享!

日常工時比重
   藍色   系統開發(70%)
紅色   工時匯報及會議(20%)
橘色   協作平台(10%)

績效評核

個人能力(80%):在時程內完成任務且能避免出現Bug造成二次開發,完成上級所交付的開發數量。衡量標準為開發時程、品質、完成數量等。

團隊合作(20%):避免與各單位因溝通錯誤導致不斷開會或重製而耗費成本。與業務、諮詢、系統工程等部門配合良好,透過團隊協作快速達成內部的共同目標。衡量標準為合作效率等。

工作內容

系統開發(70%):包含閱讀需求規格書、撰寫程式碼、單元測試、程式碼檢視(Code Review)、簽入版控(Version Control)、測試報告書、資料庫測試等,都屬於系統開發工作。

工時匯報及會議(20%):透過工時系統上網登入平日的工作項目,例如系統測試或程式開發等,作為每季的考核績效評比之用。每週有內部會議報告當週的工作項目,包括已完成工作、未完成工作、未完成原因等,並提出下週的工作計畫。

協作與溝通(10%):軟體工程師必須與SA、SD、QA、甚至客戶溝通,避免因誤解而做白工。

崗位關係

上級:大多為專案經理或部門主管。軟體工程師必須匯報每週的工作進度給上級,也會與上級討論後續的工作任務。軟體主管通常可分為技術型與非技術型兩種,從工程師升任的為技術型主管,在程式語言技巧或者邏輯架構的領導能力絕對是可靠的;非技術型主管則是對醫療產業通常有深度領域知識(Domain Know-How),能幫助下屬更加理解醫療產業的生態。依據不同的上級屬性,可向其學習的內容也不太相同。

同儕:公司團隊默契非常重要,軟體工程師和各部門都有接觸的機會,包括與業務一同討論專案的規模,與設計師討論系統可行性,和客服部門說明產品的使用方法等,其他同儕的想法,常常都會帶給軟體工程師在設計工作上的刺激,有助於工程師思考實施彈性。

部屬:成為資深工程師或者小組長時,會負責帶領幾位較資淺的工程師。除了要教導資淺工程師了解公司現有的開發框架(Development Framework)、代碼分類、團隊開發流程等,也必須幫助工程師融入工作環境,同時也要負責程式碼檢視(Code Review),避免因資淺人員的失誤拖累延遲專案的開發進度。

外部客戶:產品要上線時需要和資訊室溝通,資訊室也扮演一定的客服角色,後續與主要客戶群聯繫時,也是會透過資訊室牽線。醫院通常擁有多個不同的系統,可能由不同的軟體公司負責開發。透過其他軟體工作,可能也會有互相整合介接的專案機會。

任職要求

教育程度/經驗

  • 學歷:一般要求為專科或大學以上,資訊相關科系畢業。因程式語言與英文關係密切,擁有好的英文基礎會對工作發展有幫助。
  • 經驗:三年以內的工作資歷視為初級(junior),超過三年則視為資深(senior)。軟體工程師的工具範圍廣闊,部分冷門程式語言在市場上雖有需求,但被替代的風險不低,因此挑選程式語言學習對職涯相當重要。另外,程式語言會不斷更新或發展出一套新的框架(Framework),因此工程師要保持積極持續學習的態度。

特別知識和技能

  • 程式語言:簡單分為前端(Front End)和後端(Back End),前端為使用者端介面的呈現,後端則是與資料庫連接。大多挑選一個語言搭配各自的框架(Framework),框架則是協助系統細部分工,讓已完成過的功能類別可重複使用,減少各自為政導致維護成本增加的可能,且透過框架能更清楚了解系統的生命流程。
  • 資料庫設計:SQL/NoSQL是較主流的兩種版本,分析客戶需求並從中規劃客戶的資料架構,從資料庫規劃就可看出系統大致的全貌及使用者案例圖。
  • 系統設計:分解功能的細部設計,包含防呆機制、例外狀況、系統流程、人工操作介面、模組的輸入/輸出、需要使用的技巧、開源程式碼(Open Source)或第三方軟體(Third Party Solution),這部分需要不斷累積經驗才能突顯個人設計功力。
  • 醫療產業知識:因應全球的醫療資訊發展,為整合彼此間的臨床醫學資訊,發展出HL7、DICOM等醫療交換標準。

工時薪水

薪資成長:學士大多可拿三萬以上薪酬,研究所畢業在初期投入工作的待遇會較優,碩士可達三萬五。累積三年工作經驗,薪資可達五萬以上。

平均工時:每週工作時數約40小時,大多不需加班。若有專案時程壓力會進行加班,事後可補休或申請加班費。另外,軟體工程師長時間在辦公室裡工作,長期下來可能會發生視力疲勞、手腕發炎等職業傷害,因此如何調適休息非常重要。

工作機會:若為新創公司大多為扁平式組織,整套軟體從後端至前端可能交由一人負責,因此學習多方面經驗後可以在職涯裡進行許多職務轉換。若是組織層級嚴謹的大公司,通常精進在某一部分的技術,持續累積資歷或能力,因此較有機會朝系統分析師或專案經理升遷。醫療行業本身就具有一定的技術深度,因此對軟體工程師的需求度非常穩定。

討論區[前往論壇]