為什么產(chǎn)品經(jīng)理需要關(guān)注開(kāi)發(fā)模式?
本文旨在引導(dǎo)產(chǎn)品從業(yè)人員關(guān)注和重視開(kāi)發(fā)模式問(wèn)題,隱去了各模式的實(shí)施細(xì)節(jié)和管理復(fù)雜性。文章介紹了常見(jiàn)的5種開(kāi)發(fā)模式,并對(duì)各模式進(jìn)行了分析,與大家分享。
我一個(gè)產(chǎn)品經(jīng)理(本文泛指產(chǎn)品人員)為何要關(guān)注開(kāi)發(fā)模式,開(kāi)發(fā)的事不是技術(shù)的事嗎?那不是技術(shù)團(tuán)隊(duì)該關(guān)心的事嗎?
一、為什么產(chǎn)品經(jīng)理需要關(guān)注開(kāi)發(fā)模式?
1. 開(kāi)發(fā)模式即工作模式
首先我們要達(dá)成一個(gè)共識(shí):產(chǎn)品經(jīng)理除了收集分析需求、拋出草案、定方案、輸出原型、prd、流程圖、架構(gòu)圖等專業(yè)工作之外,還需要負(fù)責(zé)協(xié)調(diào)資源、上傳下達(dá)等保障整個(gè)研發(fā)順利進(jìn)行的工作。產(chǎn)品經(jīng)理是貫穿始終從頭走到尾并對(duì)最終結(jié)果負(fù)責(zé)的人。
互聯(lián)網(wǎng)軟件研發(fā)周期中的各團(tuán)隊(duì)參與情況和當(dāng)前項(xiàng)目所處的階段,大略劃分的話可以有如下關(guān)系:
完成軟件開(kāi)發(fā)所要進(jìn)行的工作和各團(tuán)隊(duì)之間大致有如下關(guān)系:
為什么有交叉?
- 設(shè)計(jì)工作不僅僅是產(chǎn)品經(jīng)理設(shè)計(jì)產(chǎn)品方案,拿到產(chǎn)品方案后研發(fā)團(tuán)隊(duì)需要構(gòu)建同樣重要的技術(shù)方案。
- 測(cè)試方面,測(cè)試團(tuán)隊(duì)肯定是主角,進(jìn)行項(xiàng)目質(zhì)量的整體驗(yàn)收。除了這些還有研發(fā)團(tuán)隊(duì)研發(fā)過(guò)程中的單元測(cè)試,提測(cè)前的整體自測(cè),還有產(chǎn)品同學(xué)的輔助測(cè)試和上線后回歸測(cè)試等。
- 至于部署方面,硬件方面的事情自然運(yùn)維團(tuán)隊(duì)去處理,但設(shè)備選型則是技術(shù)方案的一部分。另外有的公司是技術(shù)團(tuán)隊(duì)負(fù)責(zé)發(fā)布代碼,有的是運(yùn)維同學(xué)進(jìn)行發(fā)布。
各團(tuán)隊(duì)之間看起來(lái)相互獨(dú)立,各司其職,實(shí)則緊密相連,不可分割。無(wú)論開(kāi)發(fā)模式是不是技術(shù)團(tuán)隊(duì)該關(guān)心的事,它都不可避免地會(huì)影響整個(gè)研發(fā)過(guò)程。各團(tuán)隊(duì)為了消除這種影響,需要調(diào)整工作方式去配合,這樣才能釋放出相應(yīng)模式的優(yōu)勢(shì)力量,達(dá)到整體最佳。
2. 熟練掌握開(kāi)發(fā)模式的好處
第一:加入一個(gè)新團(tuán)隊(duì),能識(shí)別出當(dāng)前團(tuán)隊(duì)正在采用的開(kāi)發(fā)模式,可以快速適應(yīng)節(jié)奏展開(kāi)工作,更順利更少犯錯(cuò)。試想如果人家在采用敏捷開(kāi)發(fā),而你帶著瀑布開(kāi)發(fā)的思維投入工作并產(chǎn)出,團(tuán)隊(duì)首秀上來(lái)就挖坑,想想都覺(jué)得可怕。
第二:清楚團(tuán)隊(duì)當(dāng)前工作模式的優(yōu)勢(shì)和局限,在局限性方面就可以提前做好準(zhǔn)備,不至于當(dāng)問(wèn)題發(fā)生時(shí)措手不及,處于被動(dòng)的局面被牽制住。問(wèn)題的產(chǎn)生很有可能是團(tuán)隊(duì)工作方式的弊端帶來(lái)的而非你個(gè)人能力的問(wèn)題,這個(gè)鍋不能背。
第三:以第二點(diǎn)為基礎(chǔ),清楚局限可以有意識(shí)盡所能去優(yōu)化,無(wú)論對(duì)個(gè)人發(fā)展還是公司效率,都是極好的。
二、各開(kāi)發(fā)模式相互對(duì)比
一款產(chǎn)品不是孤立的,它是和自身、公司、競(jìng)品、行業(yè)、用戶群等相互關(guān)聯(lián)的,共同作用下的一個(gè)結(jié)果,我們研發(fā)一款產(chǎn)品,是基于一定需求痛點(diǎn),服務(wù)于特定人群的。在信息過(guò)載、要求快速響應(yīng)的互聯(lián)網(wǎng)世界里,開(kāi)發(fā)過(guò)程的靈活性和用戶參與程度被越來(lái)越多的關(guān)注和利用。
當(dāng)下公司所采用的開(kāi)發(fā)方式有N多種,每一種都是特定場(chǎng)景下的特定產(chǎn)物,沒(méi)有絕對(duì)的優(yōu)劣,適合最重要。我們先從操作靈活性、用戶參與度兩個(gè)維度對(duì)當(dāng)下流行的開(kāi)發(fā)模式做一下全局預(yù)覽。
三、5種常見(jiàn)開(kāi)發(fā)模式介紹
我們選取了4種典型的開(kāi)發(fā)模式進(jìn)行說(shuō)明,這4種模式有的是默認(rèn)選擇的,可能你在用但是你自己沒(méi)意識(shí)到;有的是當(dāng)下熱議的;有的是用于增加項(xiàng)目透明度可以隨時(shí)引入新的變更需求的;有的是應(yīng)對(duì)老板一聲令下要求即刻上線的。
1. 瀑布式開(kāi)發(fā)
各個(gè)階段從上到下,一步一步地走,是不是很像瀑布,水從上流淌而下。
瀑布模型式是最典型的預(yù)見(jiàn)性的方法,是開(kāi)發(fā)方法論的老大哥,嚴(yán)格遵循預(yù)先計(jì)劃的需求、分析、設(shè)計(jì)、編碼、測(cè)試的步驟順序進(jìn)行。只能一個(gè)階段一個(gè)階段的執(zhí)行,不可回溯。每個(gè)階段都需要獨(dú)立評(píng)估,準(zhǔn)確無(wú)誤的輸出,完整的文檔。上一個(gè)階段結(jié)束前,下一個(gè)階段不能開(kāi)始。直到最后部署交付,期間都拿不到切實(shí)可應(yīng)用的項(xiàng)目。
這是大多數(shù)團(tuán)隊(duì)默認(rèn)采用的一種模式,甚至常用到自己在用它,但是都不知道它就是瀑布式開(kāi)發(fā)。采用瀑布開(kāi)發(fā)方式的用戶常見(jiàn)于新負(fù)責(zé)的項(xiàng)目經(jīng)理因?yàn)檫@種方式對(duì)項(xiàng)目的估計(jì)非常方便。項(xiàng)目開(kāi)發(fā)中涉及到的幾乎一切都預(yù)先計(jì)劃,從而便于確定預(yù)期的開(kāi)發(fā)成本和開(kāi)發(fā)時(shí)間,非常方便地把整個(gè)項(xiàng)目置于自己的掌握之下。
缺點(diǎn)也很明顯,任何人都不能預(yù)知未來(lái),做出來(lái)的方案也都不是完美無(wú)瑕,計(jì)劃趕不上變化,每個(gè)階段環(huán)環(huán)相扣,任何一個(gè)階段出問(wèn)題,都可能導(dǎo)致延期甚至項(xiàng)目失敗。另外對(duì)于開(kāi)發(fā)人員而言就可能顯得太嚴(yán)酷了。因?yàn)闇y(cè)試過(guò)程在開(kāi)發(fā)階段之后實(shí)施,子系統(tǒng)測(cè)試所暴露的問(wèn)題可能需要立即修改代碼,而開(kāi)發(fā)人員一般在同一階段也會(huì)從事其他的開(kāi)發(fā)任務(wù),而所需要的軟件修改可能會(huì)降低開(kāi)發(fā)人員的生產(chǎn)率和工作質(zhì)量,這樣就顯著增加了計(jì)劃架構(gòu)的成本。
2. 增量和迭代開(kāi)發(fā)
增量和迭代其實(shí)是兩種開(kāi)發(fā)方式。
增量開(kāi)發(fā)是把項(xiàng)目切割成N個(gè)相對(duì)獨(dú)立的模塊。像堆積木一樣,每次迭代會(huì)增加新的軟件模塊,而在先前添加的模塊中幾乎沒(méi)有變化。開(kāi)發(fā)過(guò)程可以順序進(jìn)行,也可以并行進(jìn)行,并行開(kāi)發(fā)提高了交付速度。
這就要求產(chǎn)品經(jīng)理在分析設(shè)計(jì)階段,要充分考慮研發(fā)資源問(wèn)題。如果研發(fā)資源有限,我們把項(xiàng)目切分成塊后勢(shì)必要按緊急、重要程度進(jìn)行排序,業(yè)務(wù)人員會(huì)牽扯進(jìn)來(lái)。如果研發(fā)資源充足,分析設(shè)計(jì)階段產(chǎn)品經(jīng)理會(huì)很忙,我們要在設(shè)計(jì)階段過(guò)后輸出的是供好幾個(gè)研發(fā)組并行開(kāi)發(fā)的子模塊原型、PRD、流程圖等,當(dāng)然如果你是個(gè)產(chǎn)品leader的話,就可以授權(quán)下面人去分頭行動(dòng)了。
迭代開(kāi)發(fā)和增量開(kāi)發(fā)類似,也是把一個(gè)大任務(wù)切分成N個(gè)子任務(wù)。與增量模式各模塊間相對(duì)獨(dú)立不同,迭代開(kāi)發(fā)的每次迭代任務(wù)都是以上一次迭代為基礎(chǔ)進(jìn)行的。由于軟件是分部分交付的,因此從項(xiàng)目開(kāi)始就不需要完整的規(guī)范,并且在開(kāi)發(fā)過(guò)程中可能會(huì)對(duì)需求進(jìn)行少量更改。但是,需求不能根本改變,必須在開(kāi)始時(shí)就定義主要需求。
這就要求產(chǎn)品經(jīng)理每次迭代都要留下足夠清晰的文檔,供后來(lái)人能接著繼續(xù)迭代開(kāi)發(fā),后來(lái)人可能是公司其他產(chǎn)品經(jīng)理,也可能是新來(lái)的產(chǎn)品經(jīng)理。如果你是一個(gè)產(chǎn)品leader,如果你們公司項(xiàng)目采用的是迭代開(kāi)發(fā)模式,如果你不想因?yàn)槟硞€(gè)人的離職導(dǎo)致開(kāi)發(fā)組陷入一團(tuán)糟的話,就提前要有這方面的要求和準(zhǔn)備。
如果把增量開(kāi)發(fā)看作是橫向開(kāi)發(fā)的話,那迭代模式就是縱向開(kāi)發(fā)。增量迭代模式的優(yōu)點(diǎn)是如果失敗,影響的只是一部分而非整個(gè)項(xiàng)目,降低了損失。軟件更容易成功,通過(guò)先前的上線版本收集用戶反饋,結(jié)合反饋?zhàn)鞒鱿乱淮蔚桨?,小步快跑更容易成事。缺點(diǎn)是因?yàn)樵隽块_(kāi)發(fā)是拆開(kāi)成塊,如果開(kāi)發(fā)過(guò)程中沒(méi)有溝通好,或者文檔不清晰,會(huì)導(dǎo)致后期合在一起的時(shí)候出問(wèn)題。
3. 看板開(kāi)發(fā)
大家經(jīng)常聽(tīng)到敏捷開(kāi)發(fā),其實(shí)敏捷開(kāi)發(fā)不是一個(gè)模式,而是一組模式的統(tǒng)稱。本節(jié)講的看板開(kāi)發(fā)和下節(jié)的極限編程都屬于敏捷開(kāi)發(fā),除此之外還有Scrum。
如果說(shuō)瀑布模式是一種自上而下的驅(qū)動(dòng)方式,那么看板模式就是一種自下而上的驅(qū)動(dòng)方式。后道工序在需要時(shí),通過(guò)看板向前道工序發(fā)出信號(hào),請(qǐng)給我需要數(shù)量的輸入。前道工序只有得到相應(yīng)看板后,才啟動(dòng)任務(wù)。用戶需求為其中的原始驅(qū)動(dòng)力。
看板模式?jīng)]有明顯的迭代過(guò)程,沒(méi)有單獨(dú)的計(jì)劃階段,可以隨時(shí)引入新的變更需求。看板上的內(nèi)容堅(jiān)持“即來(lái)即增加”和“即變即更新”的原則,團(tuán)隊(duì)中的每個(gè)人都可以根據(jù)實(shí)際情況增加或者流動(dòng)自己負(fù)責(zé)的任務(wù)??梢郧逦乜吹剿许?xiàng)目活動(dòng),任務(wù)數(shù)量,負(fù)責(zé)人和進(jìn)度。這種增加的透明度有助于更準(zhǔn)確地估計(jì)最緊要的任務(wù),項(xiàng)目組也更加趨向于自動(dòng)化。
站立會(huì)是看板開(kāi)發(fā)方式的一個(gè)顯著特征,每天開(kāi)發(fā)組主要成員,一人一兩分鐘,交代下自己當(dāng)前已完成的任務(wù),正在進(jìn)行的任務(wù),有沒(méi)有遇到問(wèn)題。之所以采用站立的形式,是因?yàn)椴灰跁?huì)上討論復(fù)雜的問(wèn)題,產(chǎn)品經(jīng)理需要把控好站立會(huì)的時(shí)間。
復(fù)雜問(wèn)題如需討論,單約專項(xiàng)會(huì)議進(jìn)行。開(kāi)發(fā)是環(huán)環(huán)相扣的,站立會(huì)會(huì)把問(wèn)題提前拋出來(lái),避免之前流程環(huán)節(jié)上的浪費(fèi)。能帶來(lái)一種類似“Stop and Fix”的氛圍,出現(xiàn)問(wèn)題時(shí),能立刻暫停,分析根本原因,并加以解決,防止問(wèn)題的再次發(fā)生。
但是這種方式,容易讓大家的注意力集中到某個(gè)點(diǎn)上而忽略其他點(diǎn),不利于思維的發(fā)散。
4. 極限編程(XP)
極限編程和傳統(tǒng)開(kāi)發(fā)模式的本質(zhì)不同在于它更強(qiáng)調(diào)可適應(yīng)性以及面臨的困難,去掉了條條框框,更強(qiáng)調(diào)專注問(wèn)題,快速解決。也可以理解為這是一種更“隨意”的開(kāi)發(fā)方式,但是設(shè)計(jì)、編碼、測(cè)試環(huán)節(jié)依然存在,只是不拘泥于形式和流程。所以除了團(tuán)隊(duì)成員之間需要相互熟悉、默契之外,在團(tuán)隊(duì)文化方面也是有一定要求的,它的基礎(chǔ)和價(jià)值觀是交流、樸素、反饋、勇氣和尊重。適用于經(jīng)常發(fā)生變化的項(xiàng)目、緊急上線任務(wù)和封閉開(kāi)發(fā)等。項(xiàng)目組人數(shù)也要進(jìn)行控制,建議在2~10人之間。
在極限編程式開(kāi)發(fā)中,經(jīng)常見(jiàn)到結(jié)對(duì)編程,即代碼由兩個(gè)人坐在一臺(tái)電腦前一起完成。一個(gè)程序員寫代碼關(guān)注編碼細(xì)節(jié),另外一個(gè)人主要關(guān)注整體結(jié)構(gòu)性的東西,不斷地對(duì)第一個(gè)程序員寫的代碼進(jìn)行評(píng)審。團(tuán)隊(duì)成員能夠長(zhǎng)期維持努力工作的狀態(tài),他們保存精力,他們把項(xiàng)目看作是馬拉松長(zhǎng)跑,而不是全速短跑。
代碼權(quán)限集體所有,每個(gè)人都可以更改代碼的任意部分,每個(gè)人都對(duì)所有的代碼負(fù)責(zé)。在XP中,沒(méi)有那種傳統(tǒng)開(kāi)發(fā)模式中一次性的、針對(duì)所有需求的總體設(shè)計(jì),設(shè)計(jì)過(guò)程幾乎一直貫穿著整個(gè)項(xiàng)目開(kāi)發(fā),而且實(shí)現(xiàn)方式簡(jiǎn)單,能滿足需求、通過(guò)測(cè)試即可。
不推諉不扯皮,有話直說(shuō),對(duì)事不對(duì)人,勇于承擔(dān)任務(wù),不逃避責(zé)任。這個(gè)“極限”就體現(xiàn)在把交流、反饋、勇氣、尊重這些最樸素的東西發(fā)揮到了極致。這種模式的弊端除了挑團(tuán)隊(duì)之外,由于不拘泥形式,后期在文檔完整性上也會(huì)有所欠缺。
如果項(xiàng)目組成員有流動(dòng)也會(huì)給開(kāi)發(fā)帶來(lái)很大問(wèn)題。因強(qiáng)調(diào)的是簡(jiǎn)單設(shè)計(jì)簡(jiǎn)單開(kāi)發(fā),更關(guān)注當(dāng)下的需求滿足情況,所以后期重構(gòu)的幾率會(huì)更大。但是這種模式所帶來(lái)的效率提升,結(jié)果導(dǎo)向性,在某些場(chǎng)景下是其他模式所不能取代的。
四、不同場(chǎng)景下的開(kāi)發(fā)模式選擇
每個(gè)公司,每個(gè)團(tuán)隊(duì),每個(gè)項(xiàng)目都有自身的獨(dú)特情況,以下關(guān)系基于各開(kāi)發(fā)模式本質(zhì)特征進(jìn)行推薦,實(shí)際情況需實(shí)際分析,也可以集合多種模式優(yōu)點(diǎn)組合使用。
無(wú)論使用何種開(kāi)發(fā)模式,想要有效實(shí)施都依賴于對(duì)原理的理解、對(duì)原則的堅(jiān)持和實(shí)踐時(shí)的隨機(jī)應(yīng)變。
1. 瀑布開(kāi)發(fā)適合場(chǎng)景
- 具有明確定義和不變需求的中小型項(xiàng)目,比如小型公司網(wǎng)站開(kāi)發(fā)
- 需要嚴(yán)格控制流程,預(yù)算和時(shí)間表可預(yù)測(cè)的項(xiàng)目,比如政府類項(xiàng)目
- 必須遵守多個(gè)規(guī)章制度的項(xiàng)目,比如醫(yī)療軟件
- 使用了業(yè)內(nèi)熟悉的成熟的技術(shù)方案的項(xiàng)目
2. 增量迭代模式適合場(chǎng)景
大型關(guān)鍵企業(yè)應(yīng)用程序,最好由松散耦合的部分組成,比如微服務(wù)或web服務(wù)類
3. V模式適合場(chǎng)景
故障和停機(jī)時(shí)間不可接受的項(xiàng)目,比如醫(yī)療軟件、航空管理軟件
4. 螺旋模式適合場(chǎng)景
- 業(yè)務(wù)要求不明確或過(guò)于雄心勃勃地創(chuàng)新型項(xiàng)目
- 大型且復(fù)雜的項(xiàng)目
5. RUP適合場(chǎng)景
大型和高風(fēng)險(xiǎn)項(xiàng)目,尤其是基于用例的開(kāi)發(fā)和高質(zhì)量軟件的快速開(kāi)發(fā)
6. 敏捷開(kāi)發(fā)適合場(chǎng)景
- 要求處理目標(biāo)用戶前期反饋的新項(xiàng)目
- 業(yè)務(wù)要求不能被清晰地轉(zhuǎn)換成產(chǎn)品需求的中型定制化項(xiàng)目
五、開(kāi)發(fā)模式只是大公司大團(tuán)隊(duì)該考慮的事嗎?
各種開(kāi)發(fā)模式的產(chǎn)生是因?yàn)楝F(xiàn)實(shí)開(kāi)發(fā)中遇到了各種各樣的問(wèn)題,一個(gè)模式對(duì)應(yīng)一類問(wèn)題的解決方案。無(wú)論團(tuán)隊(duì)大小,結(jié)果導(dǎo)向,遇到問(wèn)題都可以采用對(duì)應(yīng)方案。
開(kāi)發(fā)模式本質(zhì)是關(guān)于工作效率、資源利用率的問(wèn)題,小公司更需要關(guān)注花更少的錢辦更多的事。
內(nèi)耗導(dǎo)致的項(xiàng)目死亡。就像齒輪要克服相互之間的阻力才能對(duì)外做功,不合適的齒輪組合會(huì)帶來(lái)更大的阻力,大公司可以利用其強(qiáng)大的資金、人才去克服額外阻力,消除不良影響。小公司資金、人才方面比較弱,更應(yīng)規(guī)避內(nèi)耗問(wèn)題。
寫在最后
采用什么樣的開(kāi)發(fā)模式直接影響到各工種用什么樣的工作模式投入其中。小了說(shuō)關(guān)乎效率問(wèn)題,大了說(shuō)關(guān)乎項(xiàng)目成敗。與公司大小沒(méi)有關(guān)系,結(jié)果導(dǎo)向、效率導(dǎo)向,希望大家避免無(wú)意中的自我毀滅。
最后,與大家分享一句《湮滅》中的經(jīng)典臺(tái)詞:“Almost none of us commit suicide, and almost all of us self-destruct”
本文由 @產(chǎn)品大蔥 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
5種開(kāi)發(fā)模式 只講了4種?
感謝分享,受益匪淺