軟件流程的名稱太多,RUP,V Model, ISO9000,CMM等等不一而足,
SCRUM感言
。最近接觸了SCRUM,收獲良多,與諸位同仁分享。自從有人類社會活動以來,就形成了各種各樣的組織和制度,上到社會體制下到家庭環(huán)境,西方到東方,社會風(fēng)尚、工廠流程、等等,這些東西都具有一種共同的特點(diǎn):都是為了適應(yīng)一點(diǎn)的社會目的、解決一定的組織問題,而形成的。軟件的流程,也具有類似的特點(diǎn),只不過是適應(yīng)軟件規(guī);a(chǎn)而成的東西。我只所以這樣說,目的是希望大家不要把軟件流程這種東西神秘化,另外也不要把它當(dāng)成無所不能的 。所有為社會化活動定義或者自然形成的東西,一方面有其解決問題的一面,同時(shí)也有他的瑕疵。
軟件形成的初期,沒有任何所謂的process,天才工程師似乎可以把當(dāng)時(shí)的所有問題徹底搞定。隨著軟件規(guī);a(chǎn)以來,所有具體的軟件活動,比如設(shè)計(jì)、分析、項(xiàng)目管理等都有必要納入流程管理的環(huán)節(jié),從而達(dá)到可控并優(yōu)化的目的。軟件流程的先驅(qū)們從,工業(yè)生產(chǎn)、統(tǒng)計(jì)科學(xué)、心理學(xué)等等借鑒了多方面的有價(jià)值的東西,而形成了如今各種各樣的所謂的軟件開發(fā)流程。我在工作中也接觸到各種流程的思想和操作。有時(shí)候老板們總是希望流程來解決碰到的問題,可是有時(shí)候又形成了一個過于流程化的局面,為了完成一個小問題,卻要付出幾倍的流程的成本;有時(shí)候某一個流程過于僵化缺忽視了真正應(yīng)該重視的問題。軟件生產(chǎn)是一種智力活動,這又具有很大的不同,某些方面非常難以把握,太硬性的東西反而戳傷了員工的創(chuàng)造性。等等,我相信所有參與過軟件開發(fā)的工程師,可以列出更多的問題。如何解決種種問題,不同的軟件流程都提出了一套不同的方法。現(xiàn)在看這些,process, 我們不能說那一個更好,只能說那一個更適合你。如同找老婆,沒有最好,只有更適合自己的。
繞了這么一大堆,我只是想澄清一下對軟件流程方面的基本認(rèn)識。對與不對不同的人可能有不同的看法。下來我想聊聊SCRUM,我不想列舉SCRUM如何具體操作的步驟,網(wǎng)絡(luò)上有好多這方面的資料。諸位可以找相關(guān)的資料看看,我這里只想寫一些對SCRUM的感受,列一下我所理解的SCRUM具體的思想精髓。歡迎網(wǎng)友和我交流,也使我能有所提高。
軟件開發(fā)是一個復(fù)雜的群體智力活動
SCRUM把軟件開發(fā)看作,是一個解決復(fù)雜問題的群體的、智力勞動。這一點(diǎn)很重要,首先這把軟件開發(fā)與平常的工業(yè)化流水線生產(chǎn)區(qū)分開來,讓我們認(rèn)識到軟件開發(fā)的特殊性。你可以把軟件生產(chǎn)比作流水線生產(chǎn),可是軟件生產(chǎn)是一種特殊的群體智力活動。不認(rèn)清這一點(diǎn),就不能把軟件開發(fā)中人的因素放在首位。不是說,軟件工程師都培養(yǎng)成象流水線上的工人,你的企業(yè)就成功了,這恰恰是一個軟件企業(yè)行將沒落的一個不好的兆頭。軟件生產(chǎn)需要創(chuàng)造,需要思想活躍的人才。蘋果公司有了喬布斯就活了,還活得有聲有色,這就是人才的重要性。企業(yè)的CEO需要如此,同樣從事具體軟件創(chuàng)造的工程師也需要有創(chuàng)造性的環(huán)境。真真成功的企業(yè)100%都是有創(chuàng)造性產(chǎn)品的公司!SCRUM基于此,提出軟件開發(fā)團(tuán)隊(duì)需要時(shí)自我學(xué)習(xí),自組織的團(tuán)隊(duì),來到達(dá)充分利用各個員工智慧來解決復(fù)雜問題的目的。
為了充分利用團(tuán)隊(duì)成員的智慧,眾人拾材火焰高嗎。!SCRUM實(shí)施的過程中有如下的具體操作:
1)任務(wù)不是有SCRUM master 自作主張分發(fā)的,而是有團(tuán)隊(duì)成員主動申請。這就是task 的poll方式;
2)SCRUM master 不是老板,開會的時(shí)候不是聽取匯報(bào)的。而是幫助團(tuán)隊(duì)解決困難的,要保證團(tuán)隊(duì)成員到底徹底的溝通理解;
3)Inspection 要做到發(fā)揮團(tuán)隊(duì)其他成員的積極性,及早發(fā)現(xiàn)錯誤。當(dāng)然這一條也不是SCRUM 特有的。但是SCRUM 對此事重點(diǎn)強(qiáng)調(diào)的噢!!
4)要重視團(tuán)隊(duì)的自組織行為,團(tuán)隊(duì)為了解決一下問題,總是會找到一個最合適的方式來達(dá)到有效解決問題的目的,
管理資料
《SCRUM感言》(http://www.msguai.com)。SCRUM master 應(yīng)該鼓勵這樣的行為。有效的溝通是軟件成功的關(guān)鍵
溝通,溝通,溝通。國際問題,家庭問題,上下級問題等等都需要需要溝通。歸根結(jié)底是人際問題,人之所以為人,科學(xué)家說,因?yàn)槿擞姓Z言善于溝通?墒蔷唧w中許多問題,恰恰是缺乏溝通造成的。軟件開發(fā)過程也是一樣的道理,客戶需求沒法被所有人理解,變動沒有在個個關(guān)系人之間有效地傳達(dá)。項(xiàng)目存在的問題,沒有被領(lǐng)導(dǎo)和解決問題的負(fù)責(zé)人發(fā)現(xiàn),等等都是由于沒有溝通造成的。由于這些原因造成的損失往往是致命性的。!
需求方面所有的軟件開發(fā)過程都強(qiáng)調(diào),需求變更的管理以及能適應(yīng)需求不停變化的現(xiàn)實(shí)情況,可是我個人認(rèn)為SCRUM所定義的運(yùn)作方式做得徹底、做到比較好。表現(xiàn)在如下幾方面:
客戶的需求被Product Owner全面反映到TEAM中來
客戶看到的是一個可deliever的東西,基于此客戶可以有更現(xiàn)實(shí)的想法或者,更合理的變動
每個Sprint開始,需求的變動被及時(shí)地反饋給TEAM
需求的優(yōu)先級,滿足客戶利益的最大化
團(tuán)隊(duì)開發(fā)方面:
Daily SCRUM Meeting使團(tuán)隊(duì)的進(jìn)度得到同步
Daily SCRUM Meeting使問題及時(shí)地發(fā)現(xiàn)并盡快得到解決
不同Component之間的依賴,也能得到有效溝通。這是有效解決的前提
項(xiàng)目的困難進(jìn)度,能使客戶,領(lǐng)導(dǎo)及時(shí)得到
另外,團(tuán)隊(duì)的成果,客戶能及時(shí)地看見,客戶能夠通過Product Owner將需求及時(shí)反饋給團(tuán)隊(duì),這大大促進(jìn)了項(xiàng)目的成功,減少了項(xiàng)目的風(fēng)險(xiǎn)。
自我檢查及時(shí)調(diào)整是團(tuán)隊(duì)走向成功的保證
古人云“日三省乎己”,對人如此對一個組織也是這樣。返過頭來,看看我們的軟件開發(fā)。我看到過一些組織有下面一些問題,網(wǎng)友同志們或許有其他補(bǔ)充。
Process太過于費(fèi)時(shí),浪費(fèi)了大量的時(shí)間
以前曾經(jīng)就有這樣類似的教訓(xùn),現(xiàn)在還犯
xxx問題已經(jīng)拖了很長時(shí)間了,為什么還沒有解決
大家長時(shí)間地走一步看一步,沒有一個規(guī)劃。好象沒有人來解決
一件事情,反復(fù)地改,腦子里面長水了。不理解這些人怎么想的
。。。。。。
我相信大家或多或少碰到過類似的問題,有問題比有問題卻發(fā)現(xiàn)不了問題強(qiáng)得多了。如果有問題,及時(shí)地自我發(fā)現(xiàn),并能夠及時(shí)地調(diào)整,這是一個健康組織必有的一套體系。只有這樣一個組織,項(xiàng)目才能很好地適應(yīng)市場需要,很好地站穩(wěn)腳跟?墒,能做到這些,并做好并不是容易的事。 SCRUM有專門的定義來做到發(fā)現(xiàn)問題解決問題的目的:
Sprint結(jié)束時(shí)要審視自身。Retrospection meeting
發(fā)現(xiàn)問題要及時(shí)調(diào)整
Scrum Master 要對這些活動在Process上負(fù)起責(zé)任來
結(jié)語
SCRUM是從軟件管理的角度定義的一個Process,現(xiàn)在越來越得到軟件開發(fā)群體的認(rèn)可。本文只是一些個人的認(rèn)識和看法。軟件管理是一門“藝術(shù)”,SCRUM不可能涵蓋所有的問題。這就需要具體的執(zhí)行人scrummaster,要具體問題具體分析。希望本文能對大家理解SCRUM有益。歡迎交流,批評和指正。
作者: taosinker
出處:blog.csdn.net/taosinker
來自:http://blog.csdn.net/taosinker/archive/2008/01/26/2066902.aspx