在產品生命週期越來越短,開發者必須更頻繁、更迅速回應市場需求的今日,敏捷開發逐漸成為越來越多企業加速內部開發的利器,趨勢科技從2007年導入敏捷開發之後,歷經4個階段的進展,從上手、開發再利用、開發流程標準化到現在導入持續整合,敏捷開發已經成為趨勢科技主要開發方法,目前有40~60%的專案都是以敏捷開發完成。
趨勢科技研究開發部協理陳美瑛解釋,趨勢導入敏捷開發的4個階段,分別是2008年導入敏捷思維、制定敏捷指標的初始化階段,2009到2010年,以建立團隊敏捷開發流程為目標的開發再利用階段,以及2010到2011年清楚擬定評估標準,並決定以Scrum和趨勢自定義的IDP程序(Iterative Development Process)作為開發方法的標準化階段,以及2012年至今,開始評估敏捷開發對企業目標造成的影響的持續改進階段。
陳美瑛表示,當初有主管只是想嘗試一個新創意小程式,依照傳統開發流程評估,研發團隊必須花3到6個月才能完成,趨勢這才發現舊有的開發流程已無法適應技術、顧客要求越變越快的競爭市場,因此,在2007年,趨勢科技由管理階層開始制定方針,「由上至下」地開始推行敏捷開發。
從上至下的支援,以獎金激勵工程師養成敏捷開發習慣
對於一個軟體公司來說,研發團隊就是企業的命脈,改動開發方法與流程,等於改變了研發人員根深蒂固的工作慣性,因此趨勢管理層內部先召開執行會議,開始在擬定推廣敏捷開發的方針,包括能對新技術、新客戶要求迅速做出反應的思維,以及能將此反應迅速轉化為行動的實踐力等,如何在專案經理、研發人員以及測試人員間落實。
陳美瑛表示,任何新技術的導入都會有陣痛期,何況是對工程師作業影響甚大的開發方法,因為在執行初期,工程師除了必須完成舊有的工作之外,還要參加額外的站立會議、以及填寫工作項目(Work Item)等事項,這些都會增加工程師的工作負擔,在這種情形下,陳美瑛認為從公司「由上至下」的支持就很重要了。
因此在2008年導入初期,趨勢從公司組織管理層面,來落實對新開發方法的推動,例如訂定了團隊的敏捷指標(Agile Indicator),例如交貨給客戶的平均時間,就是評估指標的方式之一,並將這些敏捷指標的分數,作為研發人員的工作獎金的發放依據,從管理制度面激勵員工迅速習慣敏捷開發思維。
導入敏捷開發,可能對既有組織造成衝擊
陳美瑛也表示,除了工作習慣的改變,敏捷開發也對既有的團隊組織造成衝擊,舊有以瀑布式開發為目的團隊,分工明確,例如有專案經理、研發工程師和測試工程師的角色,在開發流程中也各自負責不同的開發階段,例如分為專案規畫、程式撰寫及測試等階段,工作內容和參與階段都區分的很清楚。然而在一個Scrum團隊裡,研發工程師和測試工程師常必須互相支援,研發工程師必須有測試的思維,測試工程師也要有寫程式的能力。
不過,企業既有的組織及員工職能很難在一夕之間轉換,為了實行敏捷開發而擱置既有的職能,要求員工重新學習一套新的開發技能的難度很高,陳美瑛表示,這些既有的包袱,都是企業導入敏捷的一個巨大挑戰。
她舉例,從瀑布式模型轉到敏捷開發,衝擊甚鉅的是測試人員的工作流程,因為瀑布式開發模式下的測試人員,可以有一個清楚規劃的測試時期,能對產品的新功能與舊功能作獨立、與綜合的測試,然而在敏捷開發的要求下,每一個階段性衝刺(Sprint)可能都有功能新產出、變動,讓測試人員的工作複雜度大為提高,陳美瑛表示,在此情形下,自動測試和研發人員的單元測試(Unit Test)就比瀑布式開發模型下更為重要了。
趨勢科技研究開發部專案經理林志銘表示,敏捷開發是一種思維,因此在導入時,趨勢沒有強制規定開發人員該用哪套工具,因此不同的團隊也嘗試了不同敏捷開發協助工具,例如微軟的TFS、MOOVIA、Gravity、Agilefant甚至Excel,只要符合團隊的習慣與文化,都是可選用的協助工具。專案越不穩定,越適合敏捷開發
然而陳美瑛也表示,不一定每一個專案都適合以敏捷開發方式進行,專案經理人必須先評估一個專案是否含有「不穩定要素」,例如未成熟的技術、未知的團隊成員能力、以及瞬息萬變的客戶需求等,若這些要素含量過高,則此專案會較適合敏捷開發,反之,若一個專案在成員能力、採用技術和客戶要求都相對穩定時,採用敏捷開發的成效就較有限,反而會增加如站立會議、填寫工作項的額外時間成本。
陳美瑛表示,根據以上原則,趨勢科技目前已有40~60%的專案是採用敏捷開發方法,不過在不同團隊間,執行敏捷開發的手段也會有差異,例如敏捷開發中的主流方法Scrum、以及IDP來實踐敏捷精神,林志銘也表示,不是所有團隊、所有專案都要按照「敏捷軟體開發宣言」中的原則來執行,不同的團隊面對不同專案,可選取最適合的原則來遵守,不必墨守成規。
陳美瑛表示,導入敏捷規劃,最重要的關鍵是讓團隊成員具備敏捷開發的心態與思維,而非只是強迫工程師進行站立會議、或者每日填寫工作項,否則無法真正發揮敏捷開發的效果。文⊙楊智傑
敏捷開發的導入要點
要點1. 先導入敏捷開發的思維,再導入方法
要點2. 依據專案的「不穩定要素」,如客戶需求是否一變再變等等,來決定是否採用敏捷開發
要點3. 依照不同團隊開發習慣,選擇最適合的敏捷協助工具
要點4. 不必死守敏捷宣言,選取其中最適於專案的幾項執行