關(guān)于生產(chǎn)流程混亂的問題
在軟件研發(fā)這件事上,由于研發(fā)并不直接帶來收入和利潤(rùn),在實(shí)際情況中,業(yè)務(wù)優(yōu)先、功能優(yōu)先的思想,很容易導(dǎo)致生產(chǎn)流程的混亂,例如:
版本管理失控:沒有人整體把控整個(gè)產(chǎn)品線的研發(fā)/測(cè)試進(jìn)度、不能明確每個(gè)最新版apk。
Apk的發(fā)布風(fēng)險(xiǎn):由開發(fā)直接提供apk,存在事故風(fēng)險(xiǎn)(未測(cè)試/版本錯(cuò)誤)。
測(cè)試介入太晚:測(cè)試人員在提交apk后才開始理解業(yè)務(wù),如果設(shè)計(jì)階段有缺陷,到測(cè)試時(shí)才發(fā)現(xiàn),修復(fù)成本高。
Apk提測(cè)與發(fā)布:用郵件附件提交apk導(dǎo)致難以追溯歷史版本,apk中的非上線功能會(huì)干擾到上線流程。
沒有迭代計(jì)劃:沒有規(guī)劃出每個(gè)迭代版本的實(shí)現(xiàn)功能,需求不分優(yōu)先級(jí),上線前沒有明確哪些功能暫不上線,并行開發(fā)的功能在上線前還在提測(cè),導(dǎo)致上線混亂。
產(chǎn)品發(fā)布流程不清晰:上線發(fā)布的角色、職責(zé)未明確,發(fā)布流程未明確,工作任務(wù)缺少計(jì)劃性。
版本號(hào)命名不規(guī)范:現(xiàn)有產(chǎn)品版本號(hào)命名不規(guī)范,應(yīng)按照業(yè)界規(guī)范進(jìn)行命名。
混亂的生產(chǎn)流程,隱含著非常可怕的隱患。
我們從生產(chǎn)流程中各角色的職責(zé)分析一下。
角色及職責(zé)
一般來說,產(chǎn)品研發(fā)過程中,產(chǎn)品經(jīng)理->研發(fā)人員->測(cè)試人員->產(chǎn)品經(jīng)理應(yīng)該形成一個(gè)完整的閉環(huán),那么這三個(gè)角色應(yīng)該有各自的職責(zé)。

產(chǎn)品經(jīng)理的角色,提出產(chǎn)品需求、管理產(chǎn)品版本、提供最新產(chǎn)品,也就是:
1.向開發(fā)人員&測(cè)試人員發(fā)送產(chǎn)品需求,并跟蹤開發(fā)-測(cè)試進(jìn)度。
2.維護(hù)歷史版本及變更內(nèi)容,從開發(fā)人員手里獲取已測(cè)試過的apk。
3.向業(yè)務(wù)人員提供最新產(chǎn)品版本。
對(duì)于產(chǎn)品經(jīng)理的角色來說,要能實(shí)時(shí)了解產(chǎn)品進(jìn)度,有效管理產(chǎn)品版本,了解歷次變更,避免業(yè)務(wù)上使用了錯(cuò)誤版本或低質(zhì)量版本。

開發(fā)人員的角色,理解產(chǎn)品需求、實(shí)現(xiàn)業(yè)務(wù)功能、修復(fù)軟件bug,也就是:
1.與產(chǎn)品經(jīng)理溝通,理解產(chǎn)品的運(yùn)作邏輯和理想狀態(tài),以便開發(fā)。
2.根據(jù)對(duì)產(chǎn)品的理解,實(shí)現(xiàn)軟件業(yè)務(wù)功能。
3.根據(jù)測(cè)試人員的反饋,修復(fù)軟件bug。
4.完成開發(fā)或修復(fù)bug后,向測(cè)試人員發(fā)送提測(cè)郵件,抄送產(chǎn)品經(jīng)理,說明提測(cè)產(chǎn)品的版本號(hào)及變更內(nèi)容。
對(duì)于開發(fā)人員來說,產(chǎn)品都是從這里開始輸出,但不能直接輸出給業(yè)務(wù)人員,因?yàn)檠邪l(fā)人員并不直接了解需求,且不能保證產(chǎn)品質(zhì)量穩(wěn)定,所以開發(fā)人員的輸出只能給到測(cè)試部門,經(jīng)測(cè)試通過后,由產(chǎn)品經(jīng)理統(tǒng)一向外提供產(chǎn)品,以避免事故。
因?yàn)殚_發(fā)的節(jié)奏和測(cè)試的節(jié)奏可能并不一致,為了避免相互干擾,開發(fā)人員的輸出可以統(tǒng)一到一個(gè)輸出池中,通過規(guī)范有規(guī)律的版本號(hào),以及各種溝通機(jī)制,來保證測(cè)試人員以及相關(guān)開發(fā)人員能很容易地獲取到最新的開發(fā)待測(cè)產(chǎn)品,而且還容易追溯歷史版本。

測(cè)試人員的角色,理解產(chǎn)品需求、測(cè)試軟件bug,也就是:
1.深入理解產(chǎn)品需求,盡早發(fā)現(xiàn)潛在缺陷。
2.向研發(fā)人員發(fā)測(cè)試問題郵件時(shí),通過抄送開發(fā)人員提測(cè)郵件,說明通過測(cè)試的apk版本號(hào)及變更內(nèi)容,這個(gè)郵件還應(yīng)該抄送給產(chǎn)品經(jīng)理,以便產(chǎn)品經(jīng)理掌握產(chǎn)品現(xiàn)狀。
對(duì)于測(cè)試人員來說,最好從設(shè)計(jì)階段,就對(duì)產(chǎn)品原型開始測(cè)試,這樣既能對(duì)產(chǎn)品理解更深,還能盡早發(fā)現(xiàn)設(shè)計(jì)缺陷。
總結(jié)來說,雖然三個(gè)角色有各自的職責(zé),但應(yīng)該有一個(gè)核心角色掌握全局,這個(gè)角色一般是產(chǎn)品經(jīng)理,因?yàn)橹挥兴羌攘私庹麄€(gè)需求,又了解研發(fā)進(jìn)度和產(chǎn)品質(zhì)量的。
所以,核心在于產(chǎn)品經(jīng)理,他需要分析需求變化,緊跟產(chǎn)品研發(fā),提供既滿足需求又質(zhì)量可靠的產(chǎn)品,對(duì)于經(jīng)常需要根據(jù)市場(chǎng)需求進(jìn)行變更的產(chǎn)品來說,還需要制定和執(zhí)行一個(gè)長(zhǎng)期的版本迭代計(jì)劃。
基于上述分析,我們梳理出一個(gè)理想的開發(fā)流程。
理想開發(fā)流程
一個(gè)完整的開發(fā)流程包括需求-開發(fā)-測(cè)試-產(chǎn)品提交四個(gè)階段,每次產(chǎn)品更新其實(shí)都是這樣一個(gè)循環(huán),每個(gè)產(chǎn)品都是無數(shù)個(gè)循環(huán)的過程。
具體來說,每個(gè)階段涉及的角色和動(dòng)作如下。
1.產(chǎn)品經(jīng)理發(fā)布需求

2.開發(fā)人員完成開發(fā)并提交測(cè)試

3.測(cè)試反饋測(cè)試結(jié)果

4.產(chǎn)品經(jīng)理提供產(chǎn)品

這個(gè)流程中,使用的Samba是團(tuán)隊(duì)內(nèi)部共享文件系統(tǒng),我們通過這個(gè)系統(tǒng)來提交和管理各版本的產(chǎn)品。其中主要分成兩部分,一部分是開發(fā)內(nèi)部使用的,都是質(zhì)量未經(jīng)驗(yàn)證的待測(cè)產(chǎn)品,另一部分是向外(業(yè)務(wù))公開的,用于提供質(zhì)量穩(wěn)定的各版本產(chǎn)品。
samba的目錄結(jié)構(gòu)是這樣設(shè)計(jì)的:

總結(jié)一下,整體流程如下:

其他
產(chǎn)品研發(fā)還經(jīng)常有這樣幾個(gè)問題,包括產(chǎn)品迭代計(jì)劃、產(chǎn)品發(fā)布流程、產(chǎn)品版本號(hào)規(guī)劃、產(chǎn)品基線管理等。
產(chǎn)品經(jīng)理制定產(chǎn)品迭代計(jì)劃,并在產(chǎn)品上線過程中,跟蹤本次上線功能,排除非上線功能干擾。

每次產(chǎn)品發(fā)布上線其實(shí)可以看做一個(gè)短期項(xiàng)目,按階段實(shí)施,每個(gè)階段有一定的角色參與。

軟件產(chǎn)品的版本號(hào)有業(yè)界通用的命名規(guī)則。

開發(fā)中經(jīng)常遇到測(cè)試與開發(fā)并行的情況,一邊測(cè)試修復(fù)開發(fā)的功能,一邊做新功能,如果不做好管理,很容易產(chǎn)生混亂,這時(shí)候可以利用代碼管理工具輔助管理。
