l

2013年3月7日 星期四

敏捷開發團隊所需基本技能

Mar. 06 17:06~18:24

螢幕快照 2013-03-06 下午5.05.46

Teddy自己的經驗,要組織一個Scrum開發團隊(不含Product Owner與ScrumMaster),團隊成員至少需要具備三種能力:

  1. 設計與實作能力。包含熟悉工作所需的程式語言、基本的資料結構與演算法觀念、作業系統原理、物件導向設計能力、設計模式等。幸運的話,以上這些訓練資工系所的學生在學校時應該都會學到。
  2. 開發環境與支援工作。俗話說「工欲善其事,必先利其器」,支援開發工作的技能也是很重要的一項能力。包含要熟悉IDE的使用、了解版控系統、實施自動化測試與持續整合。
  3. 流程。做任何專案一定需要一個流程,不管是waterfall抑或是現在流行的敏捷方法。

最近Teddy到某公司協助公司內部三個團隊導入Scrum,在實際應用Scrum之前,Teddy先幫團隊上以下這兩門課:

  1. Scrum敏捷方法實作班
  2. 單元測試與持續整合實作班

上課的目的主要是「對齊」團隊成員心中的認知,讓他們對於上述「開發環境與支援工作」以及「流程」有基本的認識,日後可減低導入Scrum的障礙。至於「設計與實作能力」暫時先「大膽假設」公司在徵人的時候已經初步篩選過了一次了。以上三項能力,如過真的有不足之處,日後實施Scrum之後還有很多持續改善的機會,也不能一開始上太多課正事都不做,公司會破產的挑眉質疑

***

為什麼要上Scrum

這個問題好像是廢話,因為要導入Scrum,所以當然要先上Scrum課程,教團隊成員Scrum長成什麼鳥樣子挑眉質疑。不過快5年前Teddy第一次幫團隊導入Scrum之前是沒有上什麼「正式」的課程,只花了一個下午大概2~3小時用幾張投影片與幾個導入單位工作上真正的story練習sprint planning meeting隔天就開始第一個sprint。不過當時情況不一樣,Teddy每天都到導入單位「上班 打工」,時間長達半年,團隊有任何問題Teddy都在現場立即服務。

大部分有意願導入Scrum的公司或團隊沒有那麼充足的預算可以找一個導入顧問連續輔導那麼長的一段時間,所以後來的導入規劃事前都會安排訓練課程。不過這不是重點,重點是後來Teddy發現全部團隊成員先上過課之後再推行Scrum的效果會比沒有上過課,或是只有少數成員上過課的成效要好很多。更重要的是,多上課Teddy才能多賺一點生活費。

為什麼要上單元測試與持續整合

了解單元測試與持續整合的鄉民們可能會想:「這麼簡單的東西也需要教喔」。Teddy發現台灣軟體開發團隊在「軟體工程實務做法」上面的貧富差距其實是很大的。技術強的團隊可能嘗試過各式各樣的實務做法,而較傳統的團隊甚至連版控系統才剛剛開始導入使用,更不用談自動化測試與持續整合了。

Teddy自己開發軟體的經驗,讓Teddy堅信如果少了自動化測試與持續整合,軟體開發(無論是否採用敏捷方法)會變成一件非常痛苦的工作:開發人員不敢也不願意改程式,因為怕改錯,而且改錯了還不知道(因為沒有測試案例更不可能執行迴歸測試)。軟體一步、一步朝向「硬體」邁進很遜。雖然這不是什麼偉大的學問,但對於許多基層的軟體工程師而言,卻是很實用的能力。

***

友藏內心獨白:難道軟體開發團隊也有M型化的現象?

沒有留言:

張貼留言