1. 程式人生 > >敏捷主義,關於敏捷的思考和啟發

敏捷主義,關於敏捷的思考和啟發

    這片文章是我這些日子以來通過讀書獲得的一些關於敏捷開發的思想,以及這些思想對我的啟發。     這篇文章不會討論具體的敏捷方法,而是討論一下敏捷和早期開發方式在原則和邏輯上的區別。這些區別也是我們在實踐敏捷中最容易忽視的,我們很容易就能記住每一個敏捷方法的特點,但是對於敏捷開發別後的原則和哲學,卻甚少深思。     在傳統的瀑布式開發方式中,前期的分析和設計是最重要的,專案中的程式碼不過是按照這個設計嚴格製造出來的產品,而專案中的程式設計師也只是按照已經做好的設計進行生產的程式碼工人而已。傳統的瀑布式開發方式是把軟體也當成一個工業製成品來設計和生產的。     在敏捷開發方式中,最重要的原則是程式碼不是設計出來的,而是生長出來的,在一些權威的關於敏捷開發的書中,關於程式碼的描述中用的最多是evolvo這個單詞。Evolvo這個詞只能用於一個有機體,不可能用在一個工業製成品的身上,一個工業製成品是不可能進化的,你看到過一塊肥皂能進化嗎? 如果我們真的要擁抱敏捷的話,我們首先需要改變的是我們對程式碼的看法,程式碼在敏捷開發中是設計和業務邏輯的最終和最重要的載體,是一個能夠根據需求不斷進化的有機體。     敏捷和瀑布模式程式碼觀念上的區別,必然導致的是這兩種開發方式對開發人員的不同要求。在傳統的瀑布開發方式中,開發人員只是負責把設計文件翻譯成機器能讀懂的程式碼,僅此而已。敏捷開發從它產生的第一天起就強調了對開發人員的重視。敏捷強調程式碼的進化和重構,要求開發人員能夠發現程式碼中的一些不好的設計和不能清晰地體現設計的程式碼,並能夠對其進行重構和改進。     說的簡單點,傳統的開發方式中,開發人員是操作工,是不需要獨立思考的,只需要按照傳統的工業生產方式進行簡單的重複勞動就可以了,也不需要有任何判斷力。但是在敏捷開發中,開發人員是園丁,他們要檢視程式碼是不是在朝正確的方向發展,並且不斷地對程式碼進行修剪和保養,這就使得開發人員在敏捷開發中不再是一個重複勞動的工人,而是一個需要有獨立思考和判斷力的手藝人。     敏捷開發相比於原有的瀑布開發方式,最大的優點也正在於對開發人員的解放和信任,但是也無形中提高了對於基層開發人員素質的要求。如果你的開發人員中沒有形成一種手藝人的態度的話,任何敏捷方法都是必然會破產的。很多專案和公司採用敏捷失敗的原因不是他們實踐敏捷方法的細節有什麼錯誤,而是他們從一開始找的人就錯了,他們的開發人員中沒能形成這種手藝人的態度。什麼是手藝人?手藝人就是把自己做出來的每一件東西都當成自己的作品,自身品味和精神的一個載體,體現著自己的價值和審美。把自己做的東西當成產品還是作品,是操作工和手藝人最大的區別。     所以說一個軟體開發公司如果真的想很好的實行敏捷開發,就首先要在開發人員中培養手藝人的態度。在中國實行敏捷開發,最難的不是怎樣去實踐敏捷開發的具體細節,開個scrum站立會議,弄塊兒白板做Kanban,這些都不是最難的,最難得是怎麼找到或培養符合敏捷精神的開發人員。中國文化中最缺少的就是手藝人的態度,因為中國的傳統思維是萬般皆下品,唯有做官高,權力在中國這片土地的回報率實在是太高了,以至於所有其他工作的投資回報率在它面前都相形見絀。我的很多同事和朋友,在做了許多年的開發工作後,仍然想當manager,這種選擇無可厚非,因為它從一個側面說明了中國文化中對權利的迷戀是多麼的普遍和長久。在這樣的文化基礎上實行敏捷尤其要注意手藝人精神的培養。    說了這麼多敏捷開發的特點,舉個不見得恰當的例子來加深一下理解吧。傳統的開發方式就相當於計劃經濟(如果不知道什麼是計劃經濟的童鞋,請回家問父母,實在篇幅有限,無法在此普及),更相信精英進行的頂層設計,迷戀於對流程的定義和控制,不相信也不依賴基層參與者的創造力和自我決策,基層參與者被物化成了一個個活的機器或是蟻群中的工蟻。敏捷開發卻更像市場經濟,它當然也注重精英對社會的設計和他們的領導作用,但是它同時更尊重經濟活動中每一個基層參與者的自我決策和創造力。敏捷開發的根本優勢在於對人的解放,對開發人員的尊重和信任,承認他們是軟體開發活動中必不可少的創造者而不僅僅是一個操作工。    關於敏捷開發,我上面已經說了很多了。關於敏捷開發的原則和實踐,大家可以參考robert martin寫的那本“敏捷開發原則,模式與實踐”這本書,這本書也是在我學習敏捷開發的過程中對我影響最深的一本書。    敏捷開發最基本的原則就是敏捷聯盟釋出的敏捷宣言,一共有四條,具體的條目我就不在此一一列舉了,大家可以看我上面推薦的那本書。這四條敏捷宣言,不僅影響了我對敏捷開發的理解,更是深刻的影響了我的人生觀。我將敏捷宣言中體現出的原則總結為8個字:關注成長,擁抱變化,我將其稱之為敏捷主義,因為我覺得這些原則將成為網際網路時代我們最好的生存策略。    隨著網際網路時代的來臨,我們的經濟和社會發展正以我們無法預料的方式在變化。預測和期待本來是人類一種特有的優勢,人類就靠著這些優勢在遠古的生存競爭中活了下來,成為贏家。我們現在面臨的最大的悖論確是隨著人類社會的發展,我們的未來越來越難以預測。在農業時代和傳統的工業時代,你基本上可以根據以前若干年的情況來預測未來的收益,但是隨著網際網路時代的來臨,我們根本無法預測出一些不知道從什麼地方冒出來的顛覆力量。諾基亞和摩托羅拉肯定沒想到智慧手機的發展會給他們帶來滅頂之災。在這樣的一個如此不可思議的年代,我們唯一能夠的做的就是不去做過長時間的預測,同時不斷地讓自己成長,讓自己永遠保持好奇心和對變化的敏感。關注成長就是三省吾身,每天都要想一想自己獲得了什麼,有哪些錯誤需要注意。這些獲得可以是減掉的體重,記下來的一段名言或自己喜歡的座右銘,又或是通過讀書獲得的一種內心體驗。擁抱變化就是永遠要保持一分好奇心,人類的好奇心是人類最可貴的能力和所有人類進步的終極動力,不要讓我們過早的將我們的好奇心拋棄掉。我說了這麼多,但是我覺得喬布斯說的那句話是對敏捷主義的最精煉的表達: stay hungry, stay foolish。讓我們永遠記住這句話吧,讓我們永遠保持對進步的飢餓和對世界的好奇。