敏捷開發(fā)的一些體會
PS:哥雖然有Scrum Master的證書但還是反對什么都往敏捷頭上套。
公司之所以選擇這個項目進(jìn)行Scrum試點有如下幾個原因:
1、上一個版本原計劃半年結(jié)果做了1年,公司近三分之一的開發(fā)和測試資源砸了上去。
2、需求頻繁變化,產(chǎn)品經(jīng)理和開發(fā)測試人員相互扯皮。
3、產(chǎn)品倉促上線,大量功能未經(jīng)充分測試。
4、新上任的工程總監(jiān)是敏捷開發(fā)愛好者,正好拿此項目開刀。
現(xiàn)在Scrum正式開始了,但是我在這里要問一句我們開發(fā)軟件的目的是什么?這個還要問嗎?不就是為了發(fā)行后賺錢嗎!帶著這個問題,我們美國的項目經(jīng)理 我們準(zhǔn)備什么時候發(fā)行?哥承認(rèn)被shock了,那位大哥的回答是:我們現(xiàn)在開始敏捷了,一個sprint接一個sprint做,啥時干完啥時發(fā)行。好吧, 幸虧這個項目的測試不是哥直接負(fù)責(zé),你愛咋地咋地。(其實哥是對自己手下的兄弟有信心,真要做砸了我們估計還能成為僅有的亮點。)
帶著 同志們的祝福,項目開始了。每個sprint不管3721只要產(chǎn)品經(jīng)理腦袋一拍,一堆需求就塞進(jìn)來了。開發(fā)看著只有一句話描述的需求面對的回復(fù)是:現(xiàn)在是 敏捷開發(fā)了,要多溝通少文檔。溝你妹啊!一個在中國,一個在美國,郵件溝通一來一去一天就沒有了。電話?是你熬夜呢還是我黎明即起?3周一個 sprint,光把需求搞明白就一周去掉了,然后做啊做啊,還有2天sprint就要結(jié)束了,可是突然一看任務(wù)列表,50個只完成了30個,怎么辦?根據(jù) Scrum的教條,sprint是不能延期的,那么做不完的就踢到下一個sprint去好了,反正沒有發(fā)行日期,慢慢做好了。嗯,很好,這個sprint 我們順利完成了35個任務(wù)!做啊做啊,3個月過去了,產(chǎn)品經(jīng)理看看幾個大功能也有模有樣了,很好,我們宣布某某新版本順利發(fā)行!!!(先開槍再畫圈,很好 很強(qiáng)大!)
顯然這樣的敏捷開發(fā)是不能讓高層滿意的,大家坐下來總結(jié)經(jīng)驗教訓(xùn),推出了2.0版,更新如下:
1、大老板希望更快的看到成果匯報,sprint周期由三周縮短為兩周。
2、中美各成立一個Scrum小組,本地測試支持本地開發(fā),每個sprint的任務(wù)按比例分配。
3、產(chǎn)品經(jīng)理必須提供更完善的設(shè)計文檔。
4、加強(qiáng)溝通,每周雙方召開例會。
5、除去在美國的主產(chǎn)品負(fù)責(zé)人和Scrum master,在上海增設(shè)本地的產(chǎn)品負(fù)責(zé)人和Scrum master,部分決策可以就地做出,不必請示美國。
6、開發(fā)必須寫單元測試。
這些改動,3456點都是對項目整體有利的。第1點帶來的問題是如果開發(fā)工作稍 有延誤,留給測試的空間就十分有限了。第2點則喜憂參半,好處是上海團(tuán)隊有了更大的自主權(quán),壞處是測試開發(fā)比嚴(yán)重不足。因為上海的測試leader要兼任 Scrum master,所以測試和開發(fā)是2.5比7,而美國的測試和開發(fā)則是4比6。不過考慮到本地測試生產(chǎn)率高于美國,而且開發(fā)也愿意擠出時間來幫助測試執(zhí)行測試用例,在2個sprint之后,上海團(tuán)隊表現(xiàn)良好,而美國團(tuán)隊依然落后于進(jìn)度。
雖然2.0版的Scrum比起1.0版大有進(jìn)步,但是依然存在以下幾個問題:
1、周期太短,開發(fā)完成工作后留給測試的時間太少。
2、上海的測試長期超負(fù)荷工作。
3、因為周期太短,所以沒有時間做測試自動化,這樣導(dǎo)致在無法做自動化的回歸測試,只能依賴手工測試選取幾個關(guān)鍵測試用例保證之前的功能正常工作。
雖然還是有種種問題,但好歹是穩(wěn)步前進(jìn)了。周期恢復(fù)到三個星期,人手不夠開始招實習(xí)生,自動化測試沒時間做那么就上線后集中拉一段時間補(bǔ)課。
通過近半年的Scrum實踐,我總結(jié)了一些經(jīng)驗和大家分享一下:
1、一定要有一個release目標(biāo),要根據(jù)這個目標(biāo)倒過來排計劃。
2、PO和Scrum master必須有豐富的傳統(tǒng)開發(fā)模式經(jīng)驗,不然項目很容易失控。
3、每天的例會后Scrum master要迅速跟進(jìn),重大問題要立刻解決,什么工作生活平衡全是扯淡,執(zhí)行力必須是第一位。
4、雖說搞Scrum要求每個員工都積極主動,但是開發(fā)和測試leader還是要花很多時間分配任務(wù),調(diào)整優(yōu)先級。開發(fā)必須為測試和修復(fù)bug留出足夠時間。
5、自動化測試非常重要,早做晚做一定要做。
6、員工之間的知識共享非常重要,誰都有個頭疼腦熱,不能因為一個人暫時離開就影響項目進(jìn)度。
7、單元測試幫助很大,一是避免了很多基礎(chǔ)的業(yè)務(wù)邏輯錯誤,二是可以讓開發(fā)更清楚業(yè)務(wù)邏輯。