談軟件項(xiàng)目快速開(kāi)發(fā)方法——敏捷開(kāi)發(fā)

5 評(píng)論 14884 瀏覽 102 收藏 13 分鐘

以前,我寫(xiě)過(guò)一篇文章“追溯軟件項(xiàng)目失敗的根源”,里面講述了我在做房地產(chǎn)信息平臺(tái)建設(shè)中遇到的各種困難,有需求不明確、需求蔓延、多團(tuán)隊(duì)作戰(zhàn)、項(xiàng)目時(shí)間緊、人員變動(dòng)、需求變更頻繁、溝通不順暢、信息傳遞過(guò)程失真……

在項(xiàng)目開(kāi)發(fā)過(guò)程中我們經(jīng)常會(huì)遇到各種問(wèn)題,為了可以使項(xiàng)目順利推進(jìn),做為產(chǎn)品經(jīng)理,必須十八般兵器樣樣精通,就算沒(méi)有機(jī)緣學(xué)會(huì)乾坤大挪移,至少也能打上一趟擒拿手。

今天我要說(shuō)的就是產(chǎn)品經(jīng)理的擒拿手——敏捷軟件開(kāi)發(fā)

在軟件工程領(lǐng)域,有過(guò)很多軟件開(kāi)發(fā)模型,如瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、噴泉模型、RAD模型、敏捷軟件開(kāi)發(fā)模型、XP極端模型。這么多的模型各有各的應(yīng)用場(chǎng)景、各有各的適用范圍,但我認(rèn)為最實(shí)用開(kāi)發(fā)模型還是敏捷軟件開(kāi)發(fā)。

中國(guó)式軟件開(kāi)發(fā)思路是什么樣的呢?從我接觸過(guò)的大多軟件項(xiàng)目來(lái)看,基本都有一個(gè)共同特點(diǎn)——就是必須快,客戶都是急脾氣,恨不得今天立項(xiàng),明天就要你拿出產(chǎn)品來(lái)。

面對(duì)公司和客戶如此快節(jié)奏的要求,我們有辦法嗎?人們從生產(chǎn)、生活中總結(jié)出來(lái)一套即高效又優(yōu)質(zhì)的開(kāi)發(fā)模式——敏捷軟件開(kāi)發(fā)。

什么是敏捷軟件開(kāi)發(fā)呢?

敏捷開(kāi)發(fā)是以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開(kāi)發(fā)。在敏捷開(kāi)發(fā)中,軟件項(xiàng)目在構(gòu)建初期被切分成多個(gè)子項(xiàng)目,各個(gè)子項(xiàng)目的成果都經(jīng)過(guò)測(cè)試,具備可視、可集成和可運(yùn)行的特征。換言之,就是把一個(gè)大項(xiàng)目分為多個(gè)相互聯(lián)系、而又可以獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,從而實(shí)現(xiàn)快速開(kāi)發(fā)的目的。

1

還是具體來(lái)說(shuō)下敏捷開(kāi)發(fā)是如何實(shí)現(xiàn)的?

將大的系統(tǒng)拆分成子項(xiàng)目。

以前我們接受過(guò)的思想是立項(xiàng)后先要需求調(diào)研、分析,調(diào)研后出各種調(diào)研報(bào)告及需求說(shuō)明書(shū),需求搞定后,再進(jìn)行概要設(shè)計(jì)(UE設(shè)計(jì)、UI設(shè)計(jì)、交互設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、框架設(shè)計(jì)),概要設(shè)計(jì)完成后再進(jìn)行詳細(xì)設(shè)計(jì)……這樣一個(gè)周期下來(lái),耗費(fèi)太長(zhǎng),當(dāng)進(jìn)度進(jìn)入下一階段,當(dāng)上一階段有問(wèn)題時(shí),會(huì)影響到整個(gè)項(xiàng)目流程的各個(gè)階段。

而敏捷方法是會(huì)將大的系統(tǒng)拆分成一個(gè)個(gè)子項(xiàng)目,再把子系統(tǒng)拆分成子模塊,盡量減少模塊間的耦合性、增加其內(nèi)聚性,這樣我們可以把團(tuán)隊(duì)分成多個(gè)小組,各組可以同時(shí)作業(yè)。另外,當(dāng)一個(gè)模塊需求發(fā)生變化時(shí),對(duì)其它模塊的影響也不會(huì)太大,以實(shí)現(xiàn)降低開(kāi)發(fā)難度的目的。

在之前提到的房產(chǎn)信息網(wǎng)平臺(tái)建設(shè)中,我們就將系統(tǒng)拆分成自行成交、經(jīng)紀(jì)成交、用戶權(quán)限管理、建委等外部接口、大宗資產(chǎn)、交易管理、平臺(tái)后臺(tái)管理、網(wǎng)站前端等模塊分別進(jìn)行需求討論,需求討論后再將各模塊拆分成各個(gè)對(duì)象,對(duì)象與對(duì)象間只是通過(guò)公有變量傳遞信息,盡量減少與外部對(duì)象間產(chǎn)生關(guān)系。

團(tuán)隊(duì)與客戶呆在一起

為了降低溝通成本,我們團(tuán)隊(duì)所有人員直接開(kāi)到客戶現(xiàn)場(chǎng),隨時(shí)與客戶溝通,通過(guò)面對(duì)面的溝通,減少了理解偏差。在項(xiàng)目的各個(gè)階段,我們一直與客戶保持零距離接觸,隨時(shí)交流、溝通。通過(guò)這種辦法,可以第一時(shí)間獲取需求、第一時(shí)間解決問(wèn)題,減少出錯(cuò)的可能性,提高開(kāi)發(fā)效率,保證開(kāi)發(fā)質(zhì)量。而且,通過(guò)這種方式會(huì)更容易取得客戶信任,客戶能夠隨時(shí)了解到項(xiàng)目的工作狀態(tài)、工作進(jìn)度。當(dāng)相互間具備了信任關(guān)系后,余下的工作也會(huì)變得輕松、愉快。

在房產(chǎn)項(xiàng)目里,我們?cè)诳蛻衄F(xiàn)場(chǎng)辦公,定期開(kāi)會(huì)討論需求和設(shè)計(jì),當(dāng)有一些小的不確定問(wèn)題,團(tuán)隊(duì)成員會(huì)直接找到客戶相關(guān)人確認(rèn)。在整個(gè)項(xiàng)目周期中沒(méi)有發(fā)生過(guò)大的需求變化。

總結(jié):與客戶面對(duì)面的交流,降低交流成本,促進(jìn)相互信任。

用建模的方式溝通

利用模型與客戶溝通,通過(guò)模型來(lái)獲取用戶需求,而不是通過(guò)大量的文檔,編寫(xiě)文檔費(fèi)時(shí)費(fèi)力,而且效果不好。實(shí)際,對(duì)于我們大多數(shù)人來(lái)說(shuō)并不喜歡花大量時(shí)間看各種文字和參數(shù),而模型則會(huì)更直觀和立體。這里我說(shuō)的模型不是單指我們平時(shí)設(shè)計(jì)的原型,它包括用例圖、類(lèi)圖、部署圖、狀態(tài)圖、活動(dòng)圖、包圖、對(duì)象圖、原型圖、效果圖、E-R圖等,利用不同圖形表達(dá)出產(chǎn)品的不同維度,使產(chǎn)品豐富而立體。

在房產(chǎn)項(xiàng)目里,我們用原型來(lái)與客戶討論需求,用ER圖來(lái)討論數(shù)據(jù)庫(kù)設(shè)計(jì),用類(lèi)圖來(lái)表達(dá)產(chǎn)品的內(nèi)部對(duì)象及交互,用部署圖確定硬件部署環(huán)境及網(wǎng)絡(luò)結(jié)構(gòu),用活動(dòng)圖來(lái)說(shuō)明信息交互流程,用時(shí)序圖來(lái)表達(dá)在時(shí)間軸下對(duì)象間如何交互。通過(guò)各種圖表來(lái)表達(dá)產(chǎn)品,利用這種方法會(huì)比較直觀,而且當(dāng)發(fā)現(xiàn)錯(cuò)誤修改起來(lái)也比較容易,不像利用文檔方式,修改不方便、維護(hù)困難,也不利于閱讀、理解。

總結(jié):利用模型來(lái)代替文檔進(jìn)行交流。

迎接變化

“放眼看那座座高樓如同那稻麥

看眼前是人的海洋和交通的堵塞

我左看右看前看后看還是看不過(guò)來(lái)

這個(gè)這個(gè)那個(gè)那個(gè)越看越奇怪

噢……

不是我不明白,這世界變化快”

市場(chǎng)環(huán)境是產(chǎn)品的風(fēng)向標(biāo),我們要隨時(shí)關(guān)注市場(chǎng)。為了迎合市場(chǎng),產(chǎn)品也要隨時(shí)變化。需求變化、設(shè)計(jì)變化……各種變化讓我們焦頭爛額,但做為產(chǎn)品人的我們同樣也應(yīng)該接受改變,只有產(chǎn)品的快速變化,才能很好的迎接未來(lái)。我們歡迎變化,只要是合理的,哪怕是開(kāi)發(fā)階段,需求也同樣可能發(fā)生變化。敏捷開(kāi)發(fā)允許變化,通過(guò)變化給客戶帶來(lái)更大的競(jìng)爭(zhēng)力。敏捷開(kāi)發(fā)利用圖表來(lái)記錄需求,所有代碼都采用模塊式設(shè)計(jì),將不同功能盡量分割,減少關(guān)聯(lián)。這就是它能夠、也敢于迎接變化的原因。

在任何項(xiàng)目在任何階段都會(huì)有需求變化,哪怕是開(kāi)發(fā)后期,也同樣會(huì)產(chǎn)生,我們避免不了,就要想辦法面對(duì)。

總結(jié):從項(xiàng)目初期就做好迎接變化的準(zhǔn)備

盡早、持續(xù)的交付可運(yùn)行的階段性成果

之前我曾經(jīng)說(shuō)過(guò),一個(gè)項(xiàng)目的失敗,一般不是技術(shù)原因,多是因?yàn)榭蛻魧?duì)我們失去信任。我們需要持續(xù)的、不斷的給客戶以信任感,一種是我們?cè)诳蛻衄F(xiàn)場(chǎng)不斷的交流、溝通,讓客戶感受到我們的熱度。同樣,還需要盡早的、持續(xù)的給客戶提供相應(yīng)的成果物(可運(yùn)行的產(chǎn)品),讓客戶看到我們的能力。當(dāng)然,這樣還有另一個(gè)好處是,能夠把問(wèn)題提早的暴露出來(lái),不要羞羞答答像個(gè)小女人,不敢見(jiàn)人,只有提前暴露,才能提早解決,問(wèn)題越晚暴露越難解決。

在房產(chǎn)項(xiàng)目中,當(dāng)天完成的內(nèi)容在編譯沒(méi)問(wèn)題后,會(huì)把修改的功能部署到平臺(tái)服務(wù)器上,以便于客戶隨時(shí)能夠看到變化,了解項(xiàng)目進(jìn)度。如有問(wèn)題的話,也能夠盡早暴露出來(lái)。

總結(jié):為了降低項(xiàng)目風(fēng)險(xiǎn),盡早交付可運(yùn)行程序

面對(duì)面的溝通

最快的交流方式就是面對(duì)面的溝通,在敏捷開(kāi)發(fā)中,最提倡的方式是減少哪此冗余的、效率低下的溝通方式,用最快速的方法來(lái)直接溝通。讓技術(shù)人員、設(shè)計(jì)人員、客戶等所有團(tuán)隊(duì)成員都在一起辦公,減少信息交流的斷路,讓溝通變得順暢。

在房產(chǎn)項(xiàng)目中,我們當(dāng)時(shí)是對(duì)每一位成員以信任的,當(dāng)有問(wèn)題不理解,需要交流時(shí),都是直接找我,我不清楚的直接找客戶。當(dāng)有時(shí),我不在時(shí),同事們也會(huì)直接與客戶進(jìn)行溝通,任何人都可以直接獲取需求。

總結(jié):直接溝通,減少中間環(huán)節(jié)

可工作的軟件是最主要的衡量標(biāo)準(zhǔn)

出再多的文檔、再多的中間產(chǎn)物,都沒(méi)有出結(jié)果來(lái)得真切??蛻糇钣^心的不是中間物,而是成果物。對(duì)于敏捷軟件開(kāi)發(fā)來(lái)說(shuō),可以工作的軟件是評(píng)測(cè)開(kāi)發(fā)進(jìn)度的最主要衡量標(biāo)準(zhǔn)。唱的再好,也不如做的好,做事要落地,實(shí)實(shí)在在、踏踏實(shí)實(shí)是敏捷開(kāi)發(fā)的核心,不玩花拳繡腿。

總結(jié):做出可交付的軟件是項(xiàng)目的核心

保持恒定的開(kāi)發(fā)速度

項(xiàng)目開(kāi)發(fā)是一次長(zhǎng)跑,短期內(nèi)迅速的加速,并不是長(zhǎng)跑的方式,我們應(yīng)該持續(xù)的、勻速的跑步方式,這樣才能保證團(tuán)隊(duì)成員能一直堅(jiān)持到最后。敏捷開(kāi)發(fā)提供可持續(xù)的開(kāi)發(fā)速度,這樣不僅團(tuán)隊(duì)成員不至于疲憊,也有利于制定項(xiàng)目開(kāi)發(fā)進(jìn)度,控制開(kāi)發(fā)周期。

總結(jié):項(xiàng)目開(kāi)發(fā)過(guò)程是長(zhǎng)跑,不要一開(kāi)始就沖刺

定期團(tuán)隊(duì)優(yōu)化

我們會(huì)每隔一段時(shí)間進(jìn)行一次團(tuán)隊(duì)建設(shè),進(jìn)行批評(píng)與自我批評(píng),找出工作中的問(wèn)題及影響個(gè)人與團(tuán)隊(duì)發(fā)展的瓶頸。我們通過(guò)交流、溝通方式找出團(tuán)隊(duì)及成員間的問(wèn)題,然后進(jìn)行自我調(diào)整,通過(guò)不斷的優(yōu)化、升級(jí)自有團(tuán)隊(duì),打造出一個(gè)能戰(zhàn)斗的隊(duì)伍。

總結(jié):建一個(gè)能打硬仗的隊(duì)伍

敏捷開(kāi)發(fā)的核心就是溝通,用各種辦法來(lái)降低溝通成本、減少溝通環(huán)節(jié)、避免溝通失真。如果產(chǎn)品經(jīng)理們能夠很好的掌握敏捷開(kāi)發(fā)思想,就相當(dāng)于在游戲世界里擁有了法器,美食世界里掌握了烹飪之道。

 

本文由 @產(chǎn)品人老吳(微信公眾號(hào):ChanPinLaoWu) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理?,未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. ??

    來(lái)自上海 回復(fù)
  2. 一看就不是技術(shù)出身

    來(lái)自山東 回復(fù)
    1. 敏捷開(kāi)發(fā)中的TDD、BDD一字未提,作為產(chǎn)品經(jīng)理在敏捷開(kāi)發(fā)中的職責(zé)跟主要工作也沒(méi)寫(xiě)。東拼西湊加一句總結(jié)就是一篇文章了。

      來(lái)自浙江 回復(fù)
    2. 面對(duì)面的溝通實(shí)際就是BDD,讓項(xiàng)目所有干系人一起協(xié)作、一起參與,不僅是客戶,還有管理人員、技術(shù)人員、測(cè)試人員、商務(wù)人員等一起參與進(jìn)來(lái),共同完成項(xiàng)目而努力。TDD多是指用測(cè)試來(lái)驅(qū)動(dòng)開(kāi)發(fā),這種在銀行系統(tǒng)的開(kāi)發(fā)中使用,有些外包團(tuán)隊(duì)開(kāi)發(fā)出成果后,用測(cè)試人員來(lái)驗(yàn)證、驅(qū)動(dòng)技術(shù)。但大多數(shù)項(xiàng)目不太使用,多是讓測(cè)試團(tuán)隊(duì)來(lái)測(cè)試成果物,而不是驅(qū)動(dòng)開(kāi)發(fā),中國(guó)項(xiàng)目團(tuán)隊(duì),多重視開(kāi)發(fā),輕視測(cè)試,測(cè)試人員也一般沒(méi)有太大權(quán)力,多靠項(xiàng)目經(jīng)理統(tǒng)一管理

      來(lái)自北京 回復(fù)
    3. 而且大多測(cè)試都不專(zhuān)業(yè)

      來(lái)自廣東 回復(fù)