敏捷編程
- 首先說點歷史,隨着軟件行業的迅猛發展,軟件系統的規模愈來愈大,複雜程度愈來愈高,開發週期與開發成本失控的問題愈發嚴重,同時軟件的可靠性也沒法保證。爲解決這一系列問題,軟件行業很天然的求助於傳統的工程學、管理學方法。「軟件工程學」由此因運而生。
- 以「瀑布模型」爲表明的傳統軟件開發模型針對軟件生命週期的各個階段提供了一套規範,以期使工程的進展達到預期的目的。核心強調在軟件開發活動中, 全部的活動計劃, 日程安排, 交付工做都要直接或間接的和需求保持一致,同時強調軟件需求必須造成「 文檔」 。
- 這種基於計劃的生命週期的軟件開發方法曾極大地促進了軟件行業的發展,但現現在卻愈感「有心無力」。爲了適應現代的商業環境與之對應的「敏捷編程」的開發方法提了出來。包括諸如「極限編程」、自適應軟件開發和功能驅動開發等。
個體和交互 賽過 過程和工具
- 敏捷開發強調把關注點回歸到「人」上,其背後的哲學思想可追溯到康德的「人即目的」。同時,主張面對面交流和客戶參與開發,彌補了缺乏文檔而產生信息流通不順暢問題, 認爲開發人員之間、開發人員和客戶之間相互協做、相互信任、彼此尊重是保證溝通成功的必要條件。
背後的商業環境現實就是——開發過程當中的人力資本的高企。程序員
- 一個典型的項目花在人力上的金錢是花在硬件上的時間的 20 倍, 這意味着一個項目每一年要花 20 萬美圓在程序員身上, 而僅僅花1萬美圓在電腦設備上。不少聰明的程序員說: 「 咱們如此聰明, 發現一種方法能夠節省20%的硬件開銷」 ,而後他們使得源程序大且難懂和難以維護, 他們會說: 「 可是咱們節省了20%或者2萬美圓每一年, 很大的節省」。但財務事實告訴咱們,若是程序簡單並且容易擴展,咱們將至少節省10%的人力開銷,這將是一筆更大的節省。同時,軟件開發的職業自己也決定了數量少但精幹的團隊的效率與產出大於臃腫、混亂的大團隊。敏捷開發通常適用於20-40人、甚至更少。
能夠工做的軟件 賽過 面面俱到的文檔
- 區別於傳統的軟件開發模式,客戶只有在系統被開發完成之後才能真正去體會它。敏捷編程經過要求不斷交付可用的軟件,週期越短越好,增強客戶的反饋來縮短開發的週期, 同時得到足夠的時間來改變功能和得到用戶的認同。
背後的商業環境現實就是——「快魚吃慢魚」的競爭模式。編程
- 區別於工業社會的利用流水線、規模化的生產模式,信息時代更強調對用戶需求的快速響應。標準化生產所帶來的低成本、高可靠性的特色不能直接保證市場的高份額。相反,對用戶需求的細膩把握和快速響應倒是以用戶爲導向的服務型公司的生命線!
客戶合做 賽過 合同談判
- 敏捷開發要求在項目過程當中,業務人員與開發人員必須在一塊兒工做,參與開發,採用高效信息的交互平臺以及可以減小歧義溝通和交流的方式進行支持。敏捷方法完成了從重視文本到重視對話,從重視書寫到重視理解的轉換。
背後的商業環境現實就是——用戶沒法對其自身需求進行有效描述工具
- 最經典的例子莫過於蘋果的iPad、iPhone了。在喬布斯沒有推出iPhone以前,用戶是不知道他們須要智能機,更準確地來講就是沒法對智能機的需求進行有效描述的。這也就是爲何諸如諾基亞、摩托羅拉等公司失敗的緣由之一。他們不是沒有市場部門,不是沒有進行市場調研、用戶需求分析,問題在於通常用戶在缺少相關知識與指導的狀況下是沒法對自身需求(特別是潛在需求)進行有效描述。這一缺陷在市場競爭隨着節奏的加快顯得愈發致命!
響應變化 賽過 遵循計劃
- 敏捷開發的口號是擁抱變化,即歡迎對需求提出變動,甚至是在項目開發後期。要善於利用需求變動, 幫助客戶得到競爭優點。
背後的商業環境現實就是——試錯成本低、執行力要求高生命週期
- 現代社會最重要的特色就是多元化,用所謂的「互聯網思惟」說就是「去中心化」,具體到我的應該就是 Open mind。這一社會現實反應在軟件開發上就是試錯成本變得至關較低。但與此同時,快速變化的商業大環境也對執行力提出了高要求,而執行力的關鍵指標就是對變化的快速響應!