如果召集一波互相不认识的程序员在一起就一个真实项目进行一天的开发会产生什么样的化学反应?
会写出多少代码?
会完成多少用户故事?
能出一个MVP吗?
我们召集了38个人完成了12个用户故事。
前端代码819行,持续集成44次。
后端代码2814行,持续集成58次。
本次活动是临时组织的,大家非常踊跃的参与,最终活动开始时群人数达到38人。其中也有一些抱着学习目的进行围观的小伙伴。
到当天活动结束,基本上一个MVP就要交付了。这是如何做到的?
这个玩法叫做 快 闪 编 程。
2021年6月2日王洪亮和邓志国在一起突发奇想的想到一个编程的玩法 —— 快闪编程(Flash Mob Programming)。这是一种结合了快闪(Flash Mob)和Mob Programming二者的特点的一种活动形式。
召集一波对极限编程有兴趣的爱好者们一起就一个真实项目需求为基础,进行代码开发。看一天能够产出多少。而参加活动之前已经选好了约定的技术框架,编程语言,开发环境以及用户故事等一系列基础设施准备活动,参与者按照单件流的方式组对认领任务开始开发。必须要遵循一定的质量标准。
想要让一个活动就要有一个充分地准备活动。
首先,要有明确的需求和用户故事
没有明确的需求是无法进行任务开发的。
王洪亮担任PO,提出所有的用户故事需求,在活动开始之前一天,江鑫给提供了更进一步的需求细化工作,设计了整个产品的故事线,促进了需求理解,并且设计了相关数据库表结构。整个项目以教练在客户现场通过作业方式训练学员的项目为蓝本进行用户故事分解和需求细化。
本次由于准备匆忙,临时发起的,只是分解了用户故事和AC,没有确定UI布局。这给开发的过程中增添了不少确认工作。
其次,要有明确的前端框架,后端框架技术以及编码约定和提交代码约定。
编程语言后端采用了Spring Boot,前端采用了vite. vue3 element-plus。
后端基础脚手架由邓志国提供,采用了领域驱动设计的方式进行了架构划分。前端基础脚手架由崔效瑞提供,赵水平在该技术上搭建了前端的布局模板。
前后端各自进行了编码约定。
再次,环境要准备好
因为开发过程需要docker,但是很多同学docker并没有提前安装,这引起了大约2小时的环境调整工作,整个活动7小时,占比不小,如果能够早点准备好,相信产出还会更高。
另外,当天没有准备好持续部署服务器,就暂时缺少了前后端持续一起集成的过程。都是分开的集成和自动化测试。
还有,重点是任务的单件流
认领任务的时候应该从价值高的任务优先开始,而不是从简单的开始,但是很多小伙伴对技术的不熟悉,只能先从简单的任务开始,先熟悉任务再说,不过熟悉了技术之后,明显的下午开发的效率比上午高出很多辈,大家都相信,随着技术的熟悉,如果是两天的话,那么第二天效率会更高。
另外,持续集成和自动化测试一个也不能少
能够确保质量的手段中,持续集成和自动化测试都是居功至伟的。离开了自动化测试,集成就不会那么顺利。离开了持续集成,就不会那么容易的集成。
不少同学来之前对于持续集成的理解也就停留在持续打包上,对于自动化测试也只是听说过没有实际使用过。
活动总结
真实项目和FizzBuzz的对比
不少线下编程活动都是以FizzBuzz等训练TDD思维的简单题目开始的。很多参与者无法建立这个和实际项目之间的关系。而本次采用的是真实项目,大家参与的过程会有明显的在做项目的感觉,很多平时的工作的习惯都会在这次开发活动中得到体现。
反思
收获
拓展思维