
只有一個(gè)好的團(tuán)隊(duì),才能做成大事。
——魯迅沒說過
5.1 非團(tuán)隊(duì)和團(tuán)隊(duì)
提出了一個(gè)問題:什么是一個(gè)團(tuán)隊(duì)?隨便湊一伙人算是團(tuán)隊(duì)嗎?這個(gè)說不好,但是一個(gè)好的團(tuán)隊(duì)?wèi)?yīng)該會(huì)滿足兩個(gè)特點(diǎn):
- 團(tuán)隊(duì)有一致的集體目標(biāo),團(tuán)隊(duì)要一起完成這目標(biāo)。一個(gè)團(tuán)隊(duì)的成員不一定要同時(shí)工作,例如接力賽跑。(王屋村搬磚的“非團(tuán)隊(duì)”成員則不然,每個(gè)人想搬多少就搬多少,不想干了就結(jié)算工錢走人。
- 團(tuán)隊(duì)成員有各自的分工,互相依賴合作,共同完成任務(wù)。(王屋村搬磚的“非團(tuán)隊(duì)”成員則是各自行動(dòng),獨(dú)立把任務(wù)完成,有人不辭而別,對其他的搬磚人無實(shí)質(zhì)影響。)
5.2 軟件團(tuán)隊(duì)的模式

每種模式都各有優(yōu)劣,不同的團(tuán)隊(duì)可能會(huì)有不同的最佳合作模式。
5.3 開發(fā)流程
做開發(fā)總得有一個(gè)完整的開發(fā)流程。
我們在開發(fā)、運(yùn)營、維護(hù)軟件的過程中有很多技術(shù)、做法、習(xí)慣和思想。軟件工程把這些相關(guān)的技術(shù)和過程統(tǒng)一到一個(gè)體系中,叫“軟件開發(fā)流程”,軟件開發(fā)流程的目的是為了提高軟件開發(fā)、運(yùn)營和維護(hù)的效率,以及提升用戶滿意度、軟件的可靠性和可維護(hù)性。

5.3.1 寫了再改模式(Code-and-Fix)

這種模式就像小孩“過家家”一樣,開發(fā)的程序用過一次就扔了,不足取。
5.3.2 瀑布模型(Waterfall Model)


5.3.3 瀑布模型的各種變形
-
生魚片模型
這個(gè)模型解決了各個(gè)步驟之間分離的缺點(diǎn),同時(shí)也帶來了一些困擾—究竟什么時(shí)候上一個(gè)階段會(huì)結(jié)束呢?
生魚片.png -
大瀑布帶著小瀑布
在這種瀑布群下,要把各個(gè)子系統(tǒng)統(tǒng)一到最后做系統(tǒng)測試(System Testing)的階段,難度非常大!另外,在這樣的開發(fā)流程中,用戶只有到了最后才能看到結(jié)果,用戶真是等不起。
子瀑布模型
5.3.4 Rational Unified Process 統(tǒng)一流程(RUP)

5.3.5 老板驅(qū)動(dòng)的流程(Boss-Driven Process)
- 領(lǐng)導(dǎo)對許多技術(shù)細(xì)節(jié)是外行。
- 領(lǐng)導(dǎo)未必懂得軟件項(xiàng)目的管理,領(lǐng)導(dǎo)的權(quán)威影響了自由的交流和創(chuàng)造。
- 領(lǐng)導(dǎo)最擅長的管理方式是行政命令,這未必能管好軟件團(tuán)隊(duì)或任何需要?jiǎng)?chuàng)造力的團(tuán)隊(duì)。
- 領(lǐng)導(dǎo)的精力有限,領(lǐng)導(dǎo)很忙時(shí),團(tuán)隊(duì)怎么辦?
5.3.6 漸進(jìn)交付的流程(Evolutionary Delivery),MVP和MBP

這種流程比較像敏捷開發(fā)模式。
-
MVP(Minimal Viable Product,最小可行產(chǎn)品)
把產(chǎn)品最核心的功能用最小的成本實(shí)現(xiàn)出來(或者描繪出來),然后快速征求用戶意見。例如,一個(gè)社交網(wǎng)站已經(jīng)有很多用戶,都是免費(fèi)的,產(chǎn)品團(tuán)隊(duì)想設(shè)計(jì)一個(gè)付費(fèi)的VIP服務(wù),MVP的做法可以是這樣—在目前的用戶入口頁面中加一個(gè)“VIP服務(wù)”的鏈接,指向一個(gè)簡單的介紹頁面(用最小成本做出來)。觀察到底有多少用戶點(diǎn)擊這個(gè)鏈接。如果點(diǎn)擊量太小,那么這個(gè)VIP服務(wù)就不用做了。
用MVP的思路,團(tuán)隊(duì)會(huì)找出最關(guān)鍵、最小的功能集,快速實(shí)現(xiàn),三個(gè)月就可以聽到用戶的反饋
-
Maximal Beautiful Product(最強(qiáng)最美產(chǎn)品,MBP)
更像是憋大招,一下子拿出劃時(shí)代意義的產(chǎn)品,例如iPhone,iPod。。。。這對產(chǎn)品團(tuán)隊(duì)有更高的要求。
結(jié)束
有人說,現(xiàn)代軟件工程分為四個(gè)階段:
和PM吵
和設(shè)計(jì)吵
和測試吵
和用戶吵
你覺得應(yīng)該如何避免吵架?

