分布式軟件開發

發表于:2014-05-26來源:博客園作者:李響點擊數: 標簽:分布式開發
作為 ThoughtWorks 的一名咨詢師,我曾不止一次的被問到 ThoughtWorks 的交付項目和一般意義上的外包到底有何區別。要區分差別,首先要對外包加以定義,外包從最傳統的 IT 外包到業務流

  作為 ThoughtWorks 的一名咨詢師,我曾不止一次的被問到 ThoughtWorks 的交付項目和一般意義上的外包到底有何區別。要區分差別,首先要對外包加以定義,外包從最傳統的 IT 外包到業務流程的外包,以及最近幾年新興的知識流程外包,其本身的定義也在不斷的演化。每種外包有其不同的訴求,傳統的IT外包和業務流程外包追求成本的降低,而知識流程的外包則更著眼于客戶 知識能力的提升以及團隊的成長。

  ThoughtWorks 的交付項目更多的是一種知識流程外包的高端服務。交付項目的成功不僅是交付卓越的軟件,還需要在交付卓越的軟件的過程中, 深刻理解客戶的市場需要和業務模式,并通過自己的努力去影響客戶,最終和客戶以一個團隊的模式一同交付高質量的軟件。 而怎樣去影響客戶的行為,進而鼓勵他們去嘗試更多最佳實踐呢?是否只能通過咨詢項目達到這個目的呢?一般來說,咨詢是需要長期在客戶現場進行持續的影響,才能產生效果。但交付項目如同很多外包項目一樣,通常是離岸的。那么隔著十萬八千里的距離,再加上幾個小時的時差,如何才能真的像一個團隊一樣緊密合作,并且持續的影響客戶嘗試更多最佳實踐,一步步實現交付卓越軟件這一目標呢? 溝通,就是基于知識流程外包的分布式開發中,最大的挑戰。

  正如前面所說的,我們有著地理上的距離,這就意味著我們會有巨大的文化差異??蛻粽f“還可以”,可能意味著其實有些問題。如果說東西方的文化差異可以通過了解當地的風俗民情去理解的話,那么企業的文化差異就需要一些同理心了。作為一家“不創新就會死(Innovate or Die)”的先鋒企業,我們的咨詢師通常是勇于嘗試,熱衷創新的;而我們的客戶卻很有可能是擁有龐大的組織結構的傳統企業,做任何一點改變都需要考慮所有部門利益,甚至很長時間都難以做出一個決定,這和我們的快速反饋原則往往都是不相容的。

  所以溝通毫無疑問會成為分布式開發最大的挑戰。經過多個分布式開發項目,我們總結出以下幾個最佳實踐:

  快速啟動(Inception)

  快速啟動中, 所有的項目干系人通常會聚集到一起,在兩周左右的時間中進行一系列的愿景分享、業務探索、產品設計、需求收集以及計劃發布等活動。

  快速啟動的目的首先是讓大家聚到一起。作為可能要合作上幾個月甚至幾年的隊友,雖然之后很長一段時間大家天各一方的工作,但在啟動階段能夠認識彼此,通過面對面的溝通對對方的工作有感性的認知,無疑對于后面工作的展開會起到重要作用。

  快速啟動通過兩周密度較大的活動,讓每個團隊成員,在盡可能短時間的內,達成共識。這其中包括了解戰略愿景,進而理解項目的機遇與挑戰;通過和市場人員的溝通去理解客戶需要;和產品部門一起設計出符合客戶體驗需要的產品原型,進而拆分出可開發的需求;根據優先級排列并發布計劃。

  在兩周的時間里,團隊將一個商業概念轉換為形象的原型,并制定可供開發使用的發布計劃,快速啟動的交付物無疑對于后面的開發階段非常重要,而更重要的是快速啟動的交付物是整個團隊一起工作產出的。每個人都參與了產生的過程,分享了相同的上下文,這對于后面的開發階段的有效溝通會非常有幫助。

  在快速啟動之后,團隊一般就可以開始進入迭代0的開發了。在迭代0中,所有團隊成員能繼續一起工作,在這個較短的迭代搭建好環境,對架構都形成共識,試著在迭代0里去完成一個基本的需求。

  快速啟動和迭代0這段時間中,所有團隊成員緊密合作,不光對于交付軟件有所幫助,也能更好地讓咨詢師理解客戶團隊的工作習慣、技術水平和代碼風格,進而評估哪些最佳實踐是適合客戶團隊的。比如我曾經參與過的一個項目中,在快速啟動階段,我們發現客戶團隊的很多基本實踐,如TDD,已經做的很好,代碼水平也很嫻熟,但部署的方式卻很落后。同時,業務部門的需求明顯需要持續交付來支撐,于是持續交付就成了重點嘗試的實踐。每個項目都具有自己的獨特性,所以通過快速啟動的方式,用最快的速度了解客戶的知識流程上需要改進的地方,這樣跟客戶溝通的時候,才會讓客戶更加認同知識流程外包的高附加值。

原文轉自:http://kb.cnblogs.com/page/158996/

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97