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