過(guò)往往也是很難實(shí)踐的。
就我個(gè)人來(lái)說(shuō),我就不喜歡兩個(gè)人一起編程,我覺(jué)得每個(gè)人的思考其實(shí)很難同步的,每個(gè)人都需要靜下心來(lái)一個(gè)人思考問(wèn)題,思考后才適合與別人討論,如果思考過(guò)程也與別人在一起,很難想象這個(gè)思考能有好的效果。
我們?cè)?jīng)將兩位編碼新手放在一起,讓他們結(jié)對(duì)編程,嘗試了這個(gè)實(shí)踐,似乎有一點(diǎn)效果,但我們后期就沒(méi)有再推行過(guò)。
3)代碼共有:每個(gè)人寫(xiě)的代碼都是屬于全體的,每個(gè)人可以去改別人的代碼。
這里強(qiáng)調(diào)共享與進(jìn)步精神,歡迎互相研究代碼,歡迎寫(xiě)出更好的代碼,只要能通過(guò)測(cè)試就可以了!這個(gè)實(shí)踐是依賴于測(cè)試驅(qū)動(dòng)開(kāi)發(fā)以及自動(dòng)化測(cè)試這兩個(gè)實(shí)踐的,如果不能做到那兩個(gè)實(shí)踐,就不應(yīng)該隨便改動(dòng)別人的代碼。
4)強(qiáng)調(diào)編碼標(biāo)準(zhǔn)
對(duì)于這點(diǎn)大家應(yīng)該沒(méi)啥異議了,現(xiàn)在有不少開(kāi)發(fā)工具支持編碼標(biāo)準(zhǔn)檢查呢!
項(xiàng)目管理方面的最佳實(shí)踐:
1.持續(xù)集成
持續(xù)集成與微軟的“每日構(gòu)建”是一樣道理的,強(qiáng)調(diào)我們的軟件要隨時(shí)處在可以編譯通過(guò)可以發(fā)布的狀態(tài),持續(xù)集成讓軟件的問(wèn)題提早暴露更快解決。持續(xù)集成需要一定的工具和管理措施支持,我有這樣的一些實(shí)踐建議:
1)代碼的簽入與簽出要定下嚴(yán)格的規(guī)矩,如:每天工作前先獲取最新代碼,每次簽入前必須先保證編譯通過(guò)。
2)如果能做到測(cè)試驅(qū)動(dòng)測(cè)試和自動(dòng)化測(cè)試,那么還應(yīng)該規(guī)定必須通過(guò)所有測(cè)試才能簽入代碼。
3)一般來(lái)說(shuō)我們沒(méi)有條件做到每日構(gòu)建,也沒(méi)有這么多工具支持,那么至少一周要編譯一次內(nèi)部版本,檢查軟件各部分的協(xié)調(diào)情況。
2.站立會(huì)議
每天早上項(xiàng)目組全體開(kāi)5-10分鐘會(huì)議,所有人站立講話,簡(jiǎn)單講述昨天工作概要、今天計(jì)劃、需要?jiǎng)e人協(xié)調(diào)或解決的問(wèn)題。站立的目的就是讓大家言簡(jiǎn)意賅,提高會(huì)議效率。每天開(kāi)這個(gè)會(huì),是保證大家有足夠的及時(shí)的口頭溝通。極限編程認(rèn)為,口頭溝通才是最有效直接的溝通。
在我們的項(xiàng)目中,我也會(huì)推行站立會(huì)議,但不一定是早上,當(dāng)然也不一定非要站立,但是會(huì)議一定必須是高效的!口頭溝通很有效,但必要的記錄還是應(yīng)該有的。一些公司推行站立會(huì)議,往往是沒(méi)有會(huì)議記錄的。而我的做法是會(huì)議中如果有決定、有代辦工作,我會(huì)要求記錄下來(lái)??陬^溝通算然來(lái)得直接,但容易理解錯(cuò)、容易忘記等缺點(diǎn)是避免不了的,應(yīng)該輔以適當(dāng)?shù)臅?shū)面記錄。
3.小版本發(fā)布
分小版本多次發(fā)布,最符合客戶的利益,客戶可以先使用部分功能,可以在此基礎(chǔ)上更好地思考后續(xù)應(yīng)該做什么。
小版本到底應(yīng)該有多小呢?國(guó)外很多書(shū)會(huì)建議3個(gè)月,不過(guò)3個(gè)月對(duì)于國(guó)內(nèi)的項(xiàng)目來(lái)說(shuō),太長(zhǎng)了!我們經(jīng)常要在很短的時(shí)間內(nèi)做出一個(gè)大系統(tǒng)!
我們公司每個(gè)版本的發(fā)布周期以前大概是一個(gè)月,現(xiàn)在已經(jīng)縮小到2-3周了。
4.每周工作40小時(shí)
加班是我們IT人的家常便飯,極限編程反對(duì)加班!那么是不是我們只要工作時(shí)間到了,哪怕很多事情沒(méi)有做完,就直接下班呢?
這條實(shí)踐的真正意思是我們應(yīng)該充分利用好工作的40小時(shí),少做最好不做無(wú)用功,少返工。實(shí)際上我們很多加班是因?yàn)槲覀冏隽撕芏酂o(wú)用功、返工導(dǎo)致的。
人的腦袋每天能高速運(yùn)轉(zhuǎn)8小時(shí)其實(shí)已經(jīng)很了不起了,如果還要加班,那么只能帶來(lái)更多的bug,得不償失!不過(guò)我們很多公司的老板喜歡看到我們這些打工仔忙,看到我們加班,而不管實(shí)際的效果,這真是悲哀啊。
極限編程的各條實(shí)踐是有關(guān)系的,我覺(jué)得最基礎(chǔ)的最重要的是測(cè)試驅(qū)動(dòng)與自動(dòng)化測(cè)試,這兩條做不能做好,重構(gòu)、代碼共用等實(shí)踐就難以實(shí)施。
極限編程很多東西很講究靈活,但測(cè)試驅(qū)動(dòng)這條是最死的要求最嚴(yán)格的,整個(gè)靈活的體系其實(shí)就是靠這一條來(lái)保證質(zhì)量的。很多公司實(shí)踐極限編程時(shí),不能做到測(cè)試驅(qū)動(dòng),就簡(jiǎn)單設(shè)計(jì),就隨便改代碼,隨便因應(yīng)需求變化而變動(dòng)代碼,這些工作都沒(méi)有了質(zhì)量保障的基礎(chǔ)。
極限編程我們需要整體來(lái)理解各條最佳實(shí)踐,并根據(jù)實(shí)際情況加以調(diào)整,為我所用!
下面將會(huì)稍微簡(jiǎn)單一點(diǎn)介紹另外了兩個(gè)比較常見(jiàn)的敏捷開(kāi)發(fā)。
特別聲明:
如需轉(zhuǎn)載此文,請(qǐng)給出指向本網(wǎng)站的連接,如下:
作者:張傳波
摘自:http://www.umlonline.cn
如不能按此要求,請(qǐng)不要轉(zhuǎn)載此文。