再談敏捷開發(fā)的好處及敏捷外包的前景
本文是Taskcity(一個(gè)提供敏捷管理工具以及為敏捷外包提供支持的公司)對(duì)敏捷外包的一些看法,對(duì)于理解敏捷的一些基礎(chǔ)概念還是有一些幫助的。
Agile,敏捷開發(fā)被越來(lái)越多的開發(fā)企業(yè)和團(tuán)隊(duì)所接受。敏捷恰當(dāng),可以顯著提高開發(fā)效率和產(chǎn)品的開發(fā)周期。問(wèn)題是,“敏捷”方法是否能適用到軟件外包行業(yè),這個(gè)爭(zhēng)論 由來(lái)已久,各有說(shuō)辭。最典型的爭(zhēng)論就是,作為外包的一個(gè)顯著特點(diǎn),用戶和開發(fā)團(tuán)隊(duì)是相對(duì)遠(yuǎn)程,甚至開發(fā)團(tuán)隊(duì)內(nèi)部也存在遠(yuǎn)程的問(wèn)題。如果一個(gè)團(tuán)隊(duì)不能身處一室,其中強(qiáng)調(diào)的溝通和互動(dòng)是否能夠得到有效的執(zhí)行,是一個(gè)大問(wèn)題。
傳統(tǒng)的外包商業(yè)環(huán)境,是客戶和服務(wù)提供方達(dá)成一個(gè)長(zhǎng)期的合同,基于一個(gè)相對(duì)較長(zhǎng)的階段,提供穩(wěn)定的外包服務(wù)支持。現(xiàn)在,越來(lái)越多的企業(yè)客戶開始考慮將外包 項(xiàng)目劃分為小的可執(zhí)行單位。風(fēng)險(xiǎn)可控,操作靈活。而服務(wù)提供方相對(duì)也達(dá)成了這個(gè)共識(shí)。其實(shí),這兩種情況,如果通過(guò)敏捷的開發(fā)模式,在一個(gè)長(zhǎng)期的合作過(guò)程 中,大家會(huì)發(fā)現(xiàn),Agile不僅可行,而且的確能形成一個(gè)雙贏的局面。一起來(lái)看看我們的發(fā)現(xiàn)吧。
方法恰到好處
如果我們追求看到一個(gè)項(xiàng)目完成的效率和效果,敏捷開發(fā)其實(shí)優(yōu)于傳統(tǒng)的開發(fā)模式,即便對(duì)于初次接觸這個(gè)概念的發(fā)包客戶亦如此。我們大家都知道,在很多情況 下,發(fā)包客戶和服務(wù)提供方在涉足將項(xiàng)目外包出去開發(fā)之前,都擁有自己比較熟悉的開發(fā)模式和方法。敏捷開發(fā)或者說(shuō)增量開發(fā),可以讓雙方很輕易的統(tǒng)一到一個(gè)接口。傳統(tǒng)的開發(fā)方法基本上都是基于一個(gè)反復(fù)推敲的合同,合同中對(duì)于功能設(shè)計(jì)以及權(quán)利義務(wù)定義原則上都進(jìn)行了仔細(xì)的定義。但是,根本的問(wèn)題是,很多用戶在項(xiàng) 目開始前,甚至開始的初期都沒(méi)有一個(gè)明確的,或者說(shuō)準(zhǔn)確的描述。這樣,很多時(shí)候,客戶為了保護(hù)自己的利益,會(huì)盡可能多的添加功能到這個(gè)項(xiàng)目書中。而開發(fā)服 務(wù)提供方考慮的是如何在自己的成本控制內(nèi)得到盡可能多的盈利。在一開始,其實(shí)就為雙方日后的糾紛埋下了種子。我們能看到,在傳統(tǒng)的開發(fā)外包中,相當(dāng)比例的 項(xiàng)目最后,即便完成交付,完成支付,最后雙方的心情都是不太好。敏捷開發(fā)強(qiáng)調(diào)了階段性交付,增量開發(fā),用戶互動(dòng)。最后的交付物有時(shí)和原始的設(shè)計(jì)已經(jīng)有了很 大的出入,但是客戶貫穿了整個(gè)開發(fā)的周期,了解了所有的變動(dòng)以及緣由,其滿意度甚至超過(guò)一個(gè)100%吻合的交付結(jié)果。用戶的滿意度和開發(fā)完成的代碼量不是 直接的因果關(guān)系。而在軟件外包行業(yè)中的同行們都知道,一個(gè)滿意的客戶意味著可能的后續(xù)項(xiàng)目,而這也是服務(wù)提供方最希望看到的結(jié)果。
溝通的威力
肖伯納有一句名言“England and America are two countries divided by a common language。”意思是英國(guó)和美國(guó)是被一個(gè)相同的語(yǔ)言所分隔的兩個(gè)國(guó)家。這里不是指的地理上的分隔,而是文化溝通上的差異,即便他們都說(shuō)一種語(yǔ)言。英 美尚如此,何況作為一個(gè)典型東方文化代表的中國(guó)和我們的歐美客戶呢?不同的時(shí)區(qū),不同的文化,不同的工作方法和原則,導(dǎo)致溝通成為了我們進(jìn)行海外外包的一 個(gè)瓶頸。敏捷開發(fā)既強(qiáng)調(diào)了溝通,又為順暢的溝通提供了方法和指導(dǎo)。其中持續(xù)的交付實(shí)際是在用實(shí)實(shí)在在的形式進(jìn)行了項(xiàng)目的溝通,從而降低了最后的交付風(fēng)險(xiǎn)。 想想吧,作為傳統(tǒng)開發(fā)模式,比如一個(gè)瀑布式的開發(fā),六個(gè)月后,客戶才能第一眼看到自己想要的產(chǎn)品,這里面能產(chǎn)生錯(cuò)愕的概率有多大,大家可以想象一下。
迭代是趨于完美的過(guò)程
羅馬不是一天建成的。不要嘗試對(duì)完美的一步到位,除非你的用戶愿意犧牲寶貴的進(jìn)入市場(chǎng)的時(shí)機(jī)。外包開發(fā)不象是一個(gè)公司內(nèi)部的開發(fā)團(tuán)隊(duì)的 管理模式,對(duì)于離岸外包而言,雙方遠(yuǎn)隔萬(wàn)里。所以我們的建議就是,只用盡最大可能不斷地從客戶那里得到進(jìn)程中的反饋,進(jìn)而對(duì)開發(fā)加以修正,才不會(huì)出現(xiàn)最終 和用戶意愿的大偏差。在雙方可以接受的情況下,定義一個(gè)一個(gè)短促有效的迭代過(guò)程,第一時(shí)間發(fā)現(xiàn)問(wèn)題,放到下一個(gè)迭代中去解決。一個(gè)典型的迭代包括計(jì)劃-設(shè) 計(jì)-反饋-執(zhí)行(PDCA)。
勇于面對(duì)改變
需求變更在整個(gè)軟件開發(fā)的生命周期中是一個(gè)永恒的話題。也是客戶與服務(wù)提供方最糾纏不清之所在。改變的導(dǎo)火索可以來(lái)自方方面面,既有可 能是一覺醒來(lái)后的靈光一現(xiàn),也有可能是來(lái)自客戶外部商業(yè)環(huán)境的改變。既然是現(xiàn)實(shí),就接受它吧。當(dāng)然,處理得當(dāng),這種變化可能協(xié)助雙方得到一個(gè)更優(yōu)秀的軟 件,也能讓客戶對(duì)你的快速應(yīng)變產(chǎn)生好感。否則,如果固守原始的設(shè)計(jì)稿件,或者永遠(yuǎn)作為一個(gè)新功能要求追加資金,有可能得到一個(gè)Case,卻失去一個(gè)用戶。 另外,我們總是陷在一個(gè)自己預(yù)設(shè)的陷阱里,客戶的要求改變永遠(yuǎn)是對(duì)功能的增加。其實(shí),一個(gè)過(guò)程中的再設(shè)計(jì),有可能會(huì)降低開發(fā)的成本。
質(zhì)量保證,真的嗎?
聽起來(lái)像是玩笑。敏捷開發(fā)這種快速交付,還能保證質(zhì)量,象是天方夜譚。其實(shí)不然。快速交付,讓用戶能夠盡快試用你的功能,盡快發(fā)現(xiàn)問(wèn) 題,就整個(gè)開發(fā)周期而言,整體質(zhì)量一定會(huì)得到提升。在傳統(tǒng)開發(fā)模式中,我們都會(huì)或多或少遇到這樣的情況,因?yàn)殚_發(fā)時(shí)間的拖延(總是會(huì)拖延,這不可是玩 笑!),測(cè)試時(shí)間永遠(yuǎn)是第一個(gè)被壓縮的階段。結(jié)果可想而知。更多的迭代引入了更多的測(cè)試周期和時(shí)間。
事實(shí)上敏捷開發(fā),敏捷外包都是可行的,甚至大型項(xiàng)目中應(yīng)用敏捷也是可行的。欲更多了解敏捷開發(fā),可參考51CTO的初探敏捷開發(fā)專題。
【編輯推薦】