在校学生小团队Scrum实践经验与反思

       本学期的敏捷软件开发课程要求学生自己组队(4人)使用Scrum方法开发一个项目。我们一队四人虽然以前没有实际scrum开发经验,但是靠课上以及参考资料的指导,还是在努力践行Scrum流程与思想。本文内容包括以下三部分:在校研究生践行Scrum的固有困难、我们的实践过程及过程中对流程的适应与改造、Scrum对于学生的一般性课程项目的潜在价值。

在校研究生践行Scrum的固有困难

       显然,Scrum实践已经默认了应用的团队是一个全日制工作的、工作技能熟练的开发团队。在此基础上,才有可能组建“全职能团队”,才有可能“把办公桌安排在一起”,并在旁边树立看板作为信息辐射器,让大家随时了解Sprint进度之类的信息。
       而这些要求,对于在校研究生来说,并不现实。首先,大家选的课程并不相同,在大家的闲暇时间重叠不多的情况下,还有可能有其他活动占去这些宝贵时间。这导致能够做到一起工作、即时交流反馈的机会很少。其次,(由于本专业热门)一部分研究生本科并非本专业,基础薄弱,影响工作质量,本人所在团队就有这种情况。即使是基础较好的学生,如果课程项目提出了对新技术/框架的使用需求,也会变成基础薄弱的开发者,影响工作效率与质量。
       综上所述,在校研究生践行Scrum的固有困难是“共同工作时间少导致交流受阻”与“水平不足、需要大量时间来学习和踩坑导致工作效率、质量低”。受这两个因素影响,在校研究生想要采取某些Scrum实践可谓困难重重。比如:由于工作效率低,人数也不多,所以几乎不可能支持结对编程;由于共同时间少,协作靠QQ群,所以请求到响应的时间间隔很长。

我们的实践过程及过程中对流程的适应与改造

       本团队从使用故事地图进行需求分析之后,便开始进入迭代开发阶段。从那时到假期有三周半,我们便决定把时间分成3个迭代,每个迭代持续一周。
       首次会议包括对这三个迭代的功能点的大致划分以及对Sprint1的故事的分解、分工。在会议上,我们得到了以下商讨结果:

  1. 由于没有“客户参与”,验收标准就没法非常精确。虽然之前大致写了故事验收标准,但设计得复杂还是简单,要不要复杂的安全性保障机制等等,都没有说明。所以我们最终同意从流程中去掉每周展示会议,只要前后端调试成功,前端开发能够覆盖功能点即可。
  2. 由于共同开发时间不好找,所以“进度自行把握”,取消每日站会,不规定共同开发时间。
  3. CI平台作为敏捷开发关键要素之一,应当尽快搭建并纳入使用。前端由于微信小程序的特殊性质,不使用CI。
  4. 两名同学开发SprintBoot框架的后端、两名同学开发微信小程序前端。协作依靠后端发布、更新api文档,沟通靠QQ群。
  5. 计划按照故事点的数目将所有故事平均分到三个迭代中去。第一次迭代完成优先级最高的1/3的故事点的需求。

       在这样的结果下,我们开始了Sprint1开发。本人与另一名同学A负责微信小程序前端。提出前端使用微信小程序形式的就是A同学,而本人其实并不熟悉微信小程序开发。在Sprint1的一周内,团队内的主要交流便是api文档的发布。以及在QQ群里对于api文档的少量修改要求。我们主要感受到的问题包括:

  1. “注册/登录”等辅助功能其实不比普通的业务故事的工作量要少,然而在故事地图里面没有写到这些功能。
  2. 后端SpringBoot技术比较简单,负责的B、C两名同学很快就完成了api设计与实现,配合CI自动部署,两天就完成了Sprint1的开发工作。而前端与其进度差异巨大。对于本人、B、C,学习微信小程序开发都是较大的工作量。这使得我们无法按照Scrum说明的“有余力的开发者应当主动承担更多任务”,给B、C分配前端任务。而我也几乎只是完成了微信小程序的大致学习。
  3. 由于没有共同工作时间、没有站会,交流只靠QQ群,所以当A发现了api设计不合理之处并在QQ群要求修改时,得到反馈的时间间隔相当长。
  4. 在上面1、2、3的情况叠加下,A几乎只完成了注册、登录功能。从前端来看,Sprint1的故事全都没有完成。

       对于以上问题,我们在Sprint1回顾会议上面进行了仔细分析,认为问题的根源是交流不畅。所以我们在Sprint2中进行以下流程改进:

  1. 根据每人的课程表,(虽然不容易,也要)规划出都有空闲的共同工作时间,即使每两天只能规划3小时,也能对于难度较低的本项目起到帮助。
  2. 每两天(与共同工作的频率一致)晚上11点在一间宿舍开一次站会,交流共同开发以及自己零碎时间开发的成果。
  3. 作为一种松散的要求,大家多看看QQ群,尽可能及时处理其他成员提出的要求。

       经过改进以后,我们在Sprint2工作效率上升明显。我们清空了Sprint1遗留下来的故事,也完成了Sprint2新计划的故事。虽然本人学习完成、效率提升对这个结果有贡献,但我们明显能够感到:共同工作、及时交流修改的流程确实为整体经验不足的团队带来了提升。
       在Sprint2的工作中,我们仍然遭遇了一些开发上的障碍:

  1. 在后端同学更新完api文档之后,发布的是Markdown格式的。由于api的更新不是在共同工作时间完成的,更新时有时负责前端的同学在上课或者没带电脑只有手机,就不方便检查api的设计缺陷。如果后来忘记,就会一直等到前端开发到这个接口时,才会发现问题。这时修改又会耽误时间。
  2. 后端虽然写了单元测试,但由于对测试框架的不熟悉,发生过把request parameter当成request body(json)的情况,还测试成功了(说明实现代码写错了)。结果前端根据api开发,怎么也调不好,最终发现是后台开发经验不足导致。

针对这些问题,我们在Sprint2回顾会议上,研究出了一些解决办法:

  1. 每次上传更新的api,也在QQ群里传一份pdf格式的,保证前端开发者即使只有手机也能及时检查。这样有机会使一些api修改提前。
  2. 除了自动化的单元测试,也使用Postman软件进行每个接口的测试。Postman测试用例可以导入导出。当后端开发自测成功,便导出易读易理解的Postman测试用例集合给前端开发,保证两组人对于api有着共同理解。

       接下来我们将开始Sprint3的开发。在本迭代内,我们有可能会继续调整流程,使得流程更加适合我们的具体情况。

Scrum实践对于学生的一般性课程项目的价值

       在本次Scrum实践中(虽然项目还没有结束),我们体会到了许多Scrum实践对于我们课程项目的价值:

  1. CI工具的使用。我们使用了Jenkins对系统后端进行了自动构建部署,每当Github代码更新,便集成一次。这使得我们在初期本来跌跌撞撞的开发有了一丝光明。过去开发C-S架构项目,调试时可能需要频繁修改,也就伴随着频繁的手动构建部署,令人不胜其烦。这次我们部署好Jenkins一套,虽然SonarQube只起到了令人心烦的作用,但其它部分都实打实地减少了我们的工作量。甚至当测试出现问题(unstable build)或部署失败(failure),还能自动发邮件提醒。
  2. 短迭代周期确实降低了修改成本。虽然我们目前只完成了两次迭代,但由于后端开发经验不足,api频繁修改。令人欣慰的是,由于每个迭代新增的故事点数目可控,新增的api数量也可控,这样犯错范围小,影响范围小。这样在迭代结束时,本迭代内的设计缺陷都能够修复,下一次迭代对之前api的影响很小,后端数据库设计每次修改幅度小,前端实现修改幅度也小。我们的项目才能够快速进步。如果按照以前一次设计完所有接口,开发时到处都是问题,可能所有接口会因此修改多遍,相应的前端开发也会严重受阻。
  3. 多迭代周期配合任务看板降低了拖延症发生风险。如果粗放地将三周半时间划为一个长Sprint,将所有故事点一次全放进看板,那么即使合理设置了截止时间,团队成员在看到长长的任务清单,也会望而生畏,想把任务往后拖。这种情况一般只发生与学生团队,不影响职业开发者(毕竟被老板开了就没饭吃了)。一个迭代周期任务未完成的看板(尤其是变成红色的日期)能给学生带来更大的危机感,促使学生在下一个迭代进行努力工作。同时,迭代的顺利完成会成为对团队成员的激励,使其更有动力接受下一次的挑战,治愈拖延症。这对于职业开发者也适用。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容