軟體工程所需要的能力,遠遠不只是把程式寫出來。因此需要出門去參加技術研討會,更應該參與研討會與各種軟體開發活動 (event),加入團隊。以軟體工程為業,注定要持續拓展自己的認知領域、與團隊合作,職涯的發展才不會停滯。
我參與開源技術活動蠻長的時間了。從 2005 年左右開始接觸,2011 年開始投入
@PyConTW 的組織,到現在花時間在
@sciwork 與 sprint,一直得到很多支持。無論是學生或專業人士,不分產業與職涯階段,開源都為技術人提供成長的機會。
正職的開發工作與技術社群營運都同樣要求團隊合作技能。開源專案的衝刺開發 (development sprint) 是最好的例子。這種活動採取的形式與正職的開發工作幾無二致,差別只在於環境與題目。
Development sprint 非常有助於磨練軟體技術。為了鼓勵技術開發,台灣、日本以及許多地方的 PyCon 都有安排 sprint。但一年一次的頻率太低了,所以 sciwork 脫離 PyCon 的框架,服務各種主題的開源專案,每月舉辦 sprint。特別感謝台大物理的高英哲老師與清大物理的陳柏中老師在各個方面對 sciwork 的支持。
軟體是工具,必需要能用,也要告訴別人怎麼用。技術研討會提供組織與表現軟體應用的管道,也讓我們分享開發心得。
依照研討會的日程來規畫軟體開發的進度是非常有效的作法。學術界本來就會參考各大研討會的期程規畫研究案的進度。這種根據交付日期向 (時間線的) 左邊偏移 (shift-left;左移),估算開發進程的手段,在製造業與軟體測試領域也已行之有年。
研討會發表是易於確定又允許彈性的目標。研討會通常會有兩個日期幫助我們設定工作時程。先到的是徵稿 (call for proposal) 期限,後來的是會議報告的時間。我們可以依據這兩個日期分階段準備演講。在徵稿期限前完成主要的程式,根據產生的結果投稿。寫投稿的時候就開始作投影片,同時根據投影片的進展改進系統。在演講前一個月左右完成所有的程式與結果,然後精調演講內容與投影片。
專案愈複雜,時間線要愈往左移。但以地區型 (country-wide and regional) 的技術會議而言,依照上述的時程即可。每年作一兩次演講,就能有效推動自己的技術進步。