黃勝男王艷松
(1.時趣互動(北京)有限公司,北京 100000;2.國土資源部土地整治中心,北京 100035)
軟件互聯網行業對敏捷開發及管理模式的應用及分析
黃勝男1王艷松2
(1.時趣互動(北京)有限公司,北京 100000;2.國土資源部土地整治中心,北京 100035)
對目前國際上流行有效的敏捷項目管理方法之一的Scrum進行了研究,簡要介紹敏捷開發定義、適用場景、管理工具,以及相應的管理模式。詳細介紹Scrum沖刺流程和定義,以Scrum為例結合敏捷開發管理模式在互聯網及軟件行業實際應用情況,討論了其存在的優勢和可以繼續優化的方向。
Scrum;敏捷開發
1.1 簡介
相對于"非敏捷",敏捷開發方法更強調整個項目團隊之間的緊密協作,認為面對面的溝通比書面的文檔更加直接有效。這種興起于19世紀90年代的開發模式適用于需要頻繁交付的軟件版本,一般應用在緊湊、自我組織型的團隊中,使得整個團隊能夠很好地適應需求變化帶來的代碼編寫和團隊組織活動;同時它也更加注重人力在軟件產品開發過程中的重要作用。
1.2 適用情形
合理地應用此種方法會給當今軟件互聯網公司的管理和運營帶來事半功倍的效果。在通常情況下,敏捷開發的適用性可以從以下方面來衡量:
(1)從產品開發的角度看,敏捷方法適用于需求萌動并且快速改變的產品,例如項目初期快速收集得來的需求,特別是客戶對其自身需要毫無概念的情況下,擬定的需求可能會影響軟件未來的開發周期及資金等問題。
(2)從團隊的組織結構角度看,組織結構的文化、人員、溝通則決定了敏捷方法是否適用。如團隊溝通順暢,協作良好,大膽開放,樂于接觸新的管理模式,可以嘗試采用此方法。
1.3 項目管理
適用于敏捷開發方法的管理,已經有一些成熟的項目管理工具,可以用它們來幫助規劃、跟蹤、分析和整合敏捷開發工作。這些工具在敏捷開發中扮演重要的角色,也是知識管理的一種方法。通常包括:版本控制整合,進度跟蹤,工作分配,集成發布和迭代規劃,論壇和軟件缺陷的報告和跟蹤等。
當前互聯網行業內常見的敏捷方法包括:敏捷數據庫技術,敏捷建模,自適應軟件開發,特性驅動開發,動態系統開發方法,精益軟件開發,AUP,Scrum,極限編程,探索性測試等。常用的項目管理工具包括:JIRA,Microsoft Project,Clarity Process Manager等。
2.1 Scrum流程簡介
Scrum是一種迭代式增量軟件開發過程,通常用于敏捷軟件開發的管理。Scrum開發流程中包含了三大角色,包括同項目經理類似的Scrum主管角色,主要負責維護過程和任務,統籌管理項目;第二大角色產品負責人代表了利益所有者,主要負責確定產品的功能和達到要求的標準,指定軟件的發布日期和交付的內容等,同時有接受或拒絕開發團隊工作成果的特權;而第三類開發團隊則包括了所有的開發人員,主要負責軟件產品的開發工作,團隊人數控制在5~10人左右,每個成員負責不同的技術,但要求每位成員必須要有很強的自我管理能力和表達能力;成員可以采用任何工作方式,只要能達到Sprint沖刺的目標即可。
每個周期叫做一次沖刺,時間一般控制在15到30天,在一個沖刺的時間內,開發團隊創建可用的軟件增量。沖刺周期中的每一天都會舉行項目狀況碰頭的會議,被稱為“Scrum”或“每日站立會議”。會議上,團隊成員需要回答三個問題:今天你完成了哪些工作?下一步你打算做什么?完成你的目標是否存在什么困難?成員回答后,Scrum主管需要記錄這些問題。每一個沖刺完成后,都會舉行一次沖刺回顧會議,在會議上所有團隊成員都來總結這個沖刺的工作,反思成果與問題。舉行沖刺回顧會議是為了進行持續過程改進。
2.2 Scrum特點
Scrum提倡所有團隊成員坐在一起工作,改善了交流,以團隊為基礎,有助于創造自我組織的團隊,優化了合作方式;制定了一個非常簡單的可重復執行的流程,強調項目有關的規范,是現有設計流程的一個總結。
Scrum的一個關鍵原則是承認客戶可以在項目過程中改變主意,采用了經驗方法——承認問題無法完全理解或定義,關注于如何使得開發團隊快速推出和響應不斷出現的需求的能力最大化,是最大化生產率的一種方法。
更重要的是,在項目負責人的帶領下,團隊會定期反省如何能夠做到更有效,并相應地調整團隊的行為,不斷優化進步。
3.1 計劃管理方法
Scrum在本文的應用中主要是指用作項目計劃管理方法。按照每個季度或長期存在的產品的整體計劃劃分Scrum項目組。每個Scrum組的人員組織形式包括:一個項目負責人,即項目主管;開發團隊;QA團隊;以及一個產品經理。
3.2 季度計劃
每個季度之初的第一次沖刺會議上,項目負責人先跟產品經理協商,列表整個季度的主要計劃:按照完成的難易程度分為最低目標,最高目標。全員參會討論各個目標的合理性,頭腦風暴對于各個目標的實現方式和方法,并由項目負責人進行匯總,最后確定整個季度的最低目標和最高目標。
3.3 沖刺周期的任務拆分
每個沖刺周期的工作計劃是從產品經理處提出新的產品需求,交予項目主管,同時加上項目主管提出長期工作計劃,制作成的沖刺計劃表。計劃表中的每個計劃按照優先級不同排序完成。項目組全體成員參與沖刺會議,討論本沖刺中各項需求計劃,大家都沒有異議后,按照自己負責的領域主動領取沖刺計劃表中屬于自己領域內的任務項,并根據難度及能力給出一個預計完成時間。如果遇到大型或較為繁瑣的任務,領取后可自行拆分為一個沖刺周期內可實現的小任務,然后給出子任務的進度估計,以及總體任務需幾個分期。每個沖刺周期持續時間2周,如果任務完成沖刺時間還沒到可以繼續領取剩余的拆分任務項;如果一個沖刺的預期時間內沒有完成任務,也可申請延期。
3.4 月末產品展示會
每個月兩次沖刺周期的時間結束后,月末有一個產品展示活動。各個Scrum項目組分別拿出自己階段性成果在公司平臺范圍內做一個分享展示,并不要求一定是成型的產品,某個功能的簡單優化也可以,只要能體現出不同和優化的點即可,主要目的是鼓勵交流分享,鼓勵創新和階段性成果。
3.5 一些其他改進
為了節約時間,互聯網公司在實際應用時,一般是前面一個沖刺的總結會和下個沖刺的討論會同時進行,放在每個沖刺的第一天。其中沖刺總結會相對輕松,提的意見和建議也并不要求是實際的技術問題,只要與項目進展相關都可以提。
月末的產品展示會上也是一個各個Scrum組交流的場合,類似茶話會,氣氛比較輕松。
關于日常考勤,對于Scrum組中的同事也做出了人性化的調整,凡是參與Scrum項目的員工,理論上上下班無需按時間記錄考勤,只需要完成日常工作即可。
應用敏捷方法不僅可以在項目的開發上帶來便捷,也可以對日常工作的管理工作產生積極影響,比如:在項目負責人的選擇方面:為了適應敏捷開發,項目組的負責人首先在技術上面應充當領頭羊的作用,可以在任何人遇到疑惑時指出合適的方向,同時又不應訥于言表,應當思維活躍清晰,又善于引導項目組成員發散思維,重視頭腦風暴,重視團隊協作,有效溝通。
關于技術分享:敏捷方法注重溝通。無論誰掌握著新技術或做出了新的突破都會以實際資金激勵的方式鼓勵員工組織展開分享。鼓勵分享與共贏,共同進步。鼓勵項目組內部的技術分享會,也會鼓勵公司級別非技術層面的綜合分享,可以拿出自己任意領域的知識經驗和閱歷,只要可以幫助到團隊都會得到支持。
不斷創新和學習:重視創新,無論開發的流程上,測試的探索上,還是項目管理上,都應不斷學習,不斷探索新方法新思路;同時在項目組內部也鼓勵改革,嘗試新技術新手段。
使用敏捷方法對于項目進展而言遇到的一個很重要的
問題是對項目的拆分比較困難:大的需求問題開發起來勢必花費較長時間,做不到短平快就失去了沖刺的意義,不得不拆分成小問題;但大需求一旦拆分成很多小需求,每個需求的改動在每個沖刺結束后便不易看到整體上的實質效果,同時,在業務方面聯系緊密的模塊在實際的拆分上面總會互有依賴,如何減少耦合也是項目拆分時候的難點。
而且目前的敏捷方法還是在開發層面使用廣泛,在管理流程中并沒引入設計人員和運營人員參與。目前運營人員扮演的角色還是主要與用戶打交道,以及反饋bug給QA人員,更偏向于產品的技術支持,而產品的新需求多數還是產品經理設計出來的,雖然說基于大量用戶數據,但數據是死的人是活的,如何使死的數據應運而生出不斷變化的需求,是一個需要考慮的問題;因此考慮是否可以在管理的每個沖刺會議中引入運營人員,更真實地反應用戶遇到的實際問題和真正有用的需求,會比開會頭腦風暴時由業務設計者本身代替用戶想的要周到和實際。而目前的設計人員只同產品經理和前端開發人員打交道,只有當開發提出一個設計需求時,設計人員才會參與到項目中,個人感覺也可以增加設計人員在項目中的比重,多收集反饋,傾聽用戶的聲音,同時關注同類產品;用戶的反饋可以直接交予設計提前做準備,這樣當開發或者產品提出對應需求時,設計人員可以有的放矢,而不是紙上談兵。
另外,Scrum會議的效率還可以進一步提高,例如每日的站會可以在項目組內建立討論組或者QQ群,借助網絡在線交流一下,本身不會花費很久的時間,同時在線交流的優勢在于交流記錄可以留存,方便周期結束后總結會議上使用。
第三,不同于KPI,Scrum不是能夠明確量化個人任務的管理方式,其實還是比較注重團隊合作,項目的目標制定也是以Scrum團隊為單位,具體分給個人的工作任務相互之間也是有需求有交集的,不太適合公司層面的績效考評,因為任務完不成只需向項目負責人申請延期即可,與項目組成員自身關系不大,在管理層面而言,并不是一個好的激勵團隊的方式,因此,如果找到一個能更好的掛鉤項目組成員績效的管理方式,也許會對員工起到更積極的促進作用。
[1]韓鵬.小規模團隊的敏捷開發研究[J].軟件工程師,2011(7):42-46.
[2]陳楠,陳文培.敏捷開發中相關技術的應用[J].計算機應用與軟件,2011,28(4):202-204.
[3]JIM BIR D.三種敏捷開發方式技術指南[EB/OL].http://www. searchbi.com.cn/showcontent_86688.htm,2014.
[4]陳國棟,羅省賢.Scrum敏捷軟件開發方法實踐中的改進和應用[J].計算機技術與發展,,21(12):97-99.
[5]張智海,周國祥.Scrum方法的研究與分析[J].合肥工業大學學報(自然科學版),2010,33(2):197-200.
Application andAnalysis ofAgile Development and Management Mode in Software Internet Industry
Huang Shengnan1Wang Yansong2
(1.Time Interest Interaction(Beijing)Co.Ltd,Beijing 100000; 2.Land Management Center of Ministry of Land and Resources,Beijing 100035)
tract】 Scrum,which is one of the popular and effective agile project management methods in the world,is introduced in this paper.The definition,application scenarios,management tools and management modes of agile project management are introduced briefly.Scrum sprint process and define are introduced.Taking Scrum as an example,combining with the practical application of agile development and management mode in the Internet and software industry,the advantages and optimization direction of agile development are discussed.
words】 Scrum;agile development
TP311
A
1008-6609(2016)09-0087-03
黃勝男,女,山東濟南人,碩士,軟件工程師,研究方向:軟件工程。