敏捷迭代,助力开发
敏捷迭代,助力开发
——《软件工程与项目管理》结课感想
文|预备队员 曹婧岚
《软件工程与项目管理》是种子班的特色课程,每年由团队邀请企业讲师进校园为种子班同学授课。今年,这一课程安排在第七、八周的周末。20级种子班所有同学分成三个小组,一起走近敏捷开发——从认识敏捷开发,到实践敏捷开发;从设计一款机器人,到做出大富翁游戏——沉浸式的敏捷开发体验。短短4天的课程,我们不仅得到了能力的提升,还收获了思维的进步。
敏捷开发是以用户为核心,采用迭代、循序渐进的方法进行的软件开发。敏捷宣言提出:
“个体和交互 胜过 工程和工具;
可以工作的软件 胜过 面面俱到的文档;
客户合作 胜过 合同谈判;
响应变化 胜过 遵循计划。”
此次课程围绕敏捷开发的Scrum流派,将它的5项价值观(承诺、专注、公开、尊重、勇气)、3个角色(Product Owner、Scrum Master、Team)、3个交付件(产品Backlog、迭代Backlog、燃尽图)和4个会议(迭代计划会议、迭代验收会议、每日站立会议、迭代回顾会议)贯穿始终。每个小组再细分为测试组与开发组,以“测试驱动开发”为主线,经过多次迭代,圆满完成所有任务。
图1 小组合作完成机器人
下面,我想说说让我印象最深刻的几点。
首先是3个角色中的Product Owner(PO)。
我有幸担任了第一组的PO,在课程期间组织小组成员展开工作。“PO是让团队做正确的事,SM是让团队正确地做事。”这句话时刻提醒着我去履行PO的职责——及时询问客户以确定开发细节,时不时地了解每位组员的任务进度,定期开会分配任务、确保开发组和测试组的正常对接。一方面是上承下达,向上对接客户,询问客户需求,向下传达组员,更新需求列表;另一方面是组内链接,成为测试组与开发组之间的沟通桥梁——包括前期的测试接口需求,还有后期的Bug反馈等。
其次是4个会议中的每日站会。
图2 每日站会
因为周一到周五还有其他课程的学习,为了及时了解大家的进度,我们利用好课间或课后的十几分钟,快速地了解所有同学的进度——已经完成了什么,正在做什么,需要什么帮助。短时间、高频次、高效率的讨论会,让我们组能很快地调整步伐,平均分配工作量,让所有人都动起来。
最后是敏捷宣言第二条:“可以工作的软件胜过面面俱到的文档。”
敏捷开发的原则之一是“尽早、持续地交付有价值的软件使客户满意”。我们组的大富翁的UI没有在开发初期与主体代码合并,导致主体代码越写越多却不能确认已完成部分的正确性,以至于开发组的同学越写越不自信。后来简化代码框架并加上UI后,能够一边写代码一边通过可视化界面进行初步的逻辑检验,这极大地提高了开发效率。前后对比,给了我很大的启发:在团队项目组进行开发工作的时候,也需要不断地获得反馈,如可视化的界面、单元测试或者实际测试案例,来确保已有工作的正确性。这也是敏捷开发快速迭代、持续集成的关键之一——在正确的基础上继续做正确的事,出现问题时也能快速定位错误,而不是上千行代码一路写到“黑”。
通过《软件工程与项目管理》课程,我第一次接触“敏捷开发”这一概念,第一次体验企业级的项目管理与开发模式,第一次小组合作开发一款游戏。我由衷地感受到自己的开发能力、团队协作能力有了很大的提升。
敏捷开发还有很多内涵与精髓值得我们去探索与实践。
最后,我想说:当一次又一次晚上10点、11点,大家依旧聚在一起攻坚克难时,我们就已经是最棒的了!我们一直都在互相帮助、互相鼓励!!!