敏捷開發(fā)的靈魂—小跑精神
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
近來寫了不少敏捷開發(fā)的系列文章,如《敏捷開發(fā)中如何開發(fā)高質(zhì)量產(chǎn)品》,《敏捷開發(fā)的架構(gòu)設(shè)計》,《我的敏捷開發(fā)實踐》,《敏捷開發(fā)中的code review》等,這些都是關(guān)乎方法的。方法固然很重要,但還有另外一部分筆者覺得非常的重要,而且不容易被人關(guān)注,也是這篇文章想和大家一起探討的內(nèi)容,這就是敏捷開發(fā)的“精神”。筆者認為敏捷開發(fā)的“精神”是敏捷開發(fā)的核心,也是敏捷開發(fā)之所以稱為敏捷開發(fā)之所在。
方法和精神,孰重孰輕,是仁者見仁智者見智。但缺少精神的方法,長久以往,便形似而神不似,缺乏核心和靈魂,猶如 “行尸走肉”。君不見,美國的民主模仿者不在少數(shù),民主民權(quán),三權(quán)分立,權(quán)力制約,方法可謂一套一套,有best practice(最佳實踐)可循,但強大富強如美國者也僅此一家,如鐵桿小弟墨西哥卻是遠不如,偷渡到美國倒是積極有余。想起前陣有一部電視劇——《士兵突擊》,受到廣大觀眾的喜愛,假如我們做一個問卷調(diào)查,問一些觀眾:什么是“鋼七連”?答案有:鋼七連是超強的作戰(zhàn)能力,鋼七連是紀(jì)律嚴(yán)明的團隊,鋼七連訓(xùn)練刻苦,鋼七連是“不拋棄、不放棄”的一種精神。我想很多觀眾都會說,鋼七連是“不拋棄,不放棄”的一種精神。所以,作者認為方法之外,還有超乎方法的所在,就是精神。敏捷開發(fā)也是如此,方法之外(迭代、測試驅(qū)動、重構(gòu)、結(jié)對編程等),還有超乎方法的精神存在。 記得前兩年敏捷開發(fā)流行之始,在公司上下掀起了一股敏捷之風(fēng),尤為壯觀的是“一夜”之間所有的團隊都敏捷了,全都號稱自己團隊正在敏捷開發(fā),全部裝備了“敏捷開發(fā)”的光環(huán)。了解之后,發(fā)現(xiàn)其中大部分團隊的確是開始使用一些敏捷開發(fā)被推崇的方法,比如,一些團隊使用了迭代開發(fā),還有一些團隊使用了結(jié)對編程,還有一些團隊開始使用測試驅(qū)動開發(fā)。當(dāng)然,我們團隊(包括我本人)也是其中的一員。這倒讓我認識到,從眾心理不僅在人與人之間存在,在團隊之間也是存在的。 這里倒不是去點評這些團隊的做法,開始使用敏捷是值得鼓勵和贊賞的。只是這樣的現(xiàn)象引發(fā)了我當(dāng)時不少的困擾和思考:到底什么是敏捷開發(fā)?是否真是“神說,要有敏捷,于是就有了敏捷”?是否一夜間大家就由于使用了一個迭代開發(fā)的方法(盡管一個迭代里面還是用瀑布),大家就都敏捷了? 直到前幾天去上地的“小肥羊”吃火鍋,又觸動了心中一直在思考的什么是敏捷開發(fā)的問題。在“小肥羊”里現(xiàn)在也能看到和“海底撈”一樣拉面條的小弟,也有免費送豆?jié){的服務(wù)。但是雖然這些方法都類似,卻還是覺得和“海底撈”不太一樣。后來覺得二者確實不一樣,不一樣的是人,是氣氛,是那種服務(wù)的精神。 所以,總而言之,筆者認為:敏捷開發(fā)之所以為敏捷開發(fā),不是因為其方法(雖然方法也很重要),而是因為敏捷的精神存在,我稱這種敏捷的精神為“小跑精神”。下面讓我們一步一步去看看,到底敏捷開發(fā)的“小跑精神”是什么? 敏捷開發(fā)的“小跑精神” 不知諸位讀者是否都注意到一個現(xiàn)象,不管在哪個行業(yè),餐館也好,酒店也罷,甚至飛機上的空乘服務(wù),總有一些好的服務(wù)人員,他/她們在服務(wù)時總是滿懷熱情地,“小跑”著為大家服務(wù)。他/她們總能注意到客人的需求,總能給客人提供及時的服務(wù),而且總是在尋找“金礦”似的尋找自己可以貢獻的地方。他/她們或許沒有那種所謂的禮儀方法,滿口的“您好”,“您辛苦了”,“謝謝”,“謝謝光臨”這些方法,但他們的態(tài)度和精神,無時不刻地體現(xiàn)她們的熱情,無時不刻不在感染顧客。 這就是我稱之為“小跑精神”名字的來源?!靶∨芫瘛笔且环N主人翁態(tài)度,是一種自動服務(wù)的熱情,而不是表面的方法和寒暄?,F(xiàn)在太多的公司和團隊,都太注重所謂表面的形式,而往往忽略了內(nèi)在的精神。如在任何銀行的電話中心,撥打進去后都是機器的寒暄“您好,歡迎光臨某某銀行電話中心……”,但是如果沒有真的傳遞“小跑精神”的服務(wù)給客戶,這樣的話語只不過是浪費顧客的時間和顧客電話費而已,不能感染顧客,并提高的客戶滿意度和忠誠度。 敏捷開發(fā)中“小跑精神”也是這樣的一種精神和態(tài)度,一種對產(chǎn)品,對項目的由內(nèi)而外的熱愛,樂于貢獻的主人翁精神。每個個體都可以按照組織的最高利益,自我驅(qū)動的完成組織的目標(biāo)。 小跑精神可以體現(xiàn)在下面幾點: 1. 人找問題,而不是問題找人 問題找人,是一個極其普遍的現(xiàn)象。在組織協(xié)調(diào)中,一個很常見的現(xiàn)象是“責(zé)任分散”。當(dāng)一個問題由一個人負責(zé)時,猶如個體戶經(jīng)營,那這個個體肯定是盡心盡責(zé),因為這是他一個人的“責(zé)任”。當(dāng)組織逐漸壯大,特別是近幾年全球化的經(jīng)營方式,一個任務(wù)由多人負責(zé),甚至多個不同國家的人負責(zé)的情況,已經(jīng)司空見慣,這樣的團體協(xié)作中,容易滋生“責(zé)任分散”的現(xiàn)象。 什么是責(zé)任分散?比如,在街頭,四周只有你一個人,當(dāng)你看到旁邊有個小孩躺在地上哭,你一定會過去扶起小孩,然后提供你的愛心和幫助。但是,換另外一個場景,在一個繁忙的街邊,四周都是匆忙而過的人群,當(dāng)你看到旁邊有個小孩躺在地上哭時,你可能會隨著人群走過。這就是責(zé)任分散,當(dāng)人越多時,大家都覺得,一件事情可能是別人會去做,所以自己就不去做了,而且自己不去做內(nèi)心收到的譴責(zé)也不會很大。因為,所有的責(zé)任都分散到了所有的個體上,收到的內(nèi)心的譴責(zé)也都分散到了所有的個體。 在軟件項目管理中,也是經(jīng)常問題找人,而不是人找問題。下面的場景大家肯定不陌生: 在產(chǎn)品開發(fā)早期,由于代碼開發(fā)過快,代碼混亂,需要重構(gòu)。但開發(fā)人員覺得還沒發(fā)生問題,無需重構(gòu)。所以一拖再拖,最后索性不重構(gòu)了。 今天有個defect開給了某個開發(fā)人員,測試人員在defect里面的描述寫的不是很清楚,導(dǎo)致無法重現(xiàn)defect。開發(fā)人員一直等著測試人員,測試人員等著開發(fā)人員,一拖就是兩天過去。 今天是code review deadline,但沒找到會議室開review會議,就延遲到了明天,明天還是沒找到,就延遲到了后天,最后就是由于會議室,導(dǎo)致sign off延期三天。 類似這些人找問題,而非問題找人的現(xiàn)象缺的不是技術(shù)、也不是條件,缺的正是一種“小跑精神”。一種不斷主動發(fā)現(xiàn)問題,積極解決問題的精神。 敏捷開發(fā)中的“小跑精神”下應(yīng)該是人找問題,只要是對組織和項目有幫助的,都要積極主動的去思考和提高,并積極的采取行動,不要等到每次問題找你頭上了再開始消極的去回應(yīng)。 2. 自我決策,而不是事事等待命令 “小跑精神”崇尚流程與靈活的平衡,科學(xué)管理與情感精神的統(tǒng)一。當(dāng)今商業(yè)環(huán)境快速變化,唯一不變的就是變化。沖在一線的“開發(fā)人員”是最了解系統(tǒng)架構(gòu)和技術(shù)、開發(fā)工作量,某一件改動對項目影響的人?!靶∨芫瘛钡膱F隊成員,應(yīng)該擁有在一定范圍內(nèi)的自我決策的能力,充分靈動的為產(chǎn)品創(chuàng)造最大價值。 如果把項目比作從北京到廣東自駕旅游,那除了項目目標(biāo)、方向和主要的匯合點外,團隊在哪個路段開什么速度行車,由于堵車走哪個小路,哪天在哪個加油站加油這些具體的執(zhí)行層面,完全交由團隊自身決策。這樣既能下方復(fù)雜度,又能充分發(fā)揮團隊的“小跑精神”,選擇最佳方式實現(xiàn)組織的目標(biāo)。 所以,“小跑精神”是在大方向和策略不變的情況下的自我決策,而不是事事層層匯報,等待上級命令(當(dāng)然在影響大方向和戰(zhàn)略的情況下,還是應(yīng)該向上匯報)。 敏捷開發(fā)“小跑精神”的管理方式 精神,是一個藝術(shù)性的事物,無法像科學(xué)一樣定量衡量。敏捷開發(fā)的精神,是隨著團隊文化和管理方式孕育而生。軟件開發(fā)的團隊文化,大體可以分為下面這兩個維度。一個是自上而下的計劃與控制,一個是自下而上的靈活與主動。他們二者的關(guān)系如下: 計劃、控制意味著從需求,到架構(gòu),到設(shè)計,到開發(fā),測試的完全的控制和計劃,代表就是傳統(tǒng)的瀑布開發(fā)了。在軟件開發(fā)管理中,總是喜歡把軟件工程和另一個領(lǐng)域做比較:建筑工程。而且最早的軟件工程的思想來源就是受到了建筑領(lǐng)域的深刻影響,《建筑的永恒之道》一書估計是軟件從業(yè)者人盡皆知了。這對計算機軟件工程的發(fā)展起到了很大的積極作用。因為軟件和建筑有很多的相似性,如組件,設(shè)計,分工,計劃等等。所以,早期的軟件工程,強調(diào)“瀑布”開發(fā),需求、架構(gòu)、設(shè)計、開發(fā),規(guī)劃和設(shè)計好一切。這在軟件出現(xiàn)的最初的一段時間,是被很好的應(yīng)用并推廣,為軟件行業(yè)起到了很大的促進作用。 但隨著社會的發(fā)展,企業(yè)信息技術(shù)的成熟,以及越來越變化的客戶需求,建筑式的瀑布開發(fā),已經(jīng)不能符合軟件團隊的需求。以前,企業(yè)只要能有個網(wǎng)站可能就很滿足,也沒有太多的需求訴求,現(xiàn)在就不一樣了,每個企業(yè)的各個部門都有信息化的需求,而且需求不斷變化,不同部門之間需求有時還有沖突。這時完全計劃、控制式的軟件開發(fā)方式,就不能滿足商業(yè)發(fā)展需求了。 此外,軟件研發(fā)是管人,是管理人腦力創(chuàng)造性的產(chǎn)出,是知識密集型產(chǎn)業(yè)管理。管死物,可以規(guī)劃計劃的很詳細,然后根據(jù)規(guī)劃優(yōu)化資源,因為事物是死的,不會產(chǎn)生波動和變化。猶如,泰勒用秒表對的生產(chǎn)的每個操作步驟進行了精密監(jiān)測之后,才有了精確的工作度量方法,才能衍生大規(guī)模流水線生產(chǎn),因為只有絕對的穩(wěn)定,才能有絕對的控制和規(guī)劃,才有了流水線的批量大規(guī)模生產(chǎn)和資源優(yōu)化,這在管理高度勞動密集型工作時是常見的。所以,泰勒的秒表試驗,量化的工作時間是是福特流水線的基礎(chǔ)。而軟件行業(yè),是一個創(chuàng)造力的腦力活動過程,人的產(chǎn)出是波動的,變化的,很難用秒表精確(大家應(yīng)該都認識到一個現(xiàn)象:即高產(chǎn)出的研發(fā)人員是一般產(chǎn)出研發(fā)人員的好幾倍),所以知識密集型行業(yè)和人的積極性和主動性等精神方面是緊密相關(guān)。所以試圖用管死物優(yōu)化控制的方法去管人的大腦,是會出問題的?,F(xiàn)在的軟件行業(yè),許多的經(jīng)理和企業(yè),都有把人當(dāng)作機器般對待的傾向,大量的控制與規(guī)劃,規(guī)章制度,匯報會議,審核流程,這樣的企業(yè)文化和團隊中,是很難出現(xiàn)員工的主動創(chuàng)造,主動貢獻,更不可能出現(xiàn)“小跑精神”的企業(yè)文化和好員工,不鉆流程的空子偷工減料就算不錯了。所以敏捷開發(fā)是在計劃控制的基礎(chǔ)上,把上圖的中間線向右邊移動的過程。敏捷開發(fā)注重靈活主動,更加注重人的作用,而不是以控制、流程管死物的方法來限定人的積極性,這樣的管理方式更容易產(chǎn)生精神產(chǎn)物,也就是敏捷開發(fā)“小跑精神”的基礎(chǔ)。 中國人向以以德服人、無為而治的管理方式而著稱,這是上圖中偏右的管理方式,而西方則擅長量化的科學(xué)管理方式,是偏向左邊的管理方式。而敏捷開發(fā)則是一個中間的一個平衡。計劃和控制,是科學(xué);靈活、主動是藝術(shù),敏捷開發(fā)是科學(xué)與藝術(shù)的統(tǒng)一。 計劃和控制是冰冷的,沒有情感的,沒有活力的;靈活主動是火熱的,是洋溢熱情的,是突出主動貢獻的。絕對的靈活,也是要出大問題的,組織會變得失控,失去章法,最后慢慢衰退。很多國內(nèi)的小型軟件公司,很多就是過度靈活,軟件生命周期沒有良好的定義和流程,沒有良好的質(zhì)量控制,也沒有開發(fā)流程和測試流程,如此企業(yè)規(guī)模一大,就很容易出現(xiàn)問題。所以一些民營企業(yè)軟件公司,想要做大做強,就必須要有章法,要有控制和規(guī)劃,引進科學(xué)的管理方法來管理軟件研發(fā)過程。絕對的計劃和控制,組織就會僵化,沒有創(chuàng)新力,失去激情,如一些大型的國企,過度的規(guī)章制度和控制,使得組織缺乏激情和創(chuàng)造力。所以,這二者,沒有絕對的好,也沒有絕對的壞。上圖中,中間的虛線是軟件管理的方式,那么敏捷開發(fā),是從以往的絕對控制的科學(xué)管理開發(fā)方式,逐漸向右移動。當(dāng)然,這就導(dǎo)致敏捷開發(fā)中控制和規(guī)劃的元素少了一些,藝術(shù)管理的意味大了一些,但藝術(shù)這東西,說不清道不明,這也難怪大家用方法來衡量敏捷開發(fā)。 敏捷開發(fā)更加注重管理藝術(shù)的成分,而不是把軟件工程當(dāng)作絕對的科學(xué)。強調(diào)靈活、主動、熱情的“小跑精神”。融合了人性化的管理和科學(xué)的方法,這不能不說是軟件業(yè)管理方法的一大改進。 敏捷開發(fā)的“陰陽之道” 前不久,和一位資深的架構(gòu)師談天,他說了一個形象的比喻來形容組織中的“老化現(xiàn)象”,他說道;組織就像一棵樹,組織變得越來越大,樹干、樹枝就越多,而樹枝和樹干逐漸失去活力,而最新加入公司的員工,就猶如一顆大樹上的新葉,迸發(fā)著青春和激情,但隨著工作時間增長,也就慢慢的老化,失去往日的激情,慢慢成為組織的“朽木”。任何組織和團隊,如果這樣的朽木越來越多,終有一天會枯竭。 敏捷開發(fā)正是這樣一種軟件管理方法,崇尚組織和人的精神,它的靈魂是靈活、熱情、主動的“小跑精神”。敏捷開發(fā)是計劃控制到以人為中心的一個轉(zhuǎn)變,是“中間線”向右一直移動的過程。至于那根線該移到哪個位置,應(yīng)該靈活到什么程度,就沒有絕對定量的衡量。管死物還可以是科學(xué)方法,用project工具、甘特圖等方法規(guī)劃,加以定量;而精神層次則帶有藝術(shù)成分,是難以科學(xué)量化,而敏捷開發(fā)就是這樣科學(xué)與藝術(shù)的結(jié)合管理方法。它們二者之間難以去量化,你無法去確定他們的比例是什么樣的,也無法量化哪個多、哪個少。所以,用下面這張圖來描述敏捷開發(fā)我覺得更為合適。 上圖是中國古代的太極陰陽魚,形象化地表達了陰陽輪轉(zhuǎn),相反相成是萬物生成變化根源的哲理。對敏捷開發(fā)而言,也正適合深刻表達出計劃控制和靈活主動,科學(xué)管理與藝術(shù)管理之間的互相轉(zhuǎn)化,相對統(tǒng)一的關(guān)系,所謂動極而靜,靜極復(fù)動,一動一靜,互為其根,而這就是敏捷開發(fā)的管理之道。 精神是藝術(shù)層面的產(chǎn)物,比較困難去定量的衡量和引導(dǎo)。如何去建立和加強敏捷開發(fā)團隊的“小跑精神”,又如何去衡量團隊成員的績效評估呢?下一篇文章,我們將繼續(xù)這個話題。 該文章在 2010/7/25 2:26:59 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |