探秘軟件開發(fā)的另一極(1)
對(duì)于瀑布式開發(fā),人們耳熟能詳。但是對(duì)于敏捷開發(fā)這一極,可能所知甚少。日前,ThoughtWorks首席科學(xué)家Martin Fowler、ThoughtWorks中國(guó)公司總經(jīng)理Sidney G.Pinney與中國(guó)計(jì)算機(jī)報(bào)高級(jí)副總編郭旭的一番對(duì)話將幫助你了解敏捷開發(fā)的奇妙世界。
敏捷開發(fā)與人
面對(duì)軟件成敗的關(guān)鍵因素是什么這一問題,在軟件架構(gòu)、開發(fā)方法與人三個(gè)因素中,Martin Fowler毫不猶豫地選擇了人。那么敏捷開發(fā)與人是一個(gè)什么樣的相互依存關(guān)系呢?
郭旭:您曾提到軟件開發(fā)過程中人最重要。那么,相對(duì)于傳統(tǒng)的開發(fā)方法而言,敏捷開發(fā)對(duì)于開發(fā)團(tuán)隊(duì)的人員有些什么特殊的要求?
Martin Fowler:目前為止,我們還沒有相關(guān)驗(yàn)證表明什么樣的人能在敏捷方法里面表現(xiàn)得更好。但是有一點(diǎn)值得注意,不管采用什么樣的方法,人的素質(zhì)與水平都會(huì)對(duì)項(xiàng)目造成至關(guān)重要的影響。
郭旭:傳統(tǒng)的軟件開發(fā)方法是將架構(gòu)設(shè)計(jì)與程序開發(fā)分開的。架構(gòu)設(shè)計(jì)往往需要具有較高造詣的架構(gòu)師來實(shí)現(xiàn),需要他對(duì)軟件的整體結(jié)構(gòu)非常熟悉,而程序開發(fā)可能只需要開發(fā)人員掌握編程語言就可以了,那么敏捷開發(fā)對(duì)開發(fā)人員的要求是怎樣的呢?
Martin Fowler:首先軟件的設(shè)計(jì)和編程這兩件事情本來就是非常接近,很難區(qū)分開來。傳統(tǒng)軟件開發(fā)方法中一定要在這兩者之間劃分一條線,說這部分是設(shè)計(jì),那部分是編程,造成的結(jié)果往往不是特別好,常常導(dǎo)致一些脫離實(shí)際的設(shè)計(jì)和脫離設(shè)計(jì)構(gòu)想的編程實(shí)現(xiàn),我們?cè)诤芏囗?xiàng)目中親眼目睹了這些方面的實(shí)例。當(dāng)一個(gè)架構(gòu)師脫離編程實(shí)踐很長(zhǎng)時(shí)間之后,他做出來的架構(gòu)設(shè)計(jì)往往變得不切實(shí)際,讓程序員很難實(shí)現(xiàn)。
郭旭:對(duì)于一個(gè)企業(yè)的軟件項(xiàng)目,其業(yè)務(wù)人員參與與否將決定著敏捷開發(fā)的成功與否嗎?
Sidney G.Pinney:如果說業(yè)務(wù)部門能夠參與到開發(fā)過程中與開發(fā)團(tuán)隊(duì)一起工作的話,敏捷方法將給予他們最大的參與機(jī)會(huì)。他們將能夠在最短的時(shí)間內(nèi)看到一個(gè)軟件是如何由腦子里的想法變成草圖,再變成程序,最后變成一個(gè)可以用的軟件,看到整個(gè)系統(tǒng)如何由一小塊一小塊的功能組合起來變成一個(gè)大的應(yīng)用程序,并享受這樣一個(gè)樂趣,親眼看到自己在業(yè)務(wù)上的需求如何變成一個(gè)實(shí)實(shí)在在的軟件。
相反,如果業(yè)務(wù)人員不愿意參與到軟件的開發(fā)過程中,那么敏捷開發(fā)是很難將一些好的開發(fā)方法貫徹進(jìn)開發(fā)過程中的。我個(gè)人認(rèn)為,如果業(yè)務(wù)人員對(duì)軟件不感興趣,不想跟開發(fā)人員溝通,不管通過什么樣的軟件開發(fā)方法都不可能得到很好的軟件。
郭旭:在采用敏捷方法實(shí)施系統(tǒng)開發(fā)時(shí),是否要求開發(fā)團(tuán)隊(duì)所有人在個(gè)人素質(zhì)、編程能力上都有較高的水準(zhǔn)?如果他們的水平高低不同是否會(huì)影響系統(tǒng)開發(fā)的效果?
Sidney G.Pinney:如果團(tuán)隊(duì)的成員都在一個(gè)水平上,并且是高水平上,當(dāng)然是有它的好處。但是對(duì)于一個(gè)團(tuán)隊(duì)來講,更多的情況是,團(tuán)隊(duì)中有一些人是比較資深的、高水平的,另外一些人則是水平較低、缺乏經(jīng)驗(yàn)的。當(dāng)這樣兩組人結(jié)合成一個(gè)團(tuán)隊(duì)進(jìn)行項(xiàng)目開發(fā)時(shí),首先應(yīng)當(dāng)是新手向高水平成員學(xué)習(xí),這是毫無疑問的。但是,某種程度上高水平成員也需要向新手學(xué)習(xí),因?yàn)樾率值乃枷脒€處在一個(gè)新鮮的狀態(tài),腦子里不存在一些思維定式。他雖然可能不知道應(yīng)該做哪些事情,但是可能會(huì)有非常新鮮的想法。人是開發(fā)過程中最重要的因素,在整個(gè)團(tuán)隊(duì)進(jìn)行協(xié)作開發(fā)時(shí),應(yīng)當(dāng)盡量讓每個(gè)成員發(fā)揮出最大的能量。
誰更適合敏捷方法
作者:李琨
隨著敏捷開發(fā)漸成氣候,許多人提出了這樣的疑問:敏捷開發(fā)是否適合自己的研發(fā)團(tuán)隊(duì),適合自己的企業(yè)?
郭旭:事實(shí)上,目前使用敏捷開發(fā)的人依然是少數(shù)。既然是一個(gè)很好的方法,為什么沒有被開發(fā)人員廣泛采用呢?企業(yè)用戶為何也甚少使用它?
Martin Fowler:敏捷開發(fā)仍然是一種比較新的方法。對(duì)于企業(yè)客戶而言,要采用這種方法實(shí)施軟件開發(fā),就需要從事業(yè)務(wù)的人與實(shí)施開發(fā)的技術(shù)人員更加緊密地結(jié)合在一起工作,這將需要企業(yè)員工付出很大工作量,這種工作方式被接受也需要一個(gè)過程。所以即便有越來越多的人對(duì)敏捷開發(fā)很感興趣,但是到目前為止也只是少數(shù)人在采用它。
郭旭:具體到應(yīng)用,您覺得什么樣的企業(yè)、什么樣團(tuán)隊(duì)、什么樣的項(xiàng)目更適合使用敏捷開發(fā)這種方法呢?
Sidney G.Pinney:實(shí)施敏捷開發(fā)會(huì)給企業(yè)帶來很多影響與變化。一個(gè)好的企業(yè)應(yīng)該是樂于接受變化的企業(yè),愿意通過不斷地改進(jìn)軟件來促進(jìn)企業(yè)變化,并且能夠從這種變化中感受到一種興奮、快樂。也就是說,敏捷開發(fā)要求一個(gè)企業(yè)擁有適應(yīng)變化的能力,它給企業(yè)帶來的是擁抱變化的能力。因此,適合使用敏捷開發(fā)的企業(yè),一定是一個(gè)愿意接受變化的企業(yè)。如果說企業(yè)更愿意看到自己的業(yè)務(wù)一萬年不變,那么給它一個(gè)像敏捷開發(fā)這樣靈活的方法沒有意義。
郭旭:剛才說到在敏捷開發(fā)過程中人是最重要的因素,與傳統(tǒng)的軟件開發(fā)方法相比,知識(shí)庫更多地是積累在開發(fā)人員的腦海中,而不是一堆需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測(cè)試報(bào)告等文檔。但是當(dāng)一個(gè)項(xiàng)目結(jié)束以后,項(xiàng)目出現(xiàn)問題,或者需要重新進(jìn)行軟件變更與維護(hù)時(shí),發(fā)覺對(duì)該項(xiàng)目有深刻了解的開發(fā)人員已經(jīng)不能回來繼續(xù)提供服務(wù)時(shí),該怎么辦?
Sidney G.Pinney:確實(shí),在使用敏捷方法開發(fā)軟件時(shí),產(chǎn)生的文檔非常少是毫無疑問的。因?yàn)槲覀冇眉夹g(shù)的手段把更多的知識(shí)固化在這個(gè)項(xiàng)目中。后來者可以通過閱讀代碼或者是察看項(xiàng)目本身了解到項(xiàng)目的很多知識(shí)。而對(duì)于那些不能在代碼中體現(xiàn)出來的知識(shí),我們會(huì)采用交流方式記錄這些知識(shí)。在ThoughtWorks的標(biāo)準(zhǔn)工作方法中,有一個(gè)專門業(yè)務(wù)流程用來記錄相應(yīng)文檔,幫助客戶保留關(guān)鍵文檔。而這些文檔也往往是客戶真正需要的。
為什么說這些文檔是客戶真正需要的呢?因?yàn)檫@些都是開發(fā)團(tuán)隊(duì)在實(shí)施開發(fā)過程遇到的真正難題,由于當(dāng)時(shí)不明白,才記錄下來。團(tuán)隊(duì)已經(jīng)掌握的知識(shí)只須固化在項(xiàng)目?jī)?nèi)就可以,而不明白的部分可能是接下來接手項(xiàng)目的人同樣不明白的地方。在傳統(tǒng)的軟件開發(fā)過程中留下來的例如詳細(xì)設(shè)計(jì)等文檔,從知識(shí)上來講,對(duì)于許多人來講往往是多余的。與此相對(duì),敏捷方法留下的文檔幾乎是沒冗余的。
敏捷開發(fā)如何前進(jìn)
至今,仍然只有少部分人在使用敏捷開發(fā)。敏捷開發(fā)應(yīng)當(dāng)如何發(fā)展并尋找到自己的商業(yè)價(jià)值呢?
郭旭:敏捷開發(fā)方法解決了軟件的適應(yīng)性問題,但是我們知道軟件工程里軟件的可復(fù)用性也是很關(guān)鍵的。請(qǐng)問Martin Fowler先生,軟件的適應(yīng)性和軟件的可復(fù)用性哪個(gè)更重要呢?
Martin Fowler:應(yīng)當(dāng)說軟件的可復(fù)用必須建立在軟件是可用的基礎(chǔ)上,軟件首先要解決可用性問題,可復(fù)用性對(duì)軟件本身提出了更高的要求,更多的軟件是不具備可復(fù)用能力的。
郭旭:軟件的可復(fù)用性與適用性解決的是否是不同領(lǐng)域的問題?
Martin Fowler:這兩者相對(duì)獨(dú)立,并具備太多的可比性。敏捷方法不但能解決軟件的適應(yīng)性,同樣也能實(shí)現(xiàn)軟件的可復(fù)用性。
現(xiàn)在有很多人也用敏捷的方法開發(fā)可復(fù)用的軟件,比如一些Java框架也是采用敏捷方法開發(fā)的,具有很強(qiáng)的可復(fù)用性,而且很多開源軟件也采用了大量的敏捷實(shí)踐,雖然他們并沒有明確提出采用哪種方法,但是其開發(fā)特征具有敏捷的特征。
郭旭:如果在項(xiàng)目開發(fā)過程中,ThoughtWorks幫助客戶學(xué)會(huì)敏捷開發(fā)的方法,客戶將不再需要ThoughtWorks,似乎ThoughtWorks的商業(yè)價(jià)值也就此中止。相反如果不教會(huì)客戶,將導(dǎo)致這樣一種情況的出現(xiàn),客戶只要有一點(diǎn)業(yè)務(wù)變化或需求,就需要不斷地尋求ThoughtWorks的幫助,讓ThoughtWorks將該客戶綁定,持久實(shí)現(xiàn)商業(yè)價(jià)值。在實(shí)際項(xiàng)目運(yùn)作中,ThoughtWorks是如何實(shí)現(xiàn)自身商業(yè)價(jià)值的?
Sidney G.Pinney:我們最希望的工作方式是進(jìn)入這個(gè)項(xiàng)目和客戶團(tuán)隊(duì)一起工作,開發(fā)出客戶需要的頭一兩個(gè)版本,與此同時(shí)提高客戶團(tuán)隊(duì)的開發(fā)能力,讓他們能夠有能力把后續(xù)的開發(fā)繼續(xù)進(jìn)行下去,然后我們將離開并尋找下一個(gè)項(xiàng)目。因?yàn)閷?duì)于ThoughtWorks人來講,更喜歡去接受新的業(yè)務(wù)、新的技術(shù)、新的挑戰(zhàn)。
因此,我們不太喜歡在一個(gè)項(xiàng)目上停留非常長(zhǎng)的時(shí)間,這會(huì)讓我們感覺有些缺乏挑戰(zhàn)。所以我們更愿意這樣做,就是與客戶團(tuán)隊(duì)共同工作一段時(shí)間,教會(huì)客戶團(tuán)隊(duì)敏捷開發(fā)方法,以后選擇離開這個(gè)項(xiàng)目。ThoughtWorks的商業(yè)價(jià)值不是在于給客戶做持續(xù)不斷的系統(tǒng)維護(hù),而是在于教會(huì)越來越多的人如何去采用敏捷開發(fā),帶給他們敏捷開發(fā)的價(jià)值。(n101)
作者:李琨
相關(guān)文章
微軟Copilot重磅革新AI重新定義Office詳細(xì)介紹
這篇文章主要為大家介紹了微軟Copilot重磅革新AI重新定義Office的詳細(xì)內(nèi)容,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03CN域名強(qiáng)勢(shì)發(fā)展 穩(wěn)居全球第一大國(guó)家頂級(jí)域名
CN域名強(qiáng)勢(shì)發(fā)展 穩(wěn)居全球第一大國(guó)家頂級(jí)域名2009-03-03中文域名獲國(guó)際通行證 投資價(jià)值突飛猛進(jìn)
近來,中文域名無疑是互聯(lián)網(wǎng)世界關(guān)注的焦點(diǎn),它不僅在域名行業(yè)掀起熱潮,還牽動(dòng)了各行各業(yè),甚至引起兩岸三地和海外華人華僑的關(guān)注。2009-11-11萬網(wǎng)CN域名免費(fèi)注冊(cè)的活動(dòng)注冊(cè)地址
自去年CN域名全民體驗(yàn)活動(dòng)以來,CN域名已穩(wěn)居國(guó)家頂級(jí)域名世界第二,毋庸置疑地成為中國(guó)互聯(lián)網(wǎng)的主流域名。2008-03-03Firefox 3.0 最新 官方Beta 中文測(cè)試版 包括蘋果系統(tǒng)和linux版
Firefox 3.0 最新 官方Beta 中文測(cè)試版 包括蘋果系統(tǒng)和linux版...2007-11-11搜索引擎市場(chǎng)狼來了ChatGPT為Bing全面賦能
這篇文章主要為大家介紹了ChatGPT為Bing全面賦能搜索引擎市場(chǎng)狼來了,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02互聯(lián)網(wǎng)寒冬來臨 企業(yè)節(jié)流有訣竅
今年下半年,由次貸危機(jī)引起的金融危機(jī)波及全球,對(duì)大部分企業(yè)產(chǎn)生了許多不利影響,許多企業(yè)出現(xiàn)了資金周轉(zhuǎn)困難的情況,因此“開源節(jié)流”成為眾多企業(yè)的生存手段。2008-11-11企業(yè)郵件管理有新招 網(wǎng)上網(wǎng)下輕松應(yīng)對(duì)
隨著全球化趨勢(shì)的到來,市場(chǎng)競(jìng)爭(zhēng)更加激烈,因此對(duì)于企業(yè)來說,信息化、電子商務(wù)成為了必需。正是由于中小企業(yè)信息化和電子商務(wù)的需求催生了企業(yè)郵箱的需求。2008-12-12