從開始編程實(shí)踐之前,就一直對(duì)敏捷開發(fā),精益生產(chǎn)的理念特別敢興趣,比較好的是,我個(gè)人從來對(duì)最后那個(gè)眾所周知的開發(fā)速度快感興趣,而是被敏捷方法所包含的理念所吸引,團(tuán)隊(duì)合作、高質(zhì)量、精益求精,這些都是我自己特別感興趣的。所以幾年來,一直不斷的在追求如何實(shí)現(xiàn)真正的敏捷,閱讀了很多書籍,文章,親自在工作中實(shí)踐。2016年剛剛開始,正好結(jié)束了之前系統(tǒng)的開發(fā)一段時(shí)間,總結(jié)一下自己的感想和收獲。
現(xiàn)在談到敏捷開發(fā),應(yīng)該是混合了XP
和Scrum
,就像馬丁福勒說的,現(xiàn)在已經(jīng)沒有人單獨(dú)談?wù)揦P,就像談?wù)摵芏嗥渌麣v史上的理念,不是因?yàn)椴恢匾耍亲兊孟窨諝庖粯幼匀唬詻]有感覺了。而現(xiàn)實(shí)中幾乎所有人都看到了敏捷的好處,都渴望敏捷帶來的優(yōu)勢(shì),不談敏捷仿佛就是異教徒;但是不幸的是,更多的聽到的聲音是,我多短的時(shí)間做了這么多功能,這個(gè)一定是敏捷了,看我也敏捷,這里面肯定有一部分已經(jīng)像空氣一樣自然的敏捷,但是很多人其實(shí)完全忽略了團(tuán)隊(duì)才是敏捷的核心,高質(zhì)量是敏捷的自然結(jié)果,而做出來的系統(tǒng),代碼質(zhì)量本身反而是最先被犧牲的,這樣的實(shí)踐當(dāng)然不是敏捷。
我自己的實(shí)踐
代碼審查
在保證代碼質(zhì)量上,代碼審查是必不可少的,只有審查才能確保像縮進(jìn)、循環(huán)嵌套層數(shù)這樣的錯(cuò)誤能夠被及時(shí)糾正,通過大量的審查,至少保證代碼整體水平任何時(shí)候都是團(tuán)隊(duì)當(dāng)前能達(dá)到的最高水平;另外在團(tuán)隊(duì)建設(shè),尤其是培養(yǎng)新人,形成新的架構(gòu)的過程中,代碼審查也是最高效的。
碰到的問題是,有的時(shí)候代碼質(zhì)量很低,幾乎會(huì)整個(gè)推翻重寫,效果是提高了,但是開發(fā)效率降低非常明顯。
結(jié)對(duì)編程
在敏捷軟件開發(fā)(原則模式與實(shí)踐)中,提到了結(jié)對(duì)編程的一些意義,例如互相發(fā)現(xiàn)問題、提高專注度、還有編寫測(cè)試
對(duì)敏捷的一些總結(jié)
高水平的團(tuán)隊(duì)
我心中理想的敏捷,首先要明確一點(diǎn),人是核心,以人為中心去打造團(tuán)隊(duì)和架構(gòu),只有最頂尖的人理念相通的團(tuán)隊(duì),才能最高效的去溝通,并且有絕對(duì)的執(zhí)行力;就算暫時(shí)還不是頂尖的高潛力人才,也要通過團(tuán)隊(duì)的敏捷實(shí)踐,加速新人融入團(tuán)隊(duì)。這種情況下的結(jié)對(duì)編程,不管是熟悉的人和不熟悉的人結(jié)對(duì),還是測(cè)試驅(qū)動(dòng),都是達(dá)到最佳效果所必須的。
可持續(xù)的開發(fā)
敏捷一定是倡導(dǎo)可持續(xù)的開發(fā),在很多地方,其實(shí)這個(gè)反而是最難做到的,不但要求開發(fā)人員的高效率,個(gè)人實(shí)踐管理,技術(shù)和知識(shí)的提升還有規(guī)劃和設(shè)計(jì);在團(tuán)隊(duì)和企業(yè)層面上,也面臨巨大挑戰(zhàn),通常的情況是,以快速出成果為名,在完全看不到細(xì)節(jié)的情況下,不經(jīng)過設(shè)計(jì),拍腦袋一個(gè)進(jìn)度出來,然后去趕這個(gè)時(shí)間,結(jié)果可想而知,沒有規(guī)劃自然不知道怎么檢查反饋,定出的進(jìn)度和期限,必然嚴(yán)肅性就和指定一樣,結(jié)果就是加班來修改代碼;沒有精心設(shè)計(jì),最終的質(zhì)量可想而知,沒有想明白要做什么就開始寫代碼,邏輯上的正確性幾乎是沒有保障的,我的總結(jié),就是看著需求文檔直接寫代碼。
全面的自動(dòng)化
從開發(fā),測(cè)試到構(gòu)建、集成、部署、運(yùn)維,整個(gè)生命周期的自動(dòng)化,是支持敏捷開發(fā)的基礎(chǔ)設(shè)施,全面自動(dòng)化,將開發(fā)和運(yùn)維人員從各種復(fù)雜多變的環(huán)境配置遷移同步和管理中解放出來,高效率的像流水線一樣讓系統(tǒng)運(yùn)轉(zhuǎn)起來,開發(fā)人員和測(cè)試人員、運(yùn)維人員,就可以減少很多溝通成本,還有不必要的重復(fù)勞動(dòng),專注于業(yè)務(wù)邏輯的設(shè)計(jì)、實(shí)現(xiàn),把時(shí)間花在功能設(shè)計(jì)和開發(fā)上,就有了更多的時(shí)間來推進(jìn)測(cè)試驅(qū)動(dòng)開發(fā)。
良好的設(shè)計(jì)
無論是功能的實(shí)現(xiàn)、程序的質(zhì)量、還是自動(dòng)化測(cè)試,都離不開良好的設(shè)計(jì),從用戶故事開始,需求和代碼之間還有太多的細(xì)節(jié),有巨大的鴻溝,只有通過各種層次的設(shè)計(jì)方法,不斷的進(jìn)行溝通,才能夠真正設(shè)計(jì)出好的程序,只有經(jīng)過兩好設(shè)計(jì)的程序,在測(cè)試、部署,開發(fā)和用戶體驗(yàn)上,才可能有高質(zhì)量。
溝通和協(xié)作
任何理想的想法和強(qiáng)大的工具,還是規(guī)范,都不可能打造出卓越的團(tuán)隊(duì),不能自動(dòng)完成質(zhì)量的程序,只有付出努力的辛勤的不斷嘗試,讓團(tuán)隊(duì)能夠有效的進(jìn)行寫作,不斷反饋,才有可能實(shí)現(xiàn)改善,以1+1大于2的方式去開發(fā)。