兵者,國(guó)之大事,不可不察也。——孫武
戰(zhàn)
爭(zhēng)是一個(gè)復(fù)雜的系統(tǒng)工程,需要多兵種的協(xié)同,即便是在冷兵器時(shí)代,也不能依靠單一兵種完成某場(chǎng)戰(zhàn)役,現(xiàn)代戰(zhàn)爭(zhēng)更是需要不同專業(yè)士兵的配合。我們經(jīng)常可以在
影視劇中看到這樣的情景:兩軍對(duì)壘,最前面是盾牌兵,接下來是弓箭兵、長(zhǎng)槍兵、騎兵、樸刀兵。首先弓箭兵在盾牌兵的掩護(hù)下放箭,一通亂射之后,然后盾牌兵
和長(zhǎng)槍兵沖鋒,弓箭兵掩護(hù),快接近敵軍時(shí),盾牌兵后撤,弓箭兵停止射箭,騎兵和樸刀兵沖鋒。這種配合看似教條,實(shí)際是有一定意義的,它是從實(shí)踐中總結(jié)出來
的,從某種程度上反應(yīng)了冷兵器時(shí)代多兵種協(xié)同作戰(zhàn)的重要性。
軟
件開發(fā)也是一個(gè)復(fù)雜的系統(tǒng)工程,需要各種專業(yè)的技術(shù)人員配合。通常我們簡(jiǎn)單的把這些技術(shù)人員分成需求、開發(fā)和測(cè)試,相應(yīng)的也把整個(gè)過程分為需求階段、開發(fā)
階段、測(cè)試階段。這種劃分積極的意義是區(qū)分了不同專業(yè)方向,將整個(gè)過程流水化,負(fù)面的意義是將各個(gè)階段和各個(gè)專業(yè)團(tuán)隊(duì)割裂開,各自為政,失去了劃分專業(yè)的
本意,形式替代了目的。結(jié)果需求人員的目的變成了寫出一份需求,然后封閉意見;開發(fā)人員按照需求寫出代碼,改正bug;測(cè)試人員挖掘bug,監(jiān)督開發(fā)人員改正,然后寫一份報(bào)告。整體的目的蕩然無存。當(dāng)然無法否認(rèn)這種流水作業(yè)的正確性以及必要性,我這里要說的只是它的負(fù)面問題。
當(dāng)
作戰(zhàn)室只要指定一份作戰(zhàn)計(jì)劃,作戰(zhàn)部隊(duì)只要沖鋒殺敵,后勤部隊(duì)只要做飯埋尸體;空軍只管按線路圖投彈,炮兵只要向指定坐標(biāo)開炮時(shí)。如果沒有一個(gè)正確的、偉
大的、英明的將軍,這場(chǎng)戰(zhàn)爭(zhēng)只能在一個(gè)貌似嚴(yán)格符合教科書的方式開始,以一個(gè)不可思議的方式失敗。因?yàn)槌诉@位將軍,所有人都沒有帶著腦袋去打仗,他想的
對(duì)不對(duì),直接影響到結(jié)局。
可
惜的是,我們沒有這樣的將軍指揮軟件開發(fā),也不存在這樣的將軍。我們都長(zhǎng)著腦袋,都要去思考。從另外一個(gè)角度,我們并不嚴(yán)格類似軍隊(duì),我們更像一個(gè)自治的
團(tuán)體。那么自我協(xié)同就成了一個(gè)現(xiàn)實(shí)問題。需求、開發(fā)和測(cè)試人員如何協(xié)同完成一個(gè)產(chǎn)品呢?首先我們要把他們看做一個(gè)整體,他們所有人工作的目的只有一個(gè):完
成一個(gè)產(chǎn)品。需求階段、開發(fā)階段和測(cè)試階段只是這個(gè)目的的一個(gè)階段,不是某個(gè)人工作的終極目的。我們已經(jīng)認(rèn)識(shí)到這點(diǎn),但我們做的遠(yuǎn)遠(yuǎn)不夠。
在
需求階段,需求人員應(yīng)該統(tǒng)領(lǐng)全局,向開發(fā)和測(cè)試人員介紹產(chǎn)品構(gòu)想,解釋需求,輔助開發(fā)和測(cè)試人員完成后續(xù)階段的計(jì)劃和方案;在開發(fā)階段,開發(fā)人員要重新整
合所有資源,由開發(fā)人員沖鋒,需求人員提供支持,測(cè)試人員監(jiān)督開發(fā)過程,糾正開發(fā)失誤;而在測(cè)試階段,測(cè)試人員才是指揮中心,他們要檢查軟件,需求人員配
合診斷,開發(fā)人員按測(cè)試計(jì)劃解決故障并封閉。不同的階段只是中心成員不同,決策人員不同,而不是責(zé)任不同,目的不同。
可
能說的太隱晦了,舉兩個(gè)例子來說明。一個(gè)還是打仗的例子,比如現(xiàn)在我們需要讓弓箭兵上馬,去追殺敵軍。弓箭兵老大可能反對(duì)并提出幾個(gè)原因,第一,并非職責(zé)
范圍,弓箭兵的職責(zé)是遠(yuǎn)距離造成敵軍傷亡,沒有追逃的責(zé)任,這是騎兵的責(zé)任。第二,技術(shù)能力不足,弓箭兵都不善于騎馬,而且馬上射箭難度較大,沒法實(shí)現(xiàn)。
第三,如果敵人反撲,由于不善近戰(zhàn),可能會(huì)造成大量傷亡。的確有道理,可是如果我們真的需要這樣做來表現(xiàn)我們的戰(zhàn)略意圖,怎么辦?
再
舉一個(gè)身邊的例子來說明,前幾天有這樣的爭(zhēng)執(zhí),關(guān)于需求應(yīng)不應(yīng)該明確界面限制導(dǎo)致選項(xiàng)不生效,然后切換界面取消限制,選項(xiàng)應(yīng)如何的問題。需求人員的意見是
這樣的,第一,選項(xiàng)最終是什么不重要。第二,強(qiáng)行限制,會(huì)使需求工作量變大,同時(shí)開發(fā)和測(cè)試的工作量也增大(因?yàn)椴煌牡胤剑匀唤Y(jié)果必然不同,強(qiáng)行一致
會(huì)導(dǎo)致不自然的處理,同時(shí)測(cè)試需要關(guān)注測(cè)試)。第三,不利于平臺(tái)化建設(shè),這種限制會(huì)導(dǎo)致需求過分依賴于產(chǎn)品,無法在不同產(chǎn)品間共用。都很有道理。但是我認(rèn)
為,提出這個(gè)問題是無可厚非的,需求的意見也是中肯的,解決的辦法是,我們要看看我們的終極目標(biāo),以此來判斷是否需要這樣做。首先,如果不限制造成不一
致,對(duì)我們的產(chǎn)品有沒有影響,其次,如果不一致,會(huì)不會(huì)造成后續(xù)工作的阻滯。對(duì)于這個(gè)問題的本身,我覺的對(duì)于無關(guān)緊要的選項(xiàng),需求可以不寫,開發(fā)可以順其
自然,測(cè)試不必關(guān)注。而對(duì)于比較重要的選項(xiàng),需求必須明確,開發(fā)必須處理,測(cè)試要注意關(guān)注。不可一概而論,非左即右。