Hello,大家好~這是我們項目部第一期培訓,主要內容呢,是TFS與Project協同工作。
1. 培訓大綱
Agile與Scrum
介紹Agile與Scrum的知識。
可能有的同事就會吐槽了,明明是TFS與Project協同工作的培訓,怎么會涉及到Agile與Scrum呢?這有兩方面的原因。
第一個原因,最近公司在推廣學習Scrum,也組織了兩次視頻培訓,相信參加過的同事都會對Agile與Scrum有個大致的了解。那么,現在我們做一個結合項目部實際情況的Scrum試點與應用,是順勢而為的事情。
第二個原因,其實以前我們有過一次這樣的培訓,那會不叫Scrum培訓,叫TFS培訓,培訓之后用了TFS一段時間效果不是很理想,我覺得其中一個原因是我們沒有達成共識。
其實一開始部門要實施TFS我是拒絕的,因為,你不能讓我用,我就馬上去用。第一,我要先了解一下,并回答它的三個哲學問題,我不懂就去用,用了之后又沒領會精髓,然后又來培訓,PPT duang一下,很好很強大,然后你們回去用了之后,覺得效果根本沒有這么好,這樣聰明如你們一定會罵我。我實施Scrum有將近兩周,感覺還不錯,有一種滑板鞋在地板上摩擦摩擦的節奏感,所以我覺得Scrum真的有效。我用了之后是這個樣子,希望經過這次培訓,團隊達到共識,你們回去用了之后也會是這個樣子。
我們如何實施Scrum
實施模式決定我們的實施策略。這部分將立足我們項目部目前的實施模式,采用Scrum之后,我們的實施策略將會發生怎樣的變化。
Scrum在TFS中的應用
將介紹TFS最新的Scrum 2013.4模板以及它在TFS中是如何使用的
TFS和Project協同工作
將介紹如何在Project中制定工作項,以及如何與TFS協同工作
2. Agile與Scrum
2.1 Agile是什么?
它是一種軟件開發方法學,包括Scrum、XP極限編程、RUP統一開發過程、Crystal(水晶方法)、FDD(特征驅動開發)、DSDM(動態系統開發方法)、Lean精益生產等敏捷方法。
Agile的體系結構如下圖,它囊括了上述所有敏捷方法,它是一種敏捷思想。
2.2 Agile價值觀
以價值為導向
我們軟件生產的最終目的是以優良的軟件產品和優質的服務讓客戶滿意,而Agile的原則之一,是通過可持續迭代及早交付有價值的可以工作的軟件,這是開發過程中優先級最高的事情。
強調以人為本
人在軟件開發中的作用是舉足輕重的,力求溝通無障礙,重視開發團隊成員有效的面對面交流、溝通與協作
快速響應變化
客戶在沒看到成型的軟件產品之前,需求是模糊不確定的,因此我們開發出來的產品必然需要應對客戶需求的頻繁變更,Agile要求客戶始終參與整個開發過程,不斷獲得反饋不斷適應需求變更,從而使最終的產品充分符合客戶的要求,雙方都皆大歡喜。
2.3 Agile宣言
這種精神上的東西只有經過長期實踐之后才會有更深層次的感悟,現在只能說說我的一個淺薄的理解。
個體和交互 勝過 過程和工具
傳統開發過程過分強調流程和工具,而敏捷開發強調以人為本,溝通無障礙
可以工作的軟件 勝過 面面俱到的文檔
經歷過多年的項目實施,大家也了解,文檔從來都是為了項目驗收而寫的,真正開發過程中需要文檔的情況是少之又少的,敏捷開發不是不注重文檔,而是追求文檔簡潔,設計靈活,可以工作的軟件才是關注的重點。
客戶合作 勝過 合同談判
開發符合客戶設想的功能需要的是持續頻繁的客戶反饋,而不是依賴合同關于功能的陳述,客戶全程參與我們的開發過程,他們可以直觀地看到每個功能的演變,直至這個功能滿足了他們的需要。
響應變化 勝過 遵循計劃
計劃趕不上變化,一味的遵循既定的計劃會導致延期交付,如何在開發過程中尋求靈活性與穩定性的平衡,這是個值得反復商榷的問題。
2.3.我們為何需要Agile
這要從我們目前的項目實施現狀說起。
長周期駐外開發的項目實施模式浪費人力資源和增加時間成本
(項目實施模式決定我們的實施策略,短期內無法改變這種實施模式)
我們的項目實施周期基本上需要一年到兩年,而且開發人員是常期駐扎在甲方單位開展工作,那么這種長周期駐外開發的項目實施模式勢必浪費人力資源和增加時間成本。
我們曾提過一個設想,就是把項目開發人員集中在公司開展工作,項目現場只留項目經理負責溝通與協調,但是要實現這個設想,要滿足兩個條件,第一是擁有一支實現實時保障、實時響應、敏捷開發的項目實施團隊作為支撐,第二是我們的業務系統必須完全實現產品化。以我們目前的人員配備以及業務系統半產品化的現狀,還實現不了,但是這將會是我們項目組的發展目標,我們要走產品化發展道路,打造一支敏捷開發項目實施團隊,只有這樣,才能真正開創市場與規模齊飛,利潤與收入暴漲的局面。
不完整的瀑布式開發模式,造成絕大部分項目延期驗收,軟件質量不能令甲方客戶滿意
人員短缺固然是其中一個原因,更主要的原因是我們目前是以傳統的瀑布式開發模式為主,遵循預先計劃的需求分析、設計、編碼、集成、測試、維護步驟順序進行,嚴格來說,我們不是完整的瀑布模型,因為少了測試這重要的一環。我們目前的測試是以開發人員自行完成功能測試,由甲方客戶完成可靠性測試和易用性測試。可以想象,客戶心里是有多吐槽。這勢必影響我們公司在甲方客戶心中的形象,造成不信任情感情緒蔓延的局面。諸多因素造成軟件質量問題,如果我們不改變這種開發模式,將會導致更嚴重的軟件質量危機,到那時將回天乏力,為時已晚矣!慶幸的是,公司內部目前力推Agile與Scrum敏捷開發模式,這是我們突破現狀走向產品化發展道路的契機。因此,我們轉變開發模式,引入Agile與Scrum。
實施團隊實行分布式管理模式,管理人員無法實時把控項目進度
我們的項目遍布大江南北,實施團隊人員也分散各地,實行的管理模式是分布式的,導致管理人員無法實時把控項目進度。往往到了年底前兩個月,為了回款才突擊進度完成目標,相信這點大家也深有體會。
分布式管理模式的好處之一,就是我們的現場實施團隊是相對自由的,項目工作任務基本自行安排,項目進展自行控制,基本上完成年底回款目標就行,但這要求現場項目經理具備較高的管理能力和執行能力。Agile的理念之一,就是信任開發團隊,給予充分自由,可以說我們現在的分布式管理模式天然帶有Agile的基因。
為趕工期,人員經常加班加點,一點也不愉快!
這點相信大家也深有體會了。
那么Agile是否能解決上述所有問題呢?答案是
Agile不是銀彈,不能指望它能解決所有問題。
那么它到底能幫助我們什么呢?上面提到了Agile是一種軟件開發方法學,它囊括了眾多優秀的敏捷開發方法,我們不能所有方法都嘗試,而Scrum是全球范圍內應用最廣泛的一種。所以我們也順應潮流趨勢,引入Scrum敏捷開發方法。
2.4 Scrum是什么
它是一種迭代式增量軟件開發過程。這張圖基本上囊括了它的所有要素。
三大角色:
Product Owner產品負責人
Scrum Master敏捷教練
Scrum Team敏捷團隊
三大工件:
ProductBacklog產品待辦工作項
SprintBacklog沖刺待辦工作項
Working Software可工作軟件
五大會議:
產品Backlog梳理會議
Sprint迭代計劃會議
每日立會、Sprint評審會
Sprint回顧會
實施流程:
產品負責人PO負責產品需求的提煉、條目化、優先級排序,創建和維護產品待辦工作項。
召開迭代計劃會,PO講解重要條目,由開發團隊估算工作量和選擇本次迭代工作項。
進入迭代周期開發,在這個過程中會進行每日例會,慣例回答昨天干了什么,今天要干什么,我遇到了什么困難。
一次迭代結束之后是迭代評審會,敏捷團隊演示迭代成果,產品負責人以用戶故事是否成功交付來評價迭代完成情況。
迭代反思會,也稱回顧會議,這個會議主要是總結好的方面,改進不好的方面,同時提出解決方案。
Scrum Master在整個流程中扮演的角色是同時服務于產品負責人PO與開發團隊,結合實際情況,提出適合的Scrum實施方案,確保Scrum過程的順利執行,這個角色關乎到實施Scrum的成敗。
2.5 Scrum能做什么?
給予信任自由,開發團隊自行管理迭代周期開發任務,擺脫命令式開發約束
一般來說,各項目開發團隊的迭代周期是獨立的,互不干擾的,除非有工作項需要指派到其他項目組的開發人員。所以,Scrum能給予開發團隊充分的信任與自由,自行管理迭代周期開發任務,擺脫命令式開發束縛。
迭代周期開發任務清晰可見,目標明確,同時目標的達成在開發團隊能力范圍之內
開發團隊根據能力自行安排迭代周期任務,那么迭代目標是能夠達成的,知道目標在哪里,我們才知道如何發力。
縮短反饋周期,客戶的反饋刺激我們持續校正軟件質量和優化產品細節,正反饋給予人成就感
我想,玩網游的人應該都有過打個怪會爆裝備,通過關就升級的體驗,為什么人容易沉迷網游,其中一個原因在于它的反饋周期很短,基本上你水平到了,就立馬給你獎勵反饋,而現實生活中大部分都是長反饋周期的事情。
Scrum實施過程中,開發人員與客戶的反饋周期縮短到一次迭代,客戶的反饋刺激我們持續校正軟件質量和優化產品細節,而且,客戶的正反饋能給予我們成就感。
形成迭代周期開發節奏,提高軟件開發生產力,進入敏捷開發良性循環
這是至關重要的一點。可以這樣說,如果沒有形成一種可持續穩定的開發節奏,那么我們將維持現在的實施現狀與生產力水平,這是大家都不愿看到的。如何促進開發團隊形成這種節奏,是Scrum Master的任務之一。
(以下內容為部門內部材料,不方便公開)
3.我們如何實施Scrum
3.1 分布式Scrum組織架構
3.2 Scrum實施框架之模型
3.3 Scrum實施框架之工件
3.4 Scrum實施框架之會議
3.5 Scrum實施框架之工具
3.6 Scrum實施框架之文檔
3.7 Scrum實施框架之原則
4.Scrum在TFS中的應用
5.TFS與Project協同工作