敏捷開發(fā)中常見的九大誤解
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一、敏捷是“一個(gè)”過程 敏捷不是一個(gè)過程,是一類過程的統(tǒng)稱,它們有一個(gè)共性,就是符合敏捷價(jià)值觀,遵循敏捷的原則。 敏捷的價(jià)值觀如下: 個(gè)體和交互 勝過 過程和工具 可以工作的軟件 勝過 面面俱到的文檔 客戶合作 勝過 合同談判 響應(yīng)變化 勝過 遵循計(jì)劃 由價(jià)值觀引出的12條敏捷原則: 1、我們優(yōu)選先要做的是通過盡早的、持續(xù)的交付有價(jià)值的軟件來使客戶滿意。 2、即使到了開發(fā)的后期,也歡迎改變需求。敏捷過程利用變化來為客戶創(chuàng)造競爭優(yōu)勢?! ?/p> 3、經(jīng)常性地交付可以工作的軟件,交付的間隔可以從幾個(gè)星期到幾個(gè)月,交付的時(shí)間間隔越短越好?! ?/p> 4、在整個(gè)項(xiàng)目開發(fā)期間,業(yè)務(wù)人員和開發(fā)人員必須天天都在一起工作?! ?/p> 5、圍繞被激勵(lì)起來的個(gè)體來構(gòu)建項(xiàng)目。給他們提供所需的環(huán)境和支持,并且信任他們能夠完成工作?! ?/p> 6、在團(tuán)隊(duì)內(nèi)部,最具有效果并且富有效率的傳遞信息的方法,就是面對面的交談。 7、工作的軟件是首要的進(jìn)度度量標(biāo)準(zhǔn)?! ?/p> 8、敏捷過程提倡可持續(xù)的開發(fā)速度。責(zé)任人、開發(fā)者和用戶應(yīng)該能夠保持一個(gè)長期的、恒定的開發(fā)速度?! ?/p> 9、不斷地關(guān)注優(yōu)秀的技能和好的設(shè)計(jì)會(huì)增強(qiáng)敏捷能力。 10、簡單——使未完成的工作最大化的藝術(shù)——是根本的?! ?/p> 11、最好的構(gòu)架、需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)?! ?/p> 12、每隔一定時(shí)間,團(tuán)隊(duì)會(huì)在如何才能更有效地工作方面進(jìn)行反省,然后相應(yīng)地對自己的行為進(jìn)行調(diào)整。 建立敏捷聯(lián)盟的17位大師所創(chuàng)立的敏捷方法包括:極限編程,scrum,特征驅(qū)動(dòng)開發(fā),動(dòng)態(tài)系統(tǒng)開發(fā)方法,自適應(yīng)軟件開發(fā),水晶方法,實(shí)用編程方法。這些方法統(tǒng)稱為敏捷方法。 其實(shí)每個(gè)人都可以從敏捷宣言和原則出發(fā),明確問題,找出一些解決方法,形成自己的過程。我覺得國內(nèi)的軟件環(huán)境這么復(fù)雜,程序員的自主精神又這么強(qiáng),敏捷方法應(yīng)該是在中國首先提出才對,只是國人都有唯標(biāo)準(zhǔn)唯規(guī)范至上的心理定式,即使找出好辦法,也覺得不規(guī)范,沒有深入形成理論,無法提升高度,始終是跟著鬼子屁股后面走,我想這也是國外軟件行業(yè)不成熟的表現(xiàn)之一吧! 二、敏捷僅僅是一個(gè)軟件過程 如果僅僅從軟件過程的角度去認(rèn)識(shí)敏捷實(shí)施敏捷,效果不會(huì)太好。敏捷相對以前的軟件工程最大的革新之處在于把人的作用提高到了過程至上,正如敏捷宣言的第一條“個(gè)體和交互勝過過程和工具”所說的。 涉及到人的問題,就已經(jīng)不再是過程所能覆蓋的了,就到了企業(yè)管理的層面上了,包括企業(yè)的價(jià)值觀和文化。這也是敏捷在國內(nèi)實(shí)施的最大障礙: 1、把客戶當(dāng)作合作伙伴而不是對手,從客戶角度出發(fā)去想問題,充分的跟客戶溝通,而不是出了問題推諉責(zé)任。目標(biāo)是讓軟件實(shí)現(xiàn)客戶的價(jià)值,而不是收錢就完事兒。 2、把人的能動(dòng)性調(diào)動(dòng)起來,給動(dòng)力而不是給壓力。 3、要實(shí)用而不是要規(guī)范。讓開發(fā)人員理解并實(shí)施,體驗(yàn)到敏捷的好處,而不是盲目機(jī)械地實(shí)施規(guī)范。 沒有絕對的權(quán)威,每個(gè)人都有可取之處。 三、迭代就是敏捷,up屬于敏捷 看到這么多人都把up歸入敏捷,我都開始懷疑是不是自己搞錯(cuò)了。但是在我的印象中: up是重型的過程,雖然引入了迭代,但是其原則和價(jià)值觀與敏捷是不同的。敏捷注重的是反饋,迭代周期盡量的短,重在客戶的參與,通過客戶的參與,獲取持續(xù)的反饋,不斷調(diào)整使整個(gè)項(xiàng)目走在正確的方向上。同時(shí)也給客戶一個(gè)感受和思考的機(jī)會(huì),因?yàn)閷τ诖蠖鄶?shù)客戶而言,目標(biāo)是明確的(不排除有些客戶目標(biāo)也不明確),但是具體怎么做,開始時(shí)是沒有想法的,只有看到具體的東西的時(shí)候,才知道“噢,原來可以這樣,那我想把這里調(diào)整一下”。 四、敏捷是徹底革命的 敏捷,特別是xp,讓人有耳目一新的感覺,覺得以前的所有軟件工程理論,設(shè)計(jì)方法都可以拋棄掉了,推翻一切,從頭再來。抱著這種想法實(shí)施敏捷,那就錯(cuò)了,敏捷不是“石頭里蹦出個(gè)孫大圣”,以前的軟件過程中也有敏捷的影子,只是沒有像敏捷一樣上升到價(jià)值觀和原則的高度,比如快速原型法。敏捷是在對已有的軟件過程方法的改進(jìn),拋棄的是傳統(tǒng)軟件工程低效的外表,以往的軟件過程中很多技巧都是很實(shí)用的。實(shí)施敏捷應(yīng)該以現(xiàn)有的軟件過程為基礎(chǔ),從敏捷宣言和原則出發(fā),利用敏捷的方法來改善過程。 五、敏捷是反文檔的 文檔只是為了達(dá)成目標(biāo)的一種手段,如果這種手段是低效的,那就換一種手段??墒峭耆珤仐壛宋臋n,怎樣解決溝通的問題?難道你想每次溝通都完全用手比劃,用嘴說,跟不同的人重復(fù)表述同樣的想法,那樣更是低效的。 應(yīng)該清楚文檔的本質(zhì)是把知識(shí)顯性化。在一個(gè)項(xiàng)目中存在很多需要溝通的知識(shí),知識(shí)具備兩種形態(tài),顯性的和隱性的,傳統(tǒng)的觀念是盡量把隱性知識(shí)顯性化,即文檔化,而忽略了這其中的代價(jià)(特別是更新同步文檔的代價(jià))。 因此,在實(shí)施敏捷的時(shí)候,需要在團(tuán)隊(duì)內(nèi)明確哪些知識(shí)是必須顯性的,這些知識(shí)可以通過文檔交流。哪些知識(shí)是可以隱性的,這些知識(shí)則完全可以通過口頭的方式進(jìn)行交流,以達(dá)到溝通的最佳效率。 文檔不是目的,有效溝通才是目的。 六、為了敏捷而敏捷 “嗯,敏捷這么好,我們也敏捷吧”,可能很多人會(huì)有這種想法。忘了以前是在哪兒看的大師采訪錄: q:“我們現(xiàn)有的過程很好,不知道怎么用敏捷改進(jìn)?” a:“既然很好,那就不要用敏捷”。 做什么事情都要有明確目標(biāo)的,敏捷雖好,得看你需不需要,能不能解決你現(xiàn)在頭疼的問題,如果不是,那就不要給自己找麻煩了。 七、敏捷是cmm的反義詞 在一些討論中,很多人把cmm作為敏捷的反義詞,我覺得這不是很合適。cmm只是一種衡量軟件成熟度的標(biāo)準(zhǔn),并非過程,和敏捷不是一類概念。如果要給敏捷找一個(gè)反義詞,我覺得傳統(tǒng)的瀑布式開發(fā)應(yīng)該更合適一些。 并且,我認(rèn)為,如果cmm還能繼續(xù)流行下去的話,應(yīng)該會(huì)有公司可以用敏捷改善的過程通過cmm認(rèn)證。 八、敏捷是自由的,無約束的 敏捷強(qiáng)調(diào)的是自組織團(tuán)隊(duì),發(fā)揮人的能動(dòng)性,以動(dòng)力代替壓力,讓人有絕對自由的錯(cuò)覺。但是應(yīng)該清楚,凡是都是要講究一個(gè)平衡,人也是兩面的,消極的一面和積極的一面同時(shí)并存,絕對的自由會(huì)放縱人消極的一面。敏捷并非是絕對自由,無約束的。作為管理者,有一個(gè)職責(zé),就是引導(dǎo)團(tuán)隊(duì)成員用自己積極的一面去壓制消極的一面,不能放任團(tuán)隊(duì)中出現(xiàn)搭便車的現(xiàn)象,否則將打擊整個(gè)團(tuán)隊(duì)的士氣。如果實(shí)在無效,那就只能將其排除出團(tuán)隊(duì)了,這個(gè)懲罰夠有約束力吧? 九、重做就是重構(gòu) 重做不等于重構(gòu),很多場合這兩個(gè)概念是混淆的。但是在敏捷中,重構(gòu)的一個(gè)特征是必須可控的。當(dāng)對系統(tǒng)結(jié)構(gòu)進(jìn)行大的調(diào)整時(shí),如果沒有測試驅(qū)動(dòng)輔助的話,那么可控性就會(huì)很差,這不能叫做重構(gòu)。 該文章在 2010/7/25 2:32:22 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |