如何實現(xiàn)敏捷軟件開發(fā)?
敏捷開發(fā)究竟是什么?通俗地講,他就是將項目分為多個獨立運行,但又存在聯(lián)系地小項目,通過分別完成實現(xiàn)快速開發(fā)。整體來看,它的優(yōu)勢就是高效!
在軟件工程領域,有過很多軟件開發(fā)模型,如瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、噴泉模型、RAD模型、敏捷軟件開發(fā)模型、XP極端模型。這么多的模型各有各的應用場景、各有各的適用范圍,但我認為最實用開發(fā)模型還是敏捷軟件開發(fā)。
中國式軟件開發(fā)思路是什么樣的呢?從我接觸過的大多軟件項目來看,基本都有一個共同特點——就是必須快,客戶都是急脾氣,恨不得今天立項,明天就要你拿出產(chǎn)品來。
面對公司和客戶如此快節(jié)奏的要求,我們有辦法嗎?人們從生產(chǎn)、生活中總結出來一套即高效又優(yōu)質(zhì)的開發(fā)模式——敏捷軟件開發(fā)。
一、什么是敏捷軟件開發(fā)呢?
敏捷開發(fā)是以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發(fā)。在敏捷開發(fā)中,軟件項目在構建初期被切分成多個子項目,各個子項目的成果都經(jīng)過測試,具備可視、可集成和可運行的特征。換言之,就是把一個大項目分為多個相互聯(lián)系、而又可以獨立運行的小項目,并分別完成,從而實現(xiàn)快速開發(fā)的目的。
二、敏捷開發(fā)是如何實現(xiàn)的?
1. 將大的系統(tǒng)拆分成子項目
以前我們接受過的思想是立項后先要需求調(diào)研、分析,調(diào)研后出各種調(diào)研報告及需求說明書,需求搞定后,再進行概要設計(UE設計、UI設計、交互設計、數(shù)據(jù)庫設計、框架設計),概要設計完成后再進行詳細設計……這樣一個周期下來,耗費太長,當進度進入下一階段,當上一階段有問題時,會影響到整個項目流程的各個階段。
而敏捷方法是會將大的系統(tǒng)拆分成一個個子項目,再把子系統(tǒng)拆分成子模塊,盡量減少模塊間的耦合性、增加其內(nèi)聚性,這樣我們可以把團隊分成多個小組,各組可以同時作業(yè)。另外,當一個模塊需求發(fā)生變化時,對其它模塊的影響也不會太大,以實現(xiàn)降低開發(fā)難度的目的。
在之前提到的房產(chǎn)信息網(wǎng)平臺建設中,我們就將系統(tǒng)拆分成自行成交、經(jīng)紀成交、用戶權限管理、建委等外部接口、大宗資產(chǎn)、交易管理、平臺后臺管理、網(wǎng)站前端等模塊分別進行需求討論,需求討論后再將各模塊拆分成各個對象,對象與對象間只是通過公有變量傳遞信息,盡量減少與外部對象間產(chǎn)生關系。
總結:化整為零個個擊破
2. 團隊與客戶呆在一起
為了降低溝通成本,我們團隊所有人員直接開到客戶現(xiàn)場,隨時與客戶溝通,通過面對面的溝通,減少了理解偏差。
在項目的各個階段,我們一直與客戶保持零距離接觸,隨時交流、溝通。通過這種辦法,可以第一時間獲取需求、第一時間解決問題,減少出錯的可能性,提高開發(fā)效率,保證開發(fā)質(zhì)量。
而且,通過這種方式會更容易取得客戶信任,客戶能夠隨時了解到項目的工作狀態(tài)、工作進度。當相互間具備了信任關系后,余下的工作也會變得輕松、愉快。
在房產(chǎn)項目里,我們在客戶現(xiàn)場辦公,定期開會討論需求和設計,當有一些小的不確定問題,團隊成員會直接找到客戶相關人確認。在整個項目周期中沒有發(fā)生過大的需求變化。
總結:與客戶面對面的交流,降低交流成本,促進相互信任。
3. 用建模方式溝通
利用模型與客戶溝通,用模型來獲取用戶需求,而不是通過大量的文檔,編寫文檔費時費力,而且效果不好。實際,對于我們大多數(shù)人來說并不喜歡花大量時間看各種文字和參數(shù),而模型則會更直觀和立體。這里我說的模型不是單指我們平時設計的原型,它包括用例圖、類圖、部署圖、狀態(tài)圖、活動圖、包圖、對象圖、原型圖、效果圖、E-R圖等,利用不同圖形表達出產(chǎn)品的不同維度,使產(chǎn)品豐富而立體。
在房產(chǎn)項目里,我們用原型與客戶討論需求,用ER圖溝通數(shù)據(jù)庫設計,用類圖來表達產(chǎn)品的對象,用部署圖確定硬件部署環(huán)境及網(wǎng)絡結構,用活動圖來說明信息交互流程,用時序圖來表達在時間軸下對象間的交互。通過各種圖表來表達產(chǎn)品,利用這種方法會比較直觀,而且當發(fā)現(xiàn)錯誤修改起來也容易,不像利用文檔方式,修改不方便、維護困難,也不利于閱讀、理解。
總結:利用模型來代替文檔進行交流。
4. 敢于迎接變化
市場環(huán)境是產(chǎn)品的風向標,我們要隨時關注市場。為了迎合市場,產(chǎn)品也要隨時變化。
需求變化、設計變化……各種變化讓我們焦頭爛額,但做為產(chǎn)品人的我們同樣也應該接受改變,只有產(chǎn)品的快速變化,才能很好的迎接未來。
我們歡迎變化,只要是合理的,哪怕是開發(fā)階段,需求也同樣可能發(fā)生變化。
敏捷開發(fā)允許變化,通過變化給客戶帶來更大的競爭力。敏捷開發(fā)利用圖表來記錄需求,所有代碼都采用模塊式設計,將不同功能盡量分割,減少關聯(lián)。這就是它能夠、也敢于迎接變化的原因。
提到了敏捷的一個很重要思想就是“勇于迎接變化”。
就有人說了,你一定不是技術出身的吧。做技術的就討論變化,最不允許的就是確定的需求再修改。當產(chǎn)品經(jīng)理與技術人員溝通時,當談的一個復雜性操作時,經(jīng)常說:“你確定不會修改了吧,如果你確定需求不變,我就做!”,你要答應了,再找技術修改時哪就等于堵死了自己的后路。
實際,哪能一定有不修改的需求呢?我們做產(chǎn)品不也是時刻在迎接市場的考驗嗎?
在大海上航行,當風向變化,我們的大船不也得時刻準備掉頭,準備調(diào)整。變化,本身就是為了適應,沒有變化,就等于沒有進步。
但作為產(chǎn)品經(jīng)理的我們,能做的應該是利用自己的智慧和敏銳的市場洞察力,盡量的去感知風向,盡量的控制需求,在需求發(fā)現(xiàn)初期就做好充足的調(diào)研。
怕變化,不是辦法,在項目初期就要做好靈活可調(diào)整的方案,如果需求真的變化了,我們應該怎么辦,這才是敏捷的思想,需求的變化,我們誰能阻攔得了呢?
5.盡早、持續(xù)的交付可運行的階段性成果
之前我曾經(jīng)說過,一個項目的失敗,一般不是技術原因,多是因為客戶對我們失去信任。我們需要持續(xù)的、不斷的給客戶以信任感,一種是我們在客戶現(xiàn)場不斷的交流、溝通,讓客戶感受到我們的熱度。同樣,還需要盡早的、持續(xù)的給客戶提供相應的成果物(可運行的產(chǎn)品),讓客戶看到我們的能力。
當然,這樣還有另一個好處是,能夠把問題提早的暴露出來,不要羞羞答答像個小女人,不敢見人,只有提前暴露,才能提早解決,問題越晚暴露越難解決。
在房產(chǎn)項目中,當天完成的內(nèi)容在編譯沒問題后,會把修改的功能部署到平臺服務器上,以便于客戶隨時能夠看到變化,了解項目進度。如有問題的話,也能夠盡早暴露出來。
總結:為了降低項目風險,盡早交付可運行程序
6. 面對面的溝通
最快的交流方式就是面對面的溝通,在敏捷開發(fā)中,最提倡的方式是減少哪此冗余的、效率低下的溝通方式,用最快速的方法來直接溝通。讓技術人員、設計人員、客戶等所有團隊成員都在一起辦公,減少信息交流的斷路,讓溝通變得順暢。
在房產(chǎn)項目中,當有問題不理解,需要交流時,都是直接找我,我不清楚的直接找客戶。當我不在時,同事們也會直接與客戶進行溝通,任何人都可以直接獲取需求。
總結:直接溝通,減少中間環(huán)節(jié)
7. 可工作的軟件是最主要的衡量標準
出再多的文檔、再多的中間產(chǎn)物,都沒有出結果來得真切??蛻糇钣^心的不是中間物,而是成果物。對于敏捷軟件開發(fā)來說,可以工作的軟件是評測開發(fā)進度的最主要衡量標準。唱的再好,也不如做的好,做事要落地,實實在在、踏踏實實是敏捷開發(fā)的核心,不玩花拳繡腿。
總結:做出可交付的軟件是項目的核心
8. 保持恒定的開發(fā)速度
項目開發(fā)是一次長跑,短期內(nèi)迅速的加速,并不是長跑的方式,我們應該持續(xù)的、勻速的跑步方式,這樣才能保證團隊成員能一直堅持到最后。敏捷開發(fā)提供可持續(xù)的開發(fā)速度,這樣不僅團隊成員不至于疲憊,也有利于制定項目開發(fā)進度,控制開發(fā)周期。
總結:項目開發(fā)過程是長跑,不要一開始就沖刺
9. 定期團隊優(yōu)化
我們會每隔一段時間進行一次團隊建設,進行批評與自我批評,找出工作中的問題及影響個人與團隊發(fā)展的瓶頸。我們通過交流、溝通方式找出團隊及成員間的問題,然后進行自我調(diào)整,通過不斷的優(yōu)化、升級自有團隊,打造出一個能戰(zhàn)斗的隊伍。
總結:
如果項目管理者能夠很好的運用敏捷開發(fā)思想,就相當于在游戲世界里擁有了法器,美食世界里掌握了烹飪之道。
在敏捷開發(fā)里還有許多其它思想,但有的思想本人并不太認同,如用“測試驅(qū)動開發(fā)”,在中國與在國外不同,在國外有CMMI,對測試要求非常高,測試實際就是質(zhì)量檢查部門、質(zhì)量控制部門,有著很高的權限,對測試人員也是更加尊重和認同。
在國內(nèi),公司多重開發(fā)而輕測試,從你公司測試人員與開發(fā)人員的薪水上就能看得出來,誰更受重視。想讓測試人員驅(qū)動開發(fā),在目前的現(xiàn)狀中有些難以做到。
有時我想,前人已經(jīng)總結出了那么多好的思想,確實應該多學學、多看看、多用用,但拿來的思想并不一定全適用,每種思想都有著自己的成長土壤,不是只要多施肥、多澆水就能長出好莊稼。有時,也要看看,植物的習性,是否更適應我們的環(huán)境。
本文由@飛鷹長空 原創(chuàng)發(fā)布與人人都是產(chǎn)品經(jīng)理,未經(jīng)允許,禁止轉載。
題圖來自Unsplash, 基于CC0協(xié)議
- 目前還沒評論,等你發(fā)揮!