摘要:
在IT界中,“敏捷”是一個很酷的詞匯,“敏捷”的相關理論可謂鋪天蓋地。
“敏捷”一詞實質沒有統(tǒng)一定義,各家有自家的說法,本教程將讓你了解“敏捷”的來龍去脈,抓住“敏捷”本質,并能在工作中實踐“敏捷”。
大綱:
“敏捷”陷阱
為什么會有“敏捷”這個說法?
極限編程
敏捷開發(fā)
RUP
敏捷開發(fā)的實質是什么?
如何才能敏捷起來?
正文:
“敏捷”陷阱
小甲想到某開發(fā)公司應聘開發(fā)工程師,向該公司的某開發(fā)人員打聽他們的開發(fā)方式。
小甲:請問貴公司開發(fā)模式是怎樣的?
開發(fā)人員:咱們敏捷開發(fā)!不用寫文檔,寫好代碼就可以了。
小甲心想:哇,爽??!趕緊去應聘!
小甲已經(jīng)在該公司工作了數(shù)周,他覺得很郁悶:
無需求文檔,要做東西都是口頭分配的。
無計劃可言,想到啥就做啥。
加班不在話下,返工是家常便飯。
這就是敏捷開發(fā)嗎?
不少公司搞CMMI認證,推行過程改進,往往被開發(fā)人員嗤之以鼻,開發(fā)人員喜歡自由奔放有創(chuàng)造力的工作模式,喜歡敏捷!
然而很多號稱“敏捷”的公司,其實只是手工作坊的工作模式,想到啥就干啥,如果你是開發(fā)人員可能還會好一點,如果你是測試人員、實施人員,在這樣的公司你簡直會覺得無法溝通無法工作!
到底什么是敏捷呢?如何才不會跌入敏捷陷阱呢?
為什么會有“敏捷”這個說法?
大學時我們就被灌輸了這樣的知識:
生命周期模型有瀑布型、噴泉型、迭代型、螺旋型等。
一般來說,大型的、復雜的、對安全要求高的系統(tǒng),應該采用傳統(tǒng)的瀑布型來開發(fā),應采取重型過程。
對于中小型、需要快速投產(chǎn)的系統(tǒng),應采用靈活的生命周期,采用敏捷的方式開發(fā)。
其實“敏捷”是相對于“重型”提出來的,重型開發(fā)有這樣的特點:(摘自互聯(lián)網(wǎng))
1.刻板而嚴格控制。
2.很多活動和工件,官僚主義氣息濃重。
3.文檔繁多。
4.長期而詳細的計劃。
5.過程高于本質核心的工作。
6.面向過程而不是面向人,把人看成機械方法中的插件。
7.預見而不是適應。
于是我就很有疑問了,如果重型開發(fā)有這樣的特點,那么請問:對于大型的、復雜的、安全要求高的系統(tǒng),也需要用具備上述特點的重型過程來開發(fā)嗎?如果是這樣,誰愿意在這樣的工作環(huán)境下工作?具備這樣特點的過程對項目成功有什么好處?
“重型”的重要特點是呆板,因為大家不喜歡呆板,喜歡靈活,所以提出了“敏捷”的說法!
我猜想:
1.重型過程其實是一些沒有實際項目經(jīng)驗的理論家搞出來的產(chǎn)物。
2.重型過程的出發(fā)點純粹就是為了過程而過程。
當然上述論述純屬瞎猜,無法證實。
每個人對“重型”與“敏捷”的理解其實都不太一樣,這里我用一個問題來測試一下你:
我國的航天事業(yè)取得長足的發(fā)展,讓國人振奮,請問:你認為嫦娥工程采用的過程是重型的還是敏捷的?
這么重大的項目,很多人可能認為應該是重型過程,很多人可能認為敏捷的過程是不太嚴禁的過程,其實嫦娥工程是靈活而又十分嚴謹?shù)墓こ獭?
大家有沒有留意到我們火箭發(fā)射時間是如何預報的?是不是具體說某天某時某刻發(fā)射?
不是!而是說某段時間內擇機發(fā)射!“擇機發(fā)射”是多么靈活、科學、嚴謹?shù)陌l(fā)射計劃啊,完全與我們傳統(tǒng)的計劃想法不一樣,難道你能說這也是重型過程嗎?
所謂“重型”與“敏捷”其實都是相對的,我們沒有必要去爭論到底是“重型”還是“敏捷”。我們平時見到這么多“重型”“敏捷”的不同說法,其實大家都是各自從不同的標準出發(fā)。
下面我們將介紹常見的幾種敏捷開發(fā),每種理念其實背后的道理是很類似的,我們沒有必要去爭論哪種方式更好,你完全可以吸取百家所長化為自己的理念,按照你的想法將項目做好。
極限編程
極限編程英文叫:Extreme P