如何提高離岸軟體開發項目的成功機率?

來源:互聯網
上載者:User

前言:

  • 軟體開發項目的成功,取決於很多相互作用、綜合影響的因素,因此我們無法找到一種辦法來保證軟體開發項目能夠100%獲得成功。
  • 但在軟體開發領域,通過採取一些特定的做法或實踐,可以大大提高軟體項目的成功機會,因而我們有必要去發現並採納這些做法和實踐。
  • 不管是離岸開發還是在岸開發,有很多通用的方法和實踐都能提高軟體項目的成功機率,但本文的目的不是去說明這些通用的做法。
  • 本文關心的僅僅是在離岸軟體開發這個環境中,顯得相對比較突出的問題,或者是相對比較容易出現問題的部分。
  • 文中所提到的內容,大多來自於作者在相關領域的工作經驗,希望這些經驗能夠對大家獲得離岸軟體開發項目的成功,有所協助。

問題:離岸軟體開發有什麼特別?

離岸軟體開發過程中所遇到的問題,大多數都跟在岸開發相似,但主要因為距離上的限制以及時區的不同,有幾點跟軟體項目成敗密切相關的要素變得突出起來:

  • 首先是團隊之間的協同一致,變得更加困難,這既包括在岸團隊和離岸團隊之間就工作內容方面的協調一致,也包括兩個團隊之間就項目進展的同步;
  • 其次是溝通的壁壘增加了,這主要包括團隊之間的資訊共用和知識傳遞壁壘,可能的影響是增加了由誤解資訊導致的返工和浪費;
  • 再則就是位於兩個不同地點的團隊之間,容易產生不信任的現象,這將影響團隊合作的順利度和有效性,增加很多不必要的成本;

先說團隊之間的協同問題,在離岸軟體開發中,大家可能遇到過下面這些問題:

  1. 這邊團隊進行的改動,導致對岸團隊的代碼編譯失敗,影響了對方工作的正常進展;
  2. 這邊團隊check in的內容,導致了對岸團隊的變更丟失,其中一方不得不復原或者重做相關的工作;
  1. 雙方的代碼整合過程超出了預期時間很多,而且充滿痛苦,這引起人員的不滿和系統的不穩定;
  1. 雙方的工作內容出現重複;
  2. 對方報告的Bug無法重現;

不難看出這些問題都有一個共性,就是雙方的協調一致沒有到位。就個人的經驗,採取以下做法將有助於降低這些問題發生的機率和影響:

  1. 雙方一開始就應該建立起公用程式碼程式庫,共同基於這套代碼進行開發,並採取持續整合的做法經常性同步代碼;
  1. 建立並遵循共同的規則,譬如每天Check in,並且check in之後,必須編譯通過才能下班;
  2. 盡量使用共同的開發工具和環境,譬如相同版本的控制項和相同的測試環境;
  1. 經常性同步,譬如定期合并Branch和Trunk;又譬如每周共同舉行兩次遠程站立會議;
  1. 採用相同的實踐並盡量使其有所交叉,譬如離岸在案團隊都採用2周一次的迭代,在每個迭代末共同舉行示範會議等;

離岸環境下,溝通方面的問題主要在於難以開展面對面的溝通以及時區的差異可能導致兩個團隊沒有彼此交疊的時間,常見問題有:

  1. 難以在不見面的情況下描述清楚需求,或者難以理解客戶的需求描述;
  1. 對需求文檔的相關疑惑得不到及時解答,進而影響進展;
  2. 做出來卻發現並不是客戶真正想要的;

那麼如何去應對這些問題呢?個人經驗中比較有效做法有:

  1. 一開始就建立多種溝通渠道,至少要保證雙方都知道彼此的IM,Email和電話;並且計劃固定的溝通時間,譬如每周二、周四溝通,每次是下午的13點到15點等;
  2. 盡量用有記錄可尋的方法來溝通需求,譬如更多地用書面檔案來代替口頭溝通,若口頭溝通,也盡量錄音並留存;
  3. 若用文檔傳遞需求,最好把格式固定下來,盡量多用圖片和表格,少用文字;User Story和Test Case是很有效需求溝通辦法;
  4. 非文件類型的需求傳遞,原型是最好的方法,最質樸的原型就是手工畫的草圖,將其掃描或拍照;一段錄製的視頻資料也可以考慮;
  5. 盡量用產品去溝通,譬如每周或者每兩周向客戶示範一次產品並擷取反饋;
  6. 建立共同的資訊平台,譬如Wiki

總之,溝通的順暢度和有效性對離岸環境下項目的成敗影響很大,可能首先是一定要確保雙方都能花足夠的時間在溝通上(因為經常有些客戶不願意在這方面花時間),其次才是採用各種溝通的方法來增強溝通的效果。如果你是發包方,切忌當甩手掌柜的想法,如果實施者對產品沒有深入的認識,如何把產品做好呢?

至於信任問題,離岸環境下也是比較突出的,因為除了有形的產出外,雙方一般都看不到彼此在做些什麼,如果共事者之間沒有一定的信任,對項目的成功將是有害無利的。我遇到過的有兩種情況:

  1. 發包方對接包者的不信任 - 發包者心裡擔心自己的資源被浪費,所以他會想辦法設定種種要求和限制,以此確保團隊不會分心其它事情;實際上團隊這邊本來是全心投入的,現在為了滿足這些要求和限制,不但增加了很多額外的工作負擔,而且團隊成員覺得不被信任,缺乏幹勁。
  1. 雙方的團隊成員之間互相猜疑 - 我遇到過一個項目,開發人員之一認為對方的某個開發人員需求描述得不夠清楚,一直把需求退回去,而對方人員認為需求已經夠清楚了,不願進一步反饋,這就導致有些任務在需求這個環節被延誤,整體工作進展很慢,雙方就是因為缺乏信任而不願共同合作來解決這個問題。

我相信這類由於缺乏信任而引發項目進展受阻的現象應該還有很多,這也是為什麼要進行團隊建設的原因之一。在離岸環境下如何改善這種情況?以下建議可以參考:

  1. 增加雙方見面的機會,無論是商務訪問還是視頻會議,只要能讓雙方互相看到,感受到對方個體的真實存在,那種感覺會比只看得到冷冰冰的代碼、文本和螢幕要好很多;
  2. 建立共同解決問題的機制,譬如每個迭代結束後,大家一起開會進行總結回顧,討論共同的問題;
  1. 主動並有規律性地進行資訊共用和披露;

除了上面提到的這些做法,良好的任務拆分也可提高離岸軟體開發項目的成功機率,推薦的做法是把工作內容按照功能特性進行拆分,這樣做的主要目的是避免商務邏輯層面的耦合性,以減少不同團隊之間的溝通協調需要。如果是把項目外包給個人或者是能力還未達到勝任系統級設計的團隊,那麼在分割任務時,盡量把任務分得細小而明確也是比較有益的做法,因為小而明確的任務利於實施和管理,使得項目更加可控。

以上是在離岸軟體外包環境下,軟體開發項目中比較常見的三個問題及其對策,歡迎補充和探討。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.