無(wú)論是在軟件或者治理 行業(yè)敏捷開(kāi)發(fā)已成為眾多高效開(kāi)發(fā)團(tuán)隊(duì)的制勝之道。敏捷開(kāi)發(fā)可以說(shuō)是在開(kāi)發(fā)中面臨迅速變化需求中的一種快速開(kāi)發(fā)能力。當(dāng)然,敏捷不僅是簡(jiǎn)單的快速,而是在開(kāi)發(fā)過(guò)程中短周期的不斷改進(jìn)、提高和調(diào)整;當(dāng)然也不僅僅是一個(gè)版本只做幾個(gè)功能,而主要的是突出重點(diǎn)。
在國(guó)外軟件企業(yè)中,幾乎將近半企業(yè)是已采納敏捷方法進(jìn)行開(kāi)發(fā),隨著近年來(lái)受軟件外包和外企的帶動(dòng),敏捷開(kāi)發(fā)在中國(guó)也出現(xiàn)了日漸普及的態(tài)勢(shì),如騰訊,IBM等等內(nèi)部幾乎所有的開(kāi)發(fā)團(tuán)隊(duì)都在實(shí)施敏捷方法。敏捷開(kāi)發(fā)的流行絕非偶然,因此,51CTO記者采訪了AdMaster(精碩科技)首席布道師程顯峰,講解了敏捷開(kāi)發(fā)在團(tuán)隊(duì)中的實(shí)踐以及進(jìn)展現(xiàn)狀。
以下是相關(guān)的采訪實(shí)錄:
敏捷在項(xiàng)目中的實(shí)踐
記者:有些人認(rèn)為敏捷開(kāi)發(fā)并不適用于水平一般的程序員或團(tuán)隊(duì),您是怎么認(rèn)為的?
程顯峰:至于敏捷開(kāi)發(fā)是不是用這種程序團(tuán)隊(duì),特別適合訓(xùn)練有素的團(tuán)隊(duì),反過(guò)來(lái)說(shuō),如果不是一個(gè)訓(xùn)練有素的團(tuán)隊(duì),實(shí)施傳統(tǒng)軟件工程也會(huì)失敗,所以我覺(jué)得基本的要求是跟原來(lái)的一些要求基本一致的,包括溝通能力、協(xié)調(diào)能力,對(duì)于項(xiàng)目變動(dòng)的操縱 能力都是一樣的,包括傳統(tǒng)軟件開(kāi)發(fā)當(dāng)中講的項(xiàng)目可控,整個(gè)項(xiàng)目可復(fù)制,同樣的資源配比還可以復(fù)制這個(gè)項(xiàng)目,如果原來(lái)的項(xiàng)目這些做得比較好的話實(shí)施敏捷項(xiàng)目就會(huì)容易一些。
記者:很多人為了編寫(xiě)易變更的代碼,在采納敏捷時(shí),拋棄許多習(xí)慣用法,由你的經(jīng)驗(yàn)出發(fā),如何去看待這個(gè)問(wèn)題?
程顯峰:從我在實(shí)施的過(guò)程中第一點(diǎn)需要強(qiáng)調(diào)的就是大部分跟傳統(tǒng)的軟件工程還是一樣的,現(xiàn)在異化的部分過(guò)于被強(qiáng)調(diào)了,搞得大家以為是完全新的、不一樣的東西,傳統(tǒng)軟件包括需求治理 、進(jìn)入操縱 、質(zhì)量治理 、測(cè)試體系,這些東西在敏捷里也都要體現(xiàn)、都要實(shí)施,而且要求可能還會(huì)更高,并不是把一些傳統(tǒng)的東西拋棄掉了,既沒(méi)有進(jìn)入治理 又沒(méi)有版本操縱 ,幾個(gè)人一商量就定了敏捷,這是完全的一種誤解,而且還是要好的工程基礎(chǔ)才能實(shí)施。
記者:所以傳統(tǒng)的方法對(duì)于程序員的要求還是比較高的吧?敏捷這樣的功能經(jīng)過(guò)修改之后就可以推出一個(gè)小的版本?
程顯峰:并不是說(shuō)推出小版本就要降低難度,這是沒(méi)有因果關(guān)系的,小的版本即使推送上去,如何保證這個(gè)小的版本是對(duì)的?你也需要大版本的方法,比如軟件測(cè)試、進(jìn)入操縱 、需求治理 ,這些東西都得有,你采納操縱 好它,雖然你推得比較快,看上去可能是一個(gè)一個(gè)的,如果你要是推的沒(méi)有章法的話一樣也是亂套的,不是你想要的東西,也會(huì)造成大量的浪費(fèi),我是這么覺(jué)得的。對(duì)于一個(gè)失敗的項(xiàng)目就要說(shuō)出失敗的原因,這才是解決失敗項(xiàng)目的辦法,敏捷的方法不是,這個(gè)邏輯就是有問(wèn)題的,我覺(jué)得這個(gè)沒(méi)什么好說(shuō)的。
記者:對(duì)于一個(gè)失敗的軟件項(xiàng)目來(lái)說(shuō),您認(rèn)為敏捷方法是它的救星嗎?
程顯峰:其實(shí)我覺(jué)得敏捷的方法不是任何失敗項(xiàng)目的救星,這是肯定的。至于失敗這個(gè)事情,看上去可能是分工的原因,深層次可能是不交流、不溝通的原因。敏捷比較注重強(qiáng)調(diào)溝通互動(dòng)這些方面,它是有強(qiáng)調(diào)這些東西,如果你的問(wèn)題恰巧是由于不溝通導(dǎo)致的,采納了敏捷的方法可能會(huì)有極大的改善,但也非常取決于實(shí)施的人和分析的效果。好多人說(shuō)敏捷就是一個(gè)筐,什么東西都可以往里面扔,實(shí)際上也確實(shí)有點(diǎn)這個(gè)樣子。
我覺(jué)得敏捷的方法更多的是注重發(fā)現(xiàn)問(wèn)題的框架,就是能讓你更快地發(fā)現(xiàn)問(wèn)題、暴露問(wèn)題。至于怎么解決問(wèn)題,原來(lái)能解決的就能解決,要是原來(lái)解決不掉,誰(shuí)也幫不了你。如果原來(lái)你有溝通問(wèn)題,但是很長(zhǎng)時(shí)間才能暴露出來(lái),這個(gè)東西能讓你在短時(shí)間內(nèi)暴露出來(lái),那么就有助于解決這個(gè)問(wèn)題。很多人為了編寫(xiě)易變更代碼采納敏捷。
記者:想要做到敏捷開(kāi)發(fā),每個(gè)團(tuán)隊(duì)都要經(jīng)歷這樣一個(gè)轉(zhuǎn)型期,那么在轉(zhuǎn)型期還需要每個(gè)團(tuán)隊(duì)根據(jù)自身的不同,找出合理有效的解決方法。你們團(tuán)隊(duì)的是如何來(lái)解決的?
程顯峰:每個(gè)團(tuán)隊(duì)都要經(jīng)歷一個(gè)轉(zhuǎn)型期,我是傾向于比較和氣 地對(duì)團(tuán)隊(duì)進(jìn)行改進(jìn),實(shí)施的東西盡量不要讓團(tuán)隊(duì)有一個(gè)明顯的轉(zhuǎn)型期,比如版本操縱 ,原來(lái)的版本操縱 提交的力度、上線的流程就是這樣,我會(huì)給大家介紹一個(gè)新的系統(tǒng),但是并不會(huì)太影響大家的工作,適應(yīng)起來(lái)又很快,這樣的改進(jìn)效果是比較立竿見(jiàn)影的,而且影響又是很小的,我特別喜歡的改進(jìn)是這樣的,這種改進(jìn)不是間或一次才會(huì)用到的,我特別喜歡這種改進(jìn),就是你天天都會(huì)用到的,我特別喜歡那種天天都是這么調(diào),但是每天都能省一分鐘的。
大家可能都覺(jué)得敏捷特別奇妙 ,每天能省百分之二十的時(shí)間,現(xiàn)在我還沒(méi)發(fā)現(xiàn)這種現(xiàn)象,我不喜歡這種東西,如果不是特別想省百分之二十的時(shí)間的話就不會(huì)讓大家經(jīng)歷一個(gè)轉(zhuǎn)型期,比如你告訴大家一個(gè)技巧,每天能省兩分鐘,這種東西大家天天用的話實(shí)際積存 下來(lái)的效果才是比較明顯的,你要是教給大家一個(gè)方法,比如能省二十分鐘,實(shí)際上這種方法看上去是非常美麗,但它不是什么場(chǎng)景都能用得到,所以我就不太喜歡這樣的方法?,F(xiàn)在有一部分也不用敏捷,我也不太情愿 教那個(gè)部分,就是每天早上例會(huì)的時(shí)候站在那里說(shuō)一通。我也跟他們講過(guò),他們有的話可以,沒(méi)有也OK,有些東西我的要求就比較死,比如上線的流程、可控性,我在這個(gè)方面的要求就比較死,開(kāi)不開(kāi)會(huì)對(duì)于我的項(xiàng)目沒(méi)有什么影響,但是上線的流程就不一樣,我要往回退的話就要花成本。
對(duì)于小的團(tuán)隊(duì)來(lái)講真的是可有可無(wú)的,因?yàn)閳F(tuán)隊(duì)的人都坐在一起工作,未必需要一個(gè)站到板子上的形式?,F(xiàn)在有人把形式看得很重,本來(lái)例會(huì)是很簡(jiǎn)單的,五分鐘就開(kāi)完了,但是吵起來(lái)了,開(kāi)不完,因?yàn)橐话愣际情_(kāi)早會(huì),吵完以后心情就不好,所以效率就下來(lái)了,這也是很正常的,但是你不要想著美麗的東西,我對(duì)美麗的東西感覺(jué)都不有用 。
記者:會(huì)不會(huì)因?yàn)椴怀尺@個(gè)架把錯(cuò)誤帶到真正開(kāi)發(fā)的過(guò)程中?
程顯峰:會(huì),所以我們要讓在實(shí)際的工作當(dāng)中發(fā)揮,其實(shí)例會(huì)也不是吵架的會(huì),還有很多的會(huì)可以發(fā)現(xiàn)這個(gè)問(wèn)題,比如通過(guò)Review,可以有各種各樣的方法去發(fā)現(xiàn),不用拘泥于這種形式上的東西。其實(shí)最難改變的往往是那些小的習(xí)慣,比如他就情愿 用這個(gè)手指頭去敲鍵盤(pán),但是這可能會(huì)影響他的效率,他不情愿 改。這種習(xí)慣的話改的阻力反而比較小,你讓他去開(kāi)個(gè)例會(huì)他覺(jué)得耽誤時(shí)間,但是要讓他改這個(gè)的話他可能會(huì)改。你想他要敲多少?天天可能都要去敲,這種感覺(jué)可能是持續(xù)的。
記者:這種其實(shí)是屬于比較個(gè)性化的調(diào)整,每個(gè)人的使用習(xí)慣不一樣,有些人可能喜歡用這個(gè)手按著,有些人喜歡用那個(gè)手按著,你要主動(dòng)發(fā)現(xiàn)各個(gè)人在工作當(dāng)中需要調(diào)整的地方?
程顯峰:我一致認(rèn)為團(tuán)隊(duì)就是一個(gè)消滅 個(gè)性的過(guò)程,而且這一點(diǎn)我是非常講究的,包括編輯器的使用習(xí)慣和配色都有強(qiáng)烈要求,不像別的看上去那么自由,坐在哪里無(wú)所謂,但是你用電腦的方式必須是我規(guī)定好的。沒(méi)有一個(gè)共同基礎(chǔ)的團(tuán)隊(duì)根本就不叫有團(tuán)隊(duì),總有一些東西是有共同基礎(chǔ)的,而且一些高效的團(tuán)隊(duì)很可能所有的東西都是共同基礎(chǔ),就像特種兵出去打仗,一個(gè)手勢(shì)就得去殺人,你還能問(wèn)這個(gè)是什么意思?就像我們用別人的電腦,或者在團(tuán)隊(duì)當(dāng)中用其他人的電腦,那些配色習(xí)慣都是一樣的,我們溝通交流起來(lái)就會(huì)非常容易。
現(xiàn)在新人如果不配色,直接就卡掉,新人培訓(xùn)就不合格,所以必須要有配色,包括快捷鍵的使用,不能人家給你一套代碼你還慢吞吞的,這會(huì)非常影響別人的心情。因?yàn)橛行┖鲇茙熖焯於既ズ鲇聘鞣N敏捷方法,但又不注重工程實(shí)踐,不注重觀察細(xì)節(jié),所以就做不到。他們不會(huì)注重這種實(shí)踐,比如咱倆是木匠,我天天使完的刀子隨手一扔,天天你給我收拾,你也不情愿 ,雖然我是大牌,但是你也不情愿 ,這種工作才是能省很多時(shí)間的,你說(shuō)好我也說(shuō)好,大家都用一個(gè)工具箱,這樣才能省下很多時(shí)間。我就覺(jué)得能省時(shí)間的話,就是在任何層面上都是節(jié)約和幸免浪費(fèi)的表現(xiàn),我是這么覺(jué)得。