在校學(xué)生小團(tuán)隊(duì)Scrum實(shí)踐經(jīng)驗(yàn)與反思

? ? ? ?本學(xué)期的敏捷軟件開發(fā)課程要求學(xué)生自己組隊(duì)(4人)使用Scrum方法開發(fā)一個(gè)項(xiàng)目。我們一隊(duì)四人雖然以前沒有實(shí)際scrum開發(fā)經(jīng)驗(yàn)爷肝,但是靠課上以及參考資料的指導(dǎo),還是在努力踐行Scrum流程與思想金赦。本文內(nèi)容包括以下三部分:在校研究生踐行Scrum的固有困難夹抗、我們的實(shí)踐過程及過程中對(duì)流程的適應(yīng)與改造、Scrum對(duì)于學(xué)生的一般性課程項(xiàng)目的潛在價(jià)值兔朦。

在校研究生踐行Scrum的固有困難

? ? ? ?顯然沽甥,Scrum實(shí)踐已經(jīng)默認(rèn)了應(yīng)用的團(tuán)隊(duì)是一個(gè)全日制工作的、工作技能熟練的開發(fā)團(tuán)隊(duì)亥曹。在此基礎(chǔ)上恨诱,才有可能組建“全職能團(tuán)隊(duì)”,才有可能“把辦公桌安排在一起”蛇受,并在旁邊樹立看板作為信息輻射器厕鹃,讓大家隨時(shí)了解Sprint進(jìn)度之類的信息。
? ? ? ?而這些要求把将,對(duì)于在校研究生來說忆矛,并不現(xiàn)實(shí)。首先洽议,大家選的課程并不相同漫拭,在大家的閑暇時(shí)間重疊不多的情況下,還有可能有其他活動(dòng)占去這些寶貴時(shí)間儿捧。這導(dǎo)致能夠做到一起工作挑宠、即時(shí)交流反饋的機(jī)會(huì)很少各淀。其次,(由于本專業(yè)熱門)一部分研究生本科并非本專業(yè)碎浇,基礎(chǔ)薄弱奴璃,影響工作質(zhì)量,本人所在團(tuán)隊(duì)就有這種情況抄课。即使是基礎(chǔ)較好的學(xué)生雳旅,如果課程項(xiàng)目提出了對(duì)新技術(shù)/框架的使用需求,也會(huì)變成基礎(chǔ)薄弱的開發(fā)者抵拘,影響工作效率與質(zhì)量型豁。
? ? ? ?綜上所述,在校研究生踐行Scrum的固有困難是“共同工作時(shí)間少導(dǎo)致交流受阻”與“水平不足墩瞳、需要大量時(shí)間來學(xué)習(xí)和踩坑導(dǎo)致工作效率氏豌、質(zhì)量低”。受這兩個(gè)因素影響泪电,在校研究生想要采取某些Scrum實(shí)踐可謂困難重重纪铺。比如:由于工作效率低鲜锚,人數(shù)也不多苫拍,所以幾乎不可能支持結(jié)對(duì)編程旺隙;由于共同時(shí)間少,協(xié)作靠QQ群垄提,所以請(qǐng)求到響應(yīng)的時(shí)間間隔很長周拐。

我們的實(shí)踐過程及過程中對(duì)流程的適應(yīng)與改造

? ? ? ?本團(tuán)隊(duì)從使用故事地圖進(jìn)行需求分析之后妥粟,便開始進(jìn)入迭代開發(fā)階段。從那時(shí)到假期有三周半备恤,我們便決定把時(shí)間分成3個(gè)迭代锦秒,每個(gè)迭代持續(xù)一周。
? ? ? ?首次會(huì)議包括對(duì)這三個(gè)迭代的功能點(diǎn)的大致劃分以及對(duì)Sprint1的故事的分解惭笑、分工生真。在會(huì)議上,我們得到了以下商討結(jié)果:

  1. 由于沒有“客戶參與”川蒙,驗(yàn)收標(biāo)準(zhǔn)就沒法非常精確长已。雖然之前大致寫了故事驗(yàn)收標(biāo)準(zhǔn)术瓮,但設(shè)計(jì)得復(fù)雜還是簡單,要不要復(fù)雜的安全性保障機(jī)制等等恬汁,都沒有說明辜伟。所以我們最終同意從流程中去掉每周展示會(huì)議脊另,只要前后端調(diào)試成功尝蠕,前端開發(fā)能夠覆蓋功能點(diǎn)即可载庭。
  2. 由于共同開發(fā)時(shí)間不好找廊佩,所以“進(jìn)度自行把握”,取消每日站會(huì)顽铸,不規(guī)定共同開發(fā)時(shí)間料皇。
  3. CI平臺(tái)作為敏捷開發(fā)關(guān)鍵要素之一践剂,應(yīng)當(dāng)盡快搭建并納入使用。前端由于微信小程序的特殊性質(zhì)优质,不使用CI军洼。
  4. 兩名同學(xué)開發(fā)SprintBoot框架的后端、兩名同學(xué)開發(fā)微信小程序前端避乏。協(xié)作依靠后端發(fā)布甘桑、更新api文檔扇住,溝通靠QQ群。
  5. 計(jì)劃按照故事點(diǎn)的數(shù)目將所有故事平均分到三個(gè)迭代中去锄贼。第一次迭代完成優(yōu)先級(jí)最高的1/3的故事點(diǎn)的需求女阀。

? ? ? ?在這樣的結(jié)果下屑迂,我們開始了Sprint1開發(fā)惹盼。本人與另一名同學(xué)A負(fù)責(zé)微信小程序前端惫确。提出前端使用微信小程序形式的就是A同學(xué),而本人其實(shí)并不熟悉微信小程序開發(fā)掩蛤。在Sprint1的一周內(nèi)陈肛,團(tuán)隊(duì)內(nèi)的主要交流便是api文檔的發(fā)布句旱。以及在QQ群里對(duì)于api文檔的少量修改要求。我們主要感受到的問題包括:

  1. “注冊(cè)/登錄”等輔助功能其實(shí)不比普通的業(yè)務(wù)故事的工作量要少腥泥,然而在故事地圖里面沒有寫到這些功能港华。
  2. 后端SpringBoot技術(shù)比較簡單,負(fù)責(zé)的B冒萄、C兩名同學(xué)很快就完成了api設(shè)計(jì)與實(shí)現(xiàn)橙数,配合CI自動(dòng)部署灯帮,兩天就完成了Sprint1的開發(fā)工作。而前端與其進(jìn)度差異巨大迎献。對(duì)于本人腻贰、B、C冀瓦,學(xué)習(xí)微信小程序開發(fā)都是較大的工作量翼闽。這使得我們無法按照Scrum說明的“有余力的開發(fā)者應(yīng)當(dāng)主動(dòng)承擔(dān)更多任務(wù)”,給B尼啡、C分配前端任務(wù)询微。而我也幾乎只是完成了微信小程序的大致學(xué)習(xí)拓提。
  3. 由于沒有共同工作時(shí)間隧膘、沒有站會(huì),交流只靠QQ群蹦疑,所以當(dāng)A發(fā)現(xiàn)了api設(shè)計(jì)不合理之處并在QQ群要求修改時(shí)萨驶,得到反饋的時(shí)間間隔相當(dāng)長腔呜。
  4. 在上面1、2膝但、3的情況疊加下谤草,A幾乎只完成了注冊(cè)丑孩、登錄功能。從前端來看略贮,Sprint1的故事全都沒有完成。

? ? ? ?對(duì)于以上問題古拴,我們?cè)赟print1回顧會(huì)議上面進(jìn)行了仔細(xì)分析真友,認(rèn)為問題的根源是交流不暢盔然。所以我們?cè)赟print2中進(jìn)行以下流程改進(jìn):

  1. 根據(jù)每人的課程表,(雖然不容易挺尾,也要)規(guī)劃出都有空閑的共同工作時(shí)間站绪,即使每兩天只能規(guī)劃3小時(shí)恢准,也能對(duì)于難度較低的本項(xiàng)目起到幫助。
  2. 每兩天(與共同工作的頻率一致)晚上11點(diǎn)在一間宿舍開一次站會(huì)涂召,交流共同開發(fā)以及自己零碎時(shí)間開發(fā)的成果敏沉。
  3. 作為一種松散的要求盟迟,大家多看看QQ群,盡可能及時(shí)處理其他成員提出的要求轮锥。

? ? ? ?經(jīng)過改進(jìn)以后要尔,我們?cè)赟print2工作效率上升明顯赵辕。我們清空了Sprint1遺留下來的故事,也完成了Sprint2新計(jì)劃的故事饲握。雖然本人學(xué)習(xí)完成、效率提升對(duì)這個(gè)結(jié)果有貢獻(xiàn)衰粹,但我們明顯能夠感到:共同工作笆怠、及時(shí)交流修改的流程確實(shí)為整體經(jīng)驗(yàn)不足的團(tuán)隊(duì)帶來了提升蹬刷。
? ? ? ?在Sprint2的工作中,我們?nèi)匀辉庥隽艘恍╅_發(fā)上的障礙:

  1. 在后端同學(xué)更新完api文檔之后泡态,發(fā)布的是Markdown格式的某弦。由于api的更新不是在共同工作時(shí)間完成的而克,更新時(shí)有時(shí)負(fù)責(zé)前端的同學(xué)在上課或者沒帶電腦只有手機(jī)拍摇,就不方便檢查api的設(shè)計(jì)缺陷馆截。如果后來忘記充活,就會(huì)一直等到前端開發(fā)到這個(gè)接口時(shí),才會(huì)發(fā)現(xiàn)問題蜡娶。這時(shí)修改又會(huì)耽誤時(shí)間混卵。
  2. 后端雖然寫了單元測試,但由于對(duì)測試框架的不熟悉窖张,發(fā)生過把request parameter當(dāng)成request body(json)的情況幕随,還測試成功了(說明實(shí)現(xiàn)代碼寫錯(cuò)了)。結(jié)果前端根據(jù)api開發(fā)宿接,怎么也調(diào)不好赘淮,最終發(fā)現(xiàn)是后臺(tái)開發(fā)經(jīng)驗(yàn)不足導(dǎo)致。

針對(duì)這些問題睦霎,我們?cè)赟print2回顧會(huì)議上,研究出了一些解決辦法:

  1. 每次上傳更新的api副女,也在QQ群里傳一份pdf格式的蛤高,保證前端開發(fā)者即使只有手機(jī)也能及時(shí)檢查。這樣有機(jī)會(huì)使一些api修改提前。
  2. 除了自動(dòng)化的單元測試戴陡,也使用Postman軟件進(jìn)行每個(gè)接口的測試塞绿。Postman測試用例可以導(dǎo)入導(dǎo)出。當(dāng)后端開發(fā)自測成功恤批,便導(dǎo)出易讀易理解的Postman測試用例集合給前端開發(fā)异吻,保證兩組人對(duì)于api有著共同理解。

? ? ? ?接下來我們將開始Sprint3的開發(fā)开皿。在本迭代內(nèi)涧黄,我們有可能會(huì)繼續(xù)調(diào)整流程,使得流程更加適合我們的具體情況赋荆。

Scrum實(shí)踐對(duì)于學(xué)生的一般性課程項(xiàng)目的價(jià)值

? ? ? ?在本次Scrum實(shí)踐中(雖然項(xiàng)目還沒有結(jié)束)笋妥,我們體會(huì)到了許多Scrum實(shí)踐對(duì)于我們課程項(xiàng)目的價(jià)值:

  1. CI工具的使用。我們使用了Jenkins對(duì)系統(tǒng)后端進(jìn)行了自動(dòng)構(gòu)建部署窄潭,每當(dāng)Github代碼更新春宣,便集成一次。這使得我們?cè)诔跗诒緛淼沧驳拈_發(fā)有了一絲光明嫉你。過去開發(fā)C-S架構(gòu)項(xiàng)目月帝,調(diào)試時(shí)可能需要頻繁修改,也就伴隨著頻繁的手動(dòng)構(gòu)建部署幽污,令人不勝其煩嚷辅。這次我們部署好Jenkins一套,雖然SonarQube只起到了令人心煩的作用距误,但其它部分都實(shí)打?qū)嵉販p少了我們的工作量簸搞。甚至當(dāng)測試出現(xiàn)問題(unstable build)或部署失敗(failure)准潭,還能自動(dòng)發(fā)郵件提醒趁俊。
  2. 短迭代周期確實(shí)降低了修改成本。雖然我們目前只完成了兩次迭代刑然,但由于后端開發(fā)經(jīng)驗(yàn)不足寺擂,api頻繁修改。令人欣慰的是泼掠,由于每個(gè)迭代新增的故事點(diǎn)數(shù)目可控怔软,新增的api數(shù)量也可控,這樣犯錯(cuò)范圍小择镇,影響范圍小爽雄。這樣在迭代結(jié)束時(shí),本迭代內(nèi)的設(shè)計(jì)缺陷都能夠修復(fù)沐鼠,下一次迭代對(duì)之前api的影響很小挚瘟,后端數(shù)據(jù)庫設(shè)計(jì)每次修改幅度小叹谁,前端實(shí)現(xiàn)修改幅度也小。我們的項(xiàng)目才能夠快速進(jìn)步乘盖。如果按照以前一次設(shè)計(jì)完所有接口焰檩,開發(fā)時(shí)到處都是問題,可能所有接口會(huì)因此修改多遍订框,相應(yīng)的前端開發(fā)也會(huì)嚴(yán)重受阻析苫。
  3. 多迭代周期配合任務(wù)看板降低了拖延癥發(fā)生風(fēng)險(xiǎn)。如果粗放地將三周半時(shí)間劃為一個(gè)長Sprint穿扳,將所有故事點(diǎn)一次全放進(jìn)看板衩侥,那么即使合理設(shè)置了截止時(shí)間,團(tuán)隊(duì)成員在看到長長的任務(wù)清單矛物,也會(huì)望而生畏茫死,想把任務(wù)往后拖。這種情況一般只發(fā)生與學(xué)生團(tuán)隊(duì)履羞,不影響職業(yè)開發(fā)者(畢竟被老板開了就沒飯吃了)峦萎。一個(gè)迭代周期任務(wù)未完成的看板(尤其是變成紅色的日期)能給學(xué)生帶來更大的危機(jī)感,促使學(xué)生在下一個(gè)迭代進(jìn)行努力工作忆首。同時(shí)爱榔,迭代的順利完成會(huì)成為對(duì)團(tuán)隊(duì)成員的激勵(lì),使其更有動(dòng)力接受下一次的挑戰(zhàn)糙及,治愈拖延癥详幽。這對(duì)于職業(yè)開發(fā)者也適用。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浸锨,一起剝皮案震驚了整個(gè)濱河市妒潭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揣钦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漠酿,死亡現(xiàn)場離奇詭異冯凹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)炒嘲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門宇姚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夫凸,你說我怎么就攤上這事浑劳。” “怎么了夭拌?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵魔熏,是天一觀的道長衷咽。 經(jīng)常有香客問我,道長蒜绽,這世上最難降的妖魔是什么镶骗? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮躲雅,結(jié)果婚禮上鼎姊,老公的妹妹穿的比我還像新娘。我一直安慰自己相赁,他們只是感情好相寇,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钮科,像睡著了一般唤衫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跺嗽,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天战授,我揣著相機(jī)與錄音,去河邊找鬼桨嫁。 笑死植兰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的璃吧。 我是一名探鬼主播楣导,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼畜挨!你這毒婦竟也來了筒繁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤巴元,失蹤者是張志新(化名)和其女友劉穎毡咏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逮刨,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呕缭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了修己。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恢总。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖睬愤,靈堂內(nèi)的尸體忽然破棺而出片仿,到底是詐尸還是另有隱情,我是刑警寧澤尤辱,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布砂豌,位于F島的核電站厢岂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奸鸯。R本人自食惡果不足惜咪笑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娄涩。 院中可真熱鬧窗怒,春花似錦、人聲如沸蓄拣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽球恤。三九已至辜昵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咽斧,已是汗流浹背堪置。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留张惹,地道東北人舀锨。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像宛逗,于是被迫代替她去往敵國和親坎匿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容