由于全國(guó)所有的航空公司都是中國(guó)航信的客戶,但是他們分布在全國(guó),如果只是總部研發(fā),根本支持不了,因此中國(guó)航信通過(guò)全國(guó)各地分子公司的研發(fā)團(tuán)隊(duì)提供個(gè)性化版本的支持。這些大型復(fù)雜系統(tǒng)基本上都是分布式聯(lián)合開(kāi)發(fā)。
據(jù)介紹,2011年12月中國(guó)航信聘請(qǐng)惠普公司咨詢團(tuán)隊(duì)啟動(dòng)了敏捷咨詢項(xiàng)目,2012年4月,建成了開(kāi)發(fā)流程,2012年的9月就開(kāi)始第一次大批量、大規(guī)模的推廣,到2013年,已經(jīng)有了45個(gè)項(xiàng)目、445個(gè)人開(kāi)始加入敏捷開(kāi)發(fā)的隊(duì)伍。
2014年中國(guó)航信第一次召開(kāi)了敏捷總結(jié)大會(huì),大家都覺(jué)得敏捷實(shí)施的效果不錯(cuò)。
從2011年12月引入,到現(xiàn)在基本上已經(jīng)5年多了,在這5年的過(guò)程中既有成功,也有一些挫折,但最終的效果不錯(cuò)。從流程上看,2013年之前中國(guó)航信的敏捷主要是做推廣,到了2014年、2015年,發(fā)現(xiàn)如果只是過(guò)程的話,沒(méi)有辦法最大程度發(fā)揮敏捷實(shí)施的價(jià)值,還是需要跟上工具、平臺(tái),這樣才能真正的能夠持續(xù)集成、持續(xù)交付,所以在2014、2015年開(kāi)始,重點(diǎn)建設(shè)敏捷開(kāi)發(fā)的工具平臺(tái)。
以前做項(xiàng)目反饋比較慢,遇到問(wèn)題解決起來(lái)也比較麻煩,自從實(shí)施敏捷以后,我覺(jué)得基本上不再像以前了,基本上可以不空談了,大家的質(zhì)量意識(shí)、工作效率都有很大的提升,尤其中國(guó)航信還實(shí)施了最佳軟件工程的方法,都對(duì)我們團(tuán)隊(duì)的無(wú)論是個(gè)人能力、團(tuán)隊(duì)能力有很大的提升。
具體來(lái)說(shuō),通過(guò)敏捷實(shí)施以后,第一,統(tǒng)一版本規(guī)劃,使得定制版本的維護(hù)相對(duì)容易很多。第二,統(tǒng)一的管理平臺(tái),減少了異地或跨部門溝通的困難。第三,統(tǒng)一的質(zhì)量要求、技術(shù)要求,避免了后期才會(huì)發(fā)現(xiàn)的因?yàn)榕渲貌煌蛘叽a質(zhì)量很差而引起的一些返工,實(shí)現(xiàn)了持續(xù)交付,提高了客戶滿意度。
以下為崔航演講實(shí)錄:
謝謝主持人!我是第一次參加國(guó)際最佳實(shí)踐的年會(huì),心情非常激動(dòng),感謝孫振鵬先生給我們公司這個(gè)機(jī)會(huì),讓我站在這里跟大家一起分享我們?cè)诿艚菔录矫娴囊恍┙?jīng)驗(yàn)、教訓(xùn)。
我今天分享的主題主要是對(duì)于大型復(fù)雜系統(tǒng),尤其是多團(tuán)隊(duì)聯(lián)合開(kāi)發(fā)的時(shí)候我們?nèi)绾芜m應(yīng)敏捷的。
其實(shí)對(duì)于我們公司來(lái)說(shuō),跟互聯(lián)網(wǎng)企業(yè)不太一樣,我們是傳統(tǒng)的IT企業(yè),剛才前面說(shuō)了我們是民航的,在民航方面我們公司主要做的都是大型復(fù)雜的系統(tǒng),其實(shí)如果按照敏捷的理念來(lái)說(shuō),可能不是特別適用。但隨著互聯(lián)網(wǎng)的發(fā)展,對(duì)客戶的一些需要,如果我們還是按照以前瀑布式的模型來(lái)做項(xiàng)目的話,其實(shí)已經(jīng)不太適應(yīng)了,所以我們開(kāi)始在2012年敏捷了。
剛才聽(tīng)了前兩位演講嘉賓演講,內(nèi)容都非常精彩,在講主題之前先對(duì)我們公司做一個(gè)簡(jiǎn)單的介紹。我們是中國(guó)民航信息集團(tuán)公司,有30多年歷史,我們的前身是民航總局下面的計(jì)算機(jī)信息中心,是在1978年就成立了,我們集團(tuán)公司正式成立是2002年,其實(shí)是在2001年的時(shí)候就已經(jīng)在香港上市了。我們就是航空運(yùn)輸旅游信息專門的服務(wù)提供商,我們公司從之前的計(jì)算機(jī)信息中心不到100人的規(guī)模,經(jīng)過(guò)這么多年發(fā)展已經(jīng)達(dá)到了6000多人,并且有60多個(gè)分子公司。
在座各位應(yīng)該經(jīng)常坐飛機(jī)吧,大家有沒(méi)有用什么軟件去查這個(gè)航班信息?就是我們集團(tuán)公司下面一個(gè)子公司的產(chǎn)品。TravelSky是我們公司的名字。
說(shuō)一下我個(gè)人的信息,我是2005年開(kāi)始質(zhì)量工作的,我來(lái)自于航信總部的研發(fā)中心,我個(gè)人工作經(jīng)歷與研發(fā)管理體系的建設(shè)是跟航信息息相關(guān)的。在2005年的時(shí)候航信通過(guò)了ISO9000認(rèn)證,實(shí)施項(xiàng)目管理,當(dāng)時(shí)我剛好有幸加入了這個(gè)團(tuán)隊(duì)。2011年的時(shí)候我們通過(guò)了CMMI L3的評(píng)估,當(dāng)時(shí)我作為五人評(píng)估組重要成員之一。這個(gè)階段我們相當(dāng)于是航信主要做的項(xiàng)目開(kāi)發(fā)的規(guī)范化,大家也知道我們來(lái)源是央企民航的信息中心,當(dāng)時(shí)其實(shí)大家不太會(huì)做項(xiàng)目,只是說(shuō)去維護(hù)信息系統(tǒng)就好了。但是在這個(gè)階段我們發(fā)現(xiàn),你要是不會(huì)開(kāi)發(fā)規(guī)范,越來(lái)越?jīng)]有辦法滿足市場(chǎng)需要、客戶需要。
到了2012年我們開(kāi)始引入了敏捷,因?yàn)閺?010年開(kāi)始行業(yè)發(fā)展特別快,連帶其實(shí)我們傳統(tǒng)的這些IT行業(yè)對(duì)于客戶的需求都是需要快速響應(yīng)的,不是說(shuō)CMMI不好,過(guò)程過(guò)重,所以我們2012年引入了敏捷開(kāi)發(fā),希望能夠快速交付。
2013年我們公司就成立了PMO(項(xiàng)目管理辦公室),為什么之前沒(méi)有?2013年以前都是大型主機(jī),經(jīng)過(guò)這幾年的評(píng)估,主機(jī)系統(tǒng)越來(lái)越不能滿足民航業(yè)的發(fā)展了,我們現(xiàn)在旅客的增長(zhǎng)量非??欤覀儸F(xiàn)在信息系統(tǒng)如果仍然用大機(jī),在五年之后絕對(duì)滿足不了,所以我們?cè)?013年立項(xiàng),要進(jìn)行新一代旅客服務(wù)信息系統(tǒng)的建設(shè),這個(gè)項(xiàng)目國(guó)家投資18億,是特別特別大的項(xiàng)目,說(shuō)要成立一個(gè)PMO,當(dāng)時(shí)我也有幸加入了這個(gè)PMO,主要是負(fù)責(zé)質(zhì)量管理、質(zhì)量保證等工作。
到了第三階段,我們引入了集成產(chǎn)品研發(fā)的過(guò)程,為什么呢?因?yàn)樵谥拔覀兌际窃谧鱿到y(tǒng),后來(lái)發(fā)現(xiàn)只是做系統(tǒng)或者只是響應(yīng)客戶的需要不能滿足公司自身的發(fā)展,所以我們現(xiàn)在逐步要去做產(chǎn)品。做產(chǎn)品我們當(dāng)時(shí)就引入IBM的IPO集成產(chǎn)品研發(fā)過(guò)程,我們進(jìn)行了一年的咨詢,經(jīng)過(guò)整理,其實(shí)也是結(jié)合了快10年的過(guò)程的積累,最后發(fā)布了一個(gè)產(chǎn)品體系的白皮書。
下面進(jìn)入主題,敏捷在我們公司是怎么開(kāi)始實(shí)施的。2011年12月的時(shí)候我們開(kāi)始啟動(dòng)了一個(gè)咨詢項(xiàng)目,當(dāng)時(shí)聘請(qǐng)的是惠普的一個(gè)咨詢團(tuán)隊(duì),孫先生應(yīng)該知道,當(dāng)時(shí)有幸聘請(qǐng)了鄭力、徐毅都是目前很資深的敏捷教練,專門到航信來(lái)給我們實(shí)施敏捷。到了2012年4月,通過(guò)這個(gè)咨詢團(tuán)隊(duì)我們建成了開(kāi)發(fā)流程,在2012年的9月就開(kāi)始第一次大批量、大規(guī)模的推廣,一直到2013年我們已經(jīng)有了45個(gè)項(xiàng)目、445個(gè)人開(kāi)始加入敏捷開(kāi)發(fā)的隊(duì)伍了。
如圖,這兩個(gè)大家可能很奇怪這是什么東西?這其實(shí)是我們公司自己設(shè)計(jì)的一個(gè)認(rèn)證,是敏捷成熟度的認(rèn)證。我們2012年開(kāi)始試點(diǎn)推廣,2013年實(shí)行了一年,我們要看效果怎么樣,所以我們制定了一個(gè)成熟度等級(jí)評(píng)價(jià)方法,就是檢驗(yàn)所有的實(shí)施敏捷的團(tuán)隊(duì),他們到底成熟度達(dá)到了什么水平。我們應(yīng)該分成了三級(jí),其中這三級(jí)都是有三項(xiàng)標(biāo)準(zhǔn),還有三項(xiàng),因?yàn)槲覀儎傞_(kāi)始只有三項(xiàng)最佳的敏捷實(shí)踐。因?yàn)橛行﹫F(tuán)隊(duì)一開(kāi)始就上來(lái)了,但是后來(lái)又覺(jué)得不太適用,中途中斷了,所以我們看他的成熟度還有敏捷持續(xù)的時(shí)間。
定量的指標(biāo)其實(shí)是由度量指標(biāo)和敏捷實(shí)踐指標(biāo)兩部分組成的,包括自動(dòng)編譯、自動(dòng)構(gòu)建的頻率、代碼評(píng)審、分支覆蓋率等等,包括客戶演示,我們都是一些客觀的數(shù)據(jù)去看。敏捷實(shí)踐主要是,我們進(jìn)行項(xiàng)目管理,也是有一系列的指標(biāo),通過(guò)打分的機(jī)制看它實(shí)施的情況怎么樣。對(duì)于三項(xiàng)敏捷實(shí)踐其中還有一個(gè)是持續(xù)集成,還有客戶參與的效果,最終會(huì)給每個(gè)團(tuán)隊(duì)進(jìn)行評(píng)價(jià)。
到了2014年第一次召開(kāi)了敏捷總結(jié)大會(huì),當(dāng)時(shí)給所有的這些能夠得到三級(jí)敏捷成熟度團(tuán)隊(duì),由我們公司中心領(lǐng)導(dǎo)專門去給他們頒獎(jiǎng),并且在這個(gè)會(huì)上我們還有幸邀請(qǐng)了比如說(shuō)阿里資深的敏捷教練,包括又把鄭力請(qǐng)回來(lái)給我們?nèi)ブv一下,因?yàn)槭赂魞赡炅嗣艚莸陌l(fā)展有變化。我們?cè)谶@個(gè)大會(huì)挺成功的,大家都覺(jué)得敏捷實(shí)施的效果還是不錯(cuò)的。至今為止,我們覺(jué)得敏捷在我們研發(fā)中心都已經(jīng)成為了一種文化了。
最后總結(jié)一下,其實(shí)我們的敏捷實(shí)施從2011年12月引入,到現(xiàn)在基本上已經(jīng)5年多了,在這5年的過(guò)程中時(shí)間其實(shí)不短了,我前面介紹的可能還OK,但其實(shí)這個(gè)過(guò)程我們自己也很有體會(huì),有很多很多的一些挫折,但最終的效果不錯(cuò),后面會(huì)跟大家分享一下敏捷給我們帶來(lái)的收獲。2013年之前我們是做推廣,主要是一些敏捷的理論、方法,手把手的去教他們,到了2014年、2015年,我們發(fā)現(xiàn)如果只是過(guò)程的話,其實(shí)沒(méi)有辦法最大的發(fā)揮敏捷實(shí)施的價(jià)值,所以最后發(fā)現(xiàn)還是需要跟上工具、平臺(tái),這樣才能真正的能夠持續(xù)集成、持續(xù)交付,所以在2014、2015年開(kāi)始我們重點(diǎn)是建設(shè)敏捷開(kāi)發(fā)的工具平臺(tái)。這個(gè)是我們的一個(gè)發(fā)展過(guò)程。
下來(lái)就是以大型復(fù)雜系統(tǒng)多團(tuán)隊(duì)為例講講我們?cè)趺磳?shí)行敏捷的。
在我們公司什么叫大型復(fù)雜系統(tǒng)? 首先開(kāi)發(fā)周期肯定是2年以上的,而且團(tuán)隊(duì)規(guī)模一般都超過(guò)40人以上。舉個(gè)例子來(lái)說(shuō),民航旅客服務(wù)系統(tǒng)、機(jī)場(chǎng)立崗系統(tǒng)、機(jī)場(chǎng)行李處理系統(tǒng),這個(gè)都叫成大型復(fù)雜系統(tǒng)。全中國(guó)所有的航空公司都是我們公司的客戶,但是他們公司總部、分部,分布在全國(guó),如果只是總部研發(fā)我們根本支持不了,我們?cè)谌珖?guó)各地都有分子公司,并且也有一定的研發(fā)團(tuán)隊(duì),尤其是做那種航空公司的個(gè)性化版本,所以我們這些系統(tǒng)基本上都是分布式開(kāi)發(fā),都是聯(lián)合開(kāi)發(fā),主要是讓重慶、廣州、上海這種大的研發(fā)中心跟著總部一塊做這種聯(lián)合開(kāi)發(fā)的,所以我們把這種都叫復(fù)雜系統(tǒng)團(tuán)隊(duì)開(kāi)發(fā)。
這個(gè)大型復(fù)雜系統(tǒng)大家可能都有一些共識(shí),最大的問(wèn)題就是,因?yàn)槿藛T比較多,而且大家都不在一起工作,大家會(huì)質(zhì)疑敏捷:不是說(shuō)一定要面對(duì)面的溝通嗎?這是宣言的一部分,包括我們的價(jià)值觀。但是我們實(shí)際情況,尤其是傳統(tǒng)大型IT公司是根本做不到的,但是我們?cè)趺崔k呢?但是這些問(wèn)題還是得解決,因?yàn)橛辛司嚯x,尤其現(xiàn)在,之前我們都遇到過(guò),這種溝通不便,協(xié)調(diào)起來(lái)特別特別的困難。還有最主要的一點(diǎn),就是第四點(diǎn),技術(shù)實(shí)踐。因?yàn)楫?dāng)時(shí)我們各個(gè)分子公司的研發(fā)團(tuán)隊(duì)大家的技術(shù)標(biāo)準(zhǔn)、質(zhì)量標(biāo)準(zhǔn)都不太一樣,還有包括環(huán)境配置。一做集成的時(shí)候發(fā)現(xiàn)糟了,全都是Bug,甚至跑不通,這樣導(dǎo)致了多次的多輪返工,這些都是一些問(wèn)題,所以我們覺(jué)得敏捷有可能能夠解決這些問(wèn)題。
所以我們首先有一個(gè)大型復(fù)雜系統(tǒng)的團(tuán)隊(duì),下面有一個(gè)管理框架,在座的大型企業(yè)可能都是這么做的,有四個(gè)層次,協(xié)作、管理、決策、支撐,我們公司的特點(diǎn)主要集中在這里。還有我們所有的團(tuán)隊(duì)里邊會(huì)有一個(gè)主責(zé)團(tuán)隊(duì)和其他協(xié)同團(tuán)隊(duì),主責(zé)團(tuán)隊(duì)一定是負(fù)責(zé)整個(gè)項(xiàng)目的產(chǎn)品規(guī)劃、架構(gòu)設(shè)計(jì),到最后包括整個(gè)系統(tǒng)的集成測(cè)試、UAT測(cè)試、投產(chǎn)上線,都是由主責(zé)團(tuán)隊(duì)小組全權(quán)負(fù)責(zé)的。其他的無(wú)論你分布在哪里,OK,沒(méi)有關(guān)系,你還是各自的可以實(shí)施敏捷,我們是多團(tuán)隊(duì)同步迭代的方式去做。還有一個(gè)特點(diǎn),在支持這塊,我們?yōu)榱私鉀Q跨團(tuán)隊(duì)、跨地域、溝通協(xié)作的困難,或者技術(shù)標(biāo)準(zhǔn)、質(zhì)量標(biāo)準(zhǔn)不同的問(wèn)題,我們要求統(tǒng)一平臺(tái)、統(tǒng)一制度、統(tǒng)一度量,避免剛才說(shuō)的問(wèn)題。
對(duì)于多團(tuán)隊(duì)同步開(kāi)發(fā)的問(wèn)題,仍然是每個(gè)小團(tuán)隊(duì)采用的是這種方式,2—4周一個(gè)迭代,在這個(gè)迭代過(guò)程中你的開(kāi)發(fā)測(cè)試,按照你自己的規(guī)劃進(jìn)行就可以了,我們有可能跟其他的公司或者互聯(lián)網(wǎng)公司不太相同的,就是我們需求這塊,我們需求分析是沒(méi)有放在迭代里頭的,因?yàn)槲覀儎偛乓舱f(shuō)了,我們是協(xié)同開(kāi)發(fā)的,這個(gè)需求必須是經(jīng)過(guò)主責(zé)團(tuán)隊(duì)統(tǒng)一規(guī)劃出來(lái)的,我們叫PRD文檔,就是產(chǎn)品需求文檔,我們有KC的概念,這個(gè)KC就是說(shuō),對(duì)于這個(gè)系統(tǒng)來(lái)說(shuō)是大的功能點(diǎn),這個(gè)規(guī)劃必須主責(zé)團(tuán)隊(duì)來(lái)去做,把他會(huì)分解成不同的UC,就是一個(gè)個(gè)需求,這個(gè)是在分發(fā)給各個(gè)分支的協(xié)作團(tuán)隊(duì),由他們做需求分析。這個(gè)需求分析完了以后,他是需要反饋給我們整個(gè)主責(zé)團(tuán)隊(duì)他們要去做評(píng)審。這個(gè)過(guò)程有可能稍微長(zhǎng)一點(diǎn),不太適用放在迭代里面,所以我們把這塊是分出去的。
具體迭代主要是設(shè)計(jì)測(cè)試開(kāi)發(fā),大家可能會(huì)說(shuō)你這樣不是有點(diǎn)像瀑布型的,大家就在等。其實(shí)不是,跟以前最大的區(qū)別就是,我們的這個(gè)需求不是說(shuō)把所有的需求都分析完了以后才去做,而是說(shuō)按照我們小的產(chǎn)品版本的規(guī)劃,拿出來(lái)一部分,可以開(kāi)始做了,這部分需求分析完以后馬上就進(jìn)入迭代開(kāi)發(fā)的過(guò)程。同時(shí),在開(kāi)發(fā)團(tuán)隊(duì)做迭代開(kāi)發(fā)的時(shí)候,我們這邊同步的產(chǎn)品經(jīng)理再去做剩余的需求。
還有一點(diǎn),各個(gè)團(tuán)隊(duì)雖然是各自的迭代,但是都必須符合我們整個(gè)的版本規(guī)劃,所以我們叫同步迭代開(kāi)發(fā),因?yàn)樽罱K它的交付,我們這塊的交付有可能也是跟別的敏捷不太一樣,直接交付給客戶,我們不是,我們這個(gè)迭代出來(lái)的版本是一個(gè)可集成測(cè)試版本,不是直接交給客戶的,因?yàn)檫@個(gè)也是跟我們系統(tǒng)的安全性包括集成性的特點(diǎn)有關(guān)系的,這也是一個(gè)比較大的差別,就是我們可集成的這種測(cè)試版本以后,由主責(zé)團(tuán)隊(duì)進(jìn)行版本測(cè)試,最后再給客戶交付。這就是敏捷的這一部分。
下面說(shuō)一下工具的部分。其實(shí)我們認(rèn)為,敏捷最佳實(shí)踐我們運(yùn)用比較好、也認(rèn)為最有效的就是持續(xù)集成,因?yàn)橛绕涫嵌鄨F(tuán)隊(duì)開(kāi)發(fā)的時(shí)候,這個(gè)持續(xù)集成是非常非常關(guān)鍵的。我們的持續(xù)集成平臺(tái)的關(guān)鍵功能包括這些,我們會(huì)有統(tǒng)一的原代碼配置庫(kù),對(duì)于一個(gè)大的復(fù)雜系統(tǒng)項(xiàng)目,所有的團(tuán)隊(duì)它的代碼配置庫(kù)必須是一個(gè),就是目前都是在我們總部研發(fā)的,這樣的話可以隨時(shí)獲取這種系統(tǒng)里要集成的最新代碼。第二,我們要求必須每個(gè)團(tuán)隊(duì)每天提交代碼,并且能夠自動(dòng)構(gòu)建,這個(gè)代碼必須可以自動(dòng)編譯,而且可以編譯通過(guò)的。第三,需要實(shí)現(xiàn)功能單元測(cè)試,必須自動(dòng)化,因?yàn)樗枰?。我們?cè)诿看翁峤淮a以后,根據(jù)我們平臺(tái)的設(shè)置會(huì)自動(dòng)的去啟發(fā)這個(gè)靜態(tài)代碼掃描,包括自動(dòng)執(zhí)行單元測(cè)試,最后才是做自動(dòng)的構(gòu)建。
最后,問(wèn)題應(yīng)該是自動(dòng)反饋的,不是靠人去看有問(wèn)題,而是在持續(xù)集成過(guò)程中隨時(shí)發(fā)現(xiàn)問(wèn)題、隨時(shí)就要反饋給相關(guān)的提交人員,讓他們及時(shí)處理,這樣才能保證每天提交的代碼放在服務(wù)器上都是一個(gè)可編譯的版本。這個(gè)就是我們持續(xù)交付的平臺(tái)建設(shè),主要包括六大功能模塊,第一個(gè)是任務(wù)分解,我們用的是這個(gè)工具,尤其是對(duì)于異地開(kāi)發(fā)的分布式模式,大家把任務(wù)都放在這個(gè)平臺(tái)上,任務(wù)進(jìn)展、任務(wù)工作情況都是透明的,大家都可以看。還有電子看板的跟蹤,以前我們都是大白板去貼小紙條,那個(gè)也是不會(huì)的,在開(kāi)會(huì)的時(shí)候面對(duì)面溝通效果比較好,最大的問(wèn)題是不便于度量,因?yàn)槎际且粋€(gè)一個(gè)小紙條,最后還是得拿下來(lái)一個(gè)一個(gè)去更新數(shù)據(jù),比較麻煩,而且比較慢,所以我們最后應(yīng)用電子看板進(jìn)行跟蹤。
原代碼指的主要是靜態(tài)代碼,我們開(kāi)發(fā)人員每次提交以后必須得先經(jīng)過(guò)靜態(tài)代碼掃描,再做單元測(cè)試,然后才可以去做自動(dòng)的構(gòu)建。
我們要求代碼的質(zhì)量必須是統(tǒng)一的標(biāo)準(zhǔn),尤其是對(duì)于分團(tuán)隊(duì)開(kāi)發(fā),所以我們會(huì)有代碼傳送,因?yàn)槭钱惖?,以前無(wú)論是QQ開(kāi)視頻的效果都不是特別好,所以我們引用了FishEye這種工具,大家把代碼拿下去之后直接評(píng)審,你的意見(jiàn)及時(shí)反饋,開(kāi)發(fā)人員看到以后也及時(shí)修改,一整套是我們基于交付平臺(tái)的。
最后說(shuō)一下敏捷對(duì)我們的幫助是什么,自從實(shí)施敏捷以后,大概5年多的時(shí)間,因?yàn)槲矣X(jué)得我們基本上不再像以前做項(xiàng)目反饋比較慢,遇到問(wèn)題解決起來(lái)也比較麻煩,現(xiàn)在基本上可以不空談了,大家的質(zhì)量意識(shí)、工作效率都有很大的提升,尤其我們還實(shí)施了最佳的軟件工程的方法,都對(duì)我們團(tuán)隊(duì)的無(wú)論是個(gè)人能力、團(tuán)隊(duì)能力有很大的提升。
剛才前面提到了大規(guī)模項(xiàng)目有5個(gè)問(wèn)題,我們基本上有4個(gè)問(wèn)題得到了一定程度的解決,我們通過(guò)敏捷實(shí)施以后統(tǒng)一版本規(guī)劃這樣使得定制版本的維護(hù)就會(huì)相對(duì)容易一些。第二,統(tǒng)一的管理平臺(tái),我們一定程度上減少了異地或者是跨部門這種溝通的困難。第三,我們有統(tǒng)一的質(zhì)量要求、技術(shù)要求,這樣避免了一些后期才會(huì)發(fā)現(xiàn)的因?yàn)榕渲貌煌蛘叽a質(zhì)量很差而引起的一些返工。因?yàn)槲覀儗?shí)施敏捷以后基本上可以做到持續(xù)的交付,避免了我們以前航空公司的客戶老是抱怨說(shuō),你們這個(gè)航信開(kāi)發(fā)太慢,還不如找外包呢,現(xiàn)在基本上滿意度已經(jīng)提高了很多。
前面有可能沒(méi)有感覺(jué),這是一些數(shù)據(jù)可以說(shuō)一下。從產(chǎn)品質(zhì)量來(lái)說(shuō),我們這個(gè)產(chǎn)品比較寬泛,不是說(shuō)最后交付的產(chǎn)品,指工作產(chǎn)品。從缺陷密度、故障率、缺陷泄漏率我們連續(xù)3年,因?yàn)槲覀儗?shí)施敏捷以后就開(kāi)始度量,從2013年開(kāi)始度量,以后連續(xù)3年我們都是在持續(xù)降低的。
靜態(tài)代碼質(zhì)量,我們也是在2013年剛剛引入嗩吶這種掃描工具,當(dāng)時(shí)其實(shí)我們的編碼規(guī)則基本上引用的就是Google、微軟的規(guī)則。當(dāng)時(shí)一掃嚇了一跳,我們大多數(shù)項(xiàng)目都在D級(jí)和E級(jí),差別差,因?yàn)橐还卜譃?級(jí)最低就是E級(jí),我們大多數(shù)項(xiàng)目在D級(jí)和E級(jí),經(jīng)過(guò)3年以后我們現(xiàn)在基本上90%以上的項(xiàng)目都在C級(jí)以上了,有大概20%的項(xiàng)目都已經(jīng)能保持在A級(jí)。
開(kāi)發(fā)過(guò)程,我們?cè)趯?shí)施敏捷之前基本上沒(méi)有自動(dòng)化測(cè)試,這幾年不斷的建設(shè),當(dāng)然這都是有成本的,大家可以看,我們?cè)鲩L(zhǎng)到了24%,雖然不多,但其實(shí)對(duì)于我們來(lái)說(shuō)已經(jīng)是一個(gè)很大的進(jìn)步了。
還有單元測(cè)試分支覆蓋率,當(dāng)時(shí)也是我們的開(kāi)發(fā)團(tuán)隊(duì)在代碼質(zhì)量意識(shí)上還是挺弱的,后來(lái)實(shí)施敏捷以后我們從0增長(zhǎng)到了大概30%,這是一個(gè)平均數(shù),我們有的團(tuán)隊(duì)做的特別好的都已經(jīng)達(dá)到了80%,還有55%的團(tuán)隊(duì)已經(jīng)真的是能夠?qū)崿F(xiàn)每日提交代碼并自動(dòng)構(gòu)建了。
對(duì)于交付效率,我現(xiàn)在從實(shí)施敏捷已經(jīng)開(kāi)始,當(dāng)然這個(gè)數(shù)據(jù)已經(jīng)是去年的了,我們可以實(shí)現(xiàn)每月去給客戶演示,達(dá)到平均1.33次了,這個(gè)在以前都是不可想象得。并且每個(gè)系統(tǒng)每月都能投產(chǎn)一次新版本了,大家可能覺(jué)得你這個(gè)敏捷每個(gè)月才投產(chǎn)一次是不是慢一點(diǎn),因?yàn)槲覀児具€是跟那個(gè)不太一樣,因?yàn)槲覀兊陌踩砸筮€是非常高的,因?yàn)槊窈剿械男畔⑾到y(tǒng),大家的訂票、離港都是公司來(lái)維護(hù),不敢出一點(diǎn)錯(cuò),對(duì)于我們來(lái)說(shuō)已經(jīng)是很大的進(jìn)步了。
最后說(shuō)一點(diǎn)體會(huì),其實(shí)主要還是三個(gè),如果實(shí)施敏捷的話,大家一定要說(shuō)你的目標(biāo)是什么,目標(biāo)千萬(wàn)不是你要實(shí)施敏捷,而是說(shuō)你到底要解決什么問(wèn)題,是不是能夠通過(guò)實(shí)施敏捷來(lái)解決,所以這個(gè)目標(biāo)的設(shè)定是非常重要的。第二,實(shí)施過(guò)程當(dāng)中,經(jīng)過(guò)5年多,我們后來(lái)發(fā)現(xiàn),其實(shí)我們?cè)?014年的時(shí)候,其實(shí)花了很大的成本去建設(shè)工具平臺(tái),是因?yàn)榘l(fā)現(xiàn)到了2014年我們?cè)趯?shí)施過(guò)程中遇到了瓶頸,大家說(shuō)我都做了,我都采用了什么,也都怎么樣了,但是好像這個(gè)效率沒(méi)有特別大的提升,所以我們當(dāng)時(shí)覺(jué)得,尤其是對(duì)于那種異地來(lái)說(shuō),你沒(méi)辦法解決這種溝通問(wèn)題,所以我們覺(jué)得敏捷實(shí)施有效性,工具和流程的建設(shè)還是非常重要的,就是你要繼續(xù)想往深里做的話。第三,這個(gè)有可能不是說(shuō)工具流程能夠解決的,就是團(tuán)隊(duì),每一個(gè)敏捷的開(kāi)發(fā)團(tuán)隊(duì)的管理者是非常重要的,他必須有自己敏捷的理念才能夠真正的把這個(gè)團(tuán)隊(duì)帶好,真正的去實(shí)施敏捷。
我們舉一個(gè)例子就是,我們有一個(gè)團(tuán)隊(duì),剛才我提到我們單元測(cè)試覆蓋率達(dá)到80%,就是因?yàn)槲覀兊腟M非常棒,他是一門心思覺(jué)得敏捷非常好,他會(huì)要把他所實(shí)施的敏捷實(shí)踐真正的運(yùn)用起來(lái),目標(biāo)就是要提升他們代碼的質(zhì)量,還有團(tuán)隊(duì)的使用效率。但是有的團(tuán)隊(duì),到目前為止我們還有的團(tuán)隊(duì)處在一級(jí)的水平,就是我們自己的能力成熟度,那就跟他的SM還是有很大的關(guān)系的。
最后的變化,每個(gè)企業(yè)特點(diǎn)不同、業(yè)務(wù)特點(diǎn)不同,你的文化也是不一樣的,我覺(jué)得敏捷實(shí)施還是要因地制宜,我們剛開(kāi)始就是相當(dāng)于照搬惠普那一套在2013年的時(shí)候也是遇到了很多問(wèn)題,最后我們會(huì)去做一些優(yōu)化、改良,然后去適應(yīng)我們自己的特點(diǎn),最后才比較能夠順利的實(shí)施。
我今天的分享就到這里。謝謝大家!