敏捷推廣過(guò)程中,記錄一些同學(xué)的問(wèn)題和思考,持續(xù)更新。
Q:為什么要守破離?
A:敏捷一開(kāi)始推行的時(shí)候,很多團(tuán)隊(duì)并不是大家都能知道為什么要這么做。因?yàn)楹芏酁槭裁词且?jīng)過(guò)大量的實(shí)踐才能回答出來(lái)的,為了能讓團(tuán)隊(duì)能迅速體驗(yàn)到敏捷的好處,這時(shí)候就需要守——先按照教練的方法、書(shū)上的方法去做,直到團(tuán)隊(duì)悟出了為什么,知道了為什么,團(tuán)隊(duì)就可以根據(jù)自己的情況調(diào)整實(shí)踐的做法,這就是破的過(guò)程了。最后根據(jù)團(tuán)隊(duì)實(shí)際情況,確定適合自己團(tuán)隊(duì)項(xiàng)目的敏捷實(shí)踐方法,通過(guò)回顧不斷改進(jìn),這時(shí)候就是離的時(shí)候了。
Q:估算不準(zhǔn)確的話(huà)為什么還要估算呢?
A:首先之所以是估算,就是因?yàn)楣啦粶?zhǔn);其次估算其實(shí)是一個(gè)重在過(guò)程的實(shí)踐,除了能給我們一個(gè)大概的工作量的結(jié)果,更重要的是能揭示大家的理解和所擁有知識(shí)的不一致,因而盡早的打破這種鴻溝;可以把團(tuán)隊(duì)成員心里的假想暴露出來(lái),通過(guò)暴露假想,團(tuán)隊(duì)能發(fā)掘更多的細(xì)節(jié)和問(wèn)題,這才是估算的真正價(jià)值。
Q:怎么區(qū)分做正確的事和正確的做事?
A:很多團(tuán)隊(duì)經(jīng)常會(huì)有這樣一個(gè)情況,大家在激烈的討論一個(gè)技術(shù)問(wèn)題,具體如何實(shí)現(xiàn),但是他們卻不知道背后用戶(hù)的業(yè)務(wù)邏輯,他們到底在試圖解決用戶(hù)的什么問(wèn)題。這些技術(shù)問(wèn)題,在用戶(hù)看來(lái)只是方案,也就是如何正確的做事,而團(tuán)隊(duì)實(shí)際要解決的是用戶(hù)的問(wèn)題,這個(gè)才是團(tuán)隊(duì)的初心,是團(tuán)隊(duì)的價(jià)值所在,也就是要做的正確的事。問(wèn)題和解決方案之間是一對(duì)多的關(guān)系,因?yàn)橛杏脩?hù)的問(wèn)題,所以我們有軟件的解決方案。解決方案往往面臨的事技術(shù)問(wèn)題,往往是我們的問(wèn)題,而不是用戶(hù)的問(wèn)題,所以要時(shí)刻記得用戶(hù)的問(wèn)題是什么,不要沉浸于技術(shù)問(wèn)題,而忘記我們究竟要給用戶(hù)帶來(lái)什么價(jià)值,解決什么問(wèn)題。
Q:Scrum里有個(gè)TEAM的角色,TEAM里面是否還需要分崗位?
A:敏捷里的TEAM是跨職能團(tuán)隊(duì),就是為了區(qū)別過(guò)去的職能團(tuán)隊(duì),每個(gè)人只能做職能范圍的事情。在跨職能團(tuán)隊(duì)中,每個(gè)人都可以做團(tuán)隊(duì)需要他做的任何事,每個(gè)人都應(yīng)該有架構(gòu)師的視角,每個(gè)人都應(yīng)該有QA的視角,所以scrum里一般會(huì)把這些職責(zé)工作當(dāng)做帽子,不會(huì)給團(tuán)隊(duì)成員打上固定的標(biāo)簽,你做什么就什么(don't label yourself,you are what you do)。
Q:怎么判斷我們團(tuán)隊(duì)是否在做敏捷了呢?是否使用了scrum,lean,XP的各種實(shí)踐就可以了呢?
A:敏捷宣言的第一句話(huà):我們一直在實(shí)踐中探尋更好的軟件開(kāi)發(fā)方法,身體力行地同時(shí)也幫助他人。是否敏捷,更加看重的是我們是否不斷在尋找適合我們團(tuán)隊(duì)效率、產(chǎn)品質(zhì)量、產(chǎn)品功能的思維和方法。各種實(shí)踐只是幫助我們更好的達(dá)到這個(gè)目的,如果團(tuán)隊(duì)使用的方法不在常見(jiàn)的實(shí)踐范圍,但是總是不斷發(fā)現(xiàn)新問(wèn)題,并不斷改進(jìn),那么就是在敏捷的道路上了,不用糾結(jié)各種具體的實(shí)踐。但是這些總結(jié)的實(shí)踐,之所以會(huì)被認(rèn)可和推廣也都是被證明在大多數(shù)情況下能更好的幫助團(tuán)隊(duì)敏捷化的,所以這些實(shí)踐都是可以借鑒的。
Q:到底什么樣的產(chǎn)品、項(xiàng)目、企業(yè)適合使用敏捷?什么樣的適合使用傳統(tǒng)開(kāi)發(fā)方式呢?
A:凡是產(chǎn)品需求前期非常明確,并且業(yè)務(wù)類(lèi)型基本沒(méi)有變化的項(xiàng)目和產(chǎn)品,都適合傳統(tǒng)開(kāi)發(fā)方式,這種情況多見(jiàn)在軍工,金融,航天、制造業(yè)中,這種失敗成本高,其核心價(jià)值觀是利用需求、計(jì)劃的可追溯性、一致性,來(lái)達(dá)成對(duì)生命攸關(guān)和潛在重大損失項(xiàng)目的保障。凡是前期需求不明確,在開(kāi)發(fā)過(guò)程中需要不斷做演示,不斷得到用戶(hù)反饋,功能需求不斷變化的情況,允許團(tuán)隊(duì)通過(guò)不斷試錯(cuò),迅速響應(yīng)需求變化的場(chǎng)景,都適合更多的使用敏捷思維的工具和模型。但是無(wú)論哪種模型,溝通、互助、主動(dòng)、責(zé)任、謙虛等工作態(tài)度在任何情況都是適用團(tuán)隊(duì)的。
Q:敏捷如何幫助我們控制成本?
A:并不是所有的項(xiàng)目都適合用敏捷,關(guān)鍵看我們最后想要達(dá)成的目標(biāo)是什么?如果目標(biāo)是看到某個(gè)產(chǎn)品在互聯(lián)網(wǎng)用戶(hù)中的增長(zhǎng)率、產(chǎn)品反饋速度、那么敏捷可以非常適合。但是如果是成本控制,敏捷無(wú)法很好的準(zhǔn)確估算,這個(gè)不是敏捷的強(qiáng)項(xiàng)。但是敏捷中的一些實(shí)踐仍然可以幫助我們更好的交付,比如頻繁的溝通和站立會(huì)議,看板等,這些和開(kāi)發(fā)模式?jīng)]有關(guān)系,這些依然能幫忙我們提升效率以達(dá)到成本控制的效果;
Q:QA和QC的區(qū)別?
A:QC是測(cè)試找到BUG,QA是預(yù)防產(chǎn)生BUG。QA不應(yīng)該在用戶(hù)故事生命周期的后半段才介入,而應(yīng)該在一開(kāi)始就介入,那么也就是我們常說(shuō)的測(cè)試前移;
Q:團(tuán)隊(duì)中很多老資格程序員,每天千篇一律的coding,難免枯燥,如何讓開(kāi)發(fā)保持熱情呢?
A:很多團(tuán)隊(duì)經(jīng)常趕進(jìn)度,枯燥的編碼生活,要保持開(kāi)發(fā)熱情最重要的是讓他們有成就感。在平日工作中能不斷學(xué)習(xí),每天都能看到自己的進(jìn)步,周?chē)聦?duì)他的進(jìn)步能迅速給出反饋,讓大家在這個(gè)團(tuán)隊(duì)中能有更多的成就感這是關(guān)鍵。