上周的一篇文章《敏捷開發(fā):做一個(gè)合格的Scrum Master》中具體介紹了關(guān)于如何成為一名合格的scrum master盟庞,并總結(jié)了scrum master肩負(fù)的六大職能。今天笛丙,我們談一下一名普通的敏捷開發(fā)實(shí)踐者該如何修煉自身的技能锯蛀。因?yàn)楫吘鼓軌虺蔀閟crum master为牍,對(duì)于很多人來說可能還是幾年后的事情,那么我們需要著眼于現(xiàn)在杂瘸,通過不斷的修煉倒淫,提升自己的能力。
那么我們作為team中的一員败玉,該如何修煉自身的敏捷開發(fā)之道呢敌土?我想可以通過以下三個(gè)方面镜硕,不斷錘煉自己。然而鑒于篇幅原因返干,本文對(duì)于文章中提到的各點(diǎn)只做一些引述谦疾,接下來我會(huì)陸續(xù)發(fā)表對(duì)于各部分詳細(xì)內(nèi)容的專題文章,希望大家關(guān)注犬金,也希望能和您探討念恍,我們共同進(jìn)步:)
敏捷開發(fā)思想之道
既然是一名敏捷開發(fā)者,敏捷思想的掌握自然首當(dāng)其沖晚顷。在敏捷開發(fā)實(shí)施的過程中峰伙,我們雖然不是scrum master,沒有管理scrum流程的職責(zé)该默,但是對(duì)于流程瞳氓,角色,職責(zé)的理解熟悉是非常必要的栓袖,不然參與了半天的敏捷開發(fā)匣摘,到頭來卻還說不出個(gè)所以然來可不行。作為一名敏捷開發(fā)者裹刮,我們需要:
1. 熟知流程
下圖詳細(xì)描繪了scrum的流程以及流程中各元素及其作用音榜。作為team中的一員,我們應(yīng)該將流程以及其中的工具熟記心中捧弃,并嚴(yán)格要求自己按照流程工作赠叼,讓敏捷開發(fā)的思想融入到自己的血液之中。例如违霞,關(guān)于站會(huì)嘴办,很多team 成員根本沒有當(dāng)回事,認(rèn)為這只是個(gè)形式买鸽,敷衍了事涧郊。究其原因,就是他們對(duì)于其根本的思想沒有領(lǐng)會(huì)眼五,因而態(tài)度不正妆艘,最終使得站會(huì)流于形式。 Scrum中的每一類會(huì)議都有其存在的重大意義弹砚,我們應(yīng)該認(rèn)真體會(huì)双仍,高度重視枢希。當(dāng)我們把這些都已形成了習(xí)慣桌吃,你會(huì)發(fā)現(xiàn)Scrum原來如此之美。關(guān)于scrum中各部分的具體的分析苞轿,之后會(huì)陸續(xù)發(fā)布文章茅诱。
對(duì)于此點(diǎn)逗物,市面上的書不少,但是都緊緊局限于理論瑟俭。我覺得其實(shí)敏捷思想的內(nèi)容不多翎卓,每本書上講的也都大同小異。問題的重點(diǎn)不在于看書摆寄,而在于通過自身敏捷實(shí)踐的體會(huì)失暴,將理論聯(lián)系到實(shí)踐當(dāng)中,感受它給我們的軟件開發(fā)工作帶來的好處與樂趣微饥。
2. 厘清職責(zé)
熟悉了流程逗扒,我們還需要認(rèn)清各種角色,并定位自己欠橘。上面圖中可以看出矩肩,敏捷開發(fā)中共有四種不同的角色。作為team成員的我們肃续,自然首先應(yīng)該熟記自身的職責(zé)黍檩,并了解其它角色的職責(zé)。圖中有每個(gè)角色的具體的職責(zé)始锚,在這里就不再重復(fù)敘述刽酱。我們將重點(diǎn)關(guān)注于我們自身。作為team中的一員瞧捌,我們最重要的就是功能的開發(fā)以及維護(hù)肛跌。這就要求我們自己要不斷的增強(qiáng)自身能力,使得自己負(fù)責(zé)的功能的質(zhì)量有所保證察郁。關(guān)于如何增強(qiáng)自身能力衍慎,在下面的面向?qū)ο箝_發(fā)之道中我會(huì)提出我的見解。
3. 協(xié)作溝通
協(xié)作與溝通是敏捷開發(fā)的重要特征皮钠。team中的每一個(gè)成員都應(yīng)該理解其重要性稳捆。對(duì)于team成員來說,溝通包括與scrum master的溝通麦轰,與product owner的溝通乔夯,以及team成員之間的溝通。協(xié)作則是team成員間的協(xié)作款侵。我們應(yīng)該敞開心扉末荐,抱著助人即為助己的態(tài)度。
面向?qū)ο箝_發(fā)之道
作為一名敏捷開發(fā)者新锈,熟悉面向?qū)ο蟮拈_發(fā)甲脏,深諳其道,深知其理非常重要。在我看來块请,對(duì)于每一個(gè)sprint的每一個(gè)task的開發(fā)娜氏,都遵循著這樣一個(gè)四步循環(huán):首先是需求分析,通過我們拿到的交互圖開始進(jìn)行詳細(xì)的需求的分析墩新;其次贸弥,當(dāng)我們通過交互圖的分析,將每一步都了然于胸的時(shí)候海渊,開始著手設(shè)計(jì)绵疲,這是設(shè)計(jì)模式表演的時(shí)刻,我們運(yùn)用合適的設(shè)計(jì)模式設(shè)計(jì)相應(yīng)的功能臣疑,完成后得到設(shè)計(jì)圖最岗;再次,根據(jù)設(shè)計(jì)圖開始編寫代碼朝捆;最后般渡,當(dāng)這一切完成之后,我們會(huì)開始審視當(dāng)前的工作芙盘,發(fā)現(xiàn)問題后做適當(dāng)?shù)闹貥?gòu)驯用。這樣對(duì)于每一個(gè)我們完成的task,我們就能夠保證其質(zhì)量都是過關(guān)的儒老。下面我們逐步解釋蝴乔。
第一階段:需求分析
在開始每個(gè)task之前,我們首先要做的就是仔細(xì)分析UX交付給我們的用戶交互圖驮樊,我們通過對(duì)用戶交互圖的深入理解薇正,以及在sprint plan meeting與backlog grooming meeting的對(duì)于task的深入分析,做到將task的具體內(nèi)容與流程熟記于心囚衔,胸有成竹挖腰。
第二階段:設(shè)計(jì)模式
通過對(duì)交互圖的分析,現(xiàn)在我們已經(jīng)對(duì)task有了具體的理解练湿,那么這個(gè)階段我們可以開始對(duì)task進(jìn)行詳細(xì)設(shè)計(jì)了猴仑。這個(gè)階段的關(guān)鍵是如何設(shè)計(jì)出一套可復(fù)用,可擴(kuò)展肥哎,可測(cè)試的方案來辽俗。我們應(yīng)遵循面向?qū)ο蟮膸讉€(gè)設(shè)計(jì)原則(之后的文章會(huì)詳述),將功能的流程圖篡诽,類圖崖飘,對(duì)象圖等5圖設(shè)計(jì)出來。敏捷開發(fā)中并不強(qiáng)調(diào)文檔的必要性杈女,因此我們可以通過草圖的方式將設(shè)計(jì)思想表現(xiàn)出來朱浴,以利于后續(xù)代碼編寫工作的進(jìn)行吊圾。至于設(shè)計(jì)模式的學(xué)習(xí),經(jīng)典書籍?dāng)?shù)不勝數(shù)赊琳,推薦兩本:四人幫的《設(shè)計(jì)模式--可復(fù)用面向?qū)ο筌浖幕A(chǔ)》,《Head First設(shè)計(jì)模式》砰碴,國內(nèi)的一本《研磨設(shè)計(jì)模式》寫的也不錯(cuò)躏筏。
第三階段:代碼藝術(shù)
現(xiàn)在我們可以開始編寫代碼了。需要注意的是呈枉,我們已經(jīng)設(shè)計(jì)好了具體的方案趁尼,因此我們只需要按照設(shè)計(jì)圖紙進(jìn)行施工就好了。這個(gè)階段我們需要注意的是代碼的質(zhì)量猖辫,也就是所謂的代碼藝術(shù)酥泞。寫代碼不是體力活。如果我們僅僅滿足于堆砌代碼啃憎,那么我們始終都只能是一個(gè)碼農(nóng)芝囤。要寫出漂亮的代碼,需要我們自己不斷的揣摩實(shí)踐辛萍,不斷的修正悯姊。對(duì)此我會(huì)寫一篇關(guān)于代碼藝術(shù)的文章,是自己的一些親身感受與實(shí)踐體會(huì)贩毕。那么這里推薦幾本非常好的書籍:《代碼整潔之道》《代碼大全》《程序員修煉之道--從小工到專家》等悯许。
第四階段:重構(gòu)之術(shù)
到這里task已經(jīng)基本完成了,注意這里僅僅是基本完成辉阶,并沒有最終完成先壕。那么這一步我們應(yīng)該做些什么呢?重構(gòu)谆甜。我們?cè)诰帉懘a的時(shí)候垃僚,由于各種各樣的原因,可能并沒有按照我們之前設(shè)計(jì)的“圖紙”執(zhí)行规辱。因此冈在,這個(gè)階段我們需要重新審視自己的設(shè)計(jì)與實(shí)際代碼,找到那些背離設(shè)計(jì)原則按摘,不可測(cè)包券,不可擴(kuò)展,不可復(fù)用的代碼炫贤,逐步重構(gòu)溅固,使其最大限度的達(dá)到我們面向?qū)ο笤O(shè)計(jì)原則的要求。關(guān)于重構(gòu)兰珍,可以參考《重構(gòu):改善既有代碼的設(shè)計(jì)》寫的非常的好侍郭,值得深讀。
至此,task的開發(fā)工作總算完成亮元。接下來就是下一個(gè)task猛计,再下一個(gè)......循環(huán)反復(fù)。最終確保我們的項(xiàng)目順利向前爆捞。
敏捷學(xué)習(xí)之道
學(xué)無止境奉瘤,對(duì)于我們程序員尤其如此。敏捷思想對(duì)于軟件開發(fā)已取得了革命性的成功煮甥。然而我想盗温,敏捷思想不僅僅可以用在軟件開發(fā)領(lǐng)域,在其它的領(lǐng)域依然大有所為成肘。那么我們是不是可以將敏捷的思想運(yùn)用到日常的學(xué)習(xí)中去呢卖局?怎樣運(yùn)用呢?通過自己的親身實(shí)踐双霍,我覺得我們可以通過如下幾點(diǎn)砚偶,將敏捷運(yùn)用到學(xué)習(xí)的實(shí)踐中去。
1. 化整為零洒闸,小步前進(jìn)蟹演,迭代學(xué)習(xí),增量回顧
首先我們將大塊的學(xué)習(xí)內(nèi)容分成每一個(gè)小塊顷蟀,通過在一定周期內(nèi)對(duì)于每一個(gè)小塊的學(xué)習(xí)酒请,最終完成大塊的學(xué)習(xí)。比如我們要看一本書鸣个,我們可以將這本書視為一個(gè)story羞反,其中每一章視為一個(gè)task,那么我們將2周定為一個(gè)迭代囤萤,每?jī)芍芡瓿梢徽聝?nèi)容昼窗,在每個(gè)迭代的最后我們進(jìn)行總結(jié)回顧,以此方式不斷前進(jìn)涛舍,最終實(shí)現(xiàn)小步前進(jìn)澄惊,完成整本書的閱讀。
2. 利用番茄時(shí)間法富雅,分解時(shí)間掸驱,多任務(wù)并發(fā)前進(jìn)
根據(jù)經(jīng)典著作《番茄時(shí)間法》,我們也可以將大塊的時(shí)間分成一些小塊没佑,對(duì)不同的內(nèi)容進(jìn)行學(xué)習(xí)毕贼。這樣可以達(dá)到多個(gè)任務(wù)同時(shí)進(jìn)行,且不會(huì)相互干擾蛤奢。我們可以充分利用時(shí)間碎片來學(xué)習(xí)鬼癣,將一些零散的知識(shí)陶贼,在時(shí)間碎片內(nèi)完成學(xué)習(xí)。
通過以上待秃,進(jìn)過一段時(shí)間之后拜秧,你會(huì)發(fā)現(xiàn),你的學(xué)習(xí)的速度和質(zhì)量均會(huì)明顯提升章郁,一種酣暢淋漓的成就感油然而生枉氮。
以上就是關(guān)于如何成為一名優(yōu)秀的敏捷開發(fā)者的感悟,希望您利用您的寶貴時(shí)間閱讀后驱犹,能給您帶來一點(diǎn)點(diǎn)啟發(fā)嘲恍,如有不妥的地方也請(qǐng)您指正足画。接下來我會(huì)對(duì)文中具體的各點(diǎn)進(jìn)行后續(xù)的詳細(xì)解釋雄驹,如果有興趣,可以關(guān)注我的微信訂閱號(hào):SwifterDev, 也可以掃一下下面的二維碼關(guān)注淹辞。讓我們共同進(jìn)步医舆!