17级种子班《软件工程与项目管理》结课感想


时间:2019-10-11

17级种子班《软件工程与项目管理》结课感想

| 预备队员 陈继业

9月22日,17级种子班迎来了特色课程《软件工程与项目管理》的最后一课。这门课程由Dian团队邀请的企业导师担任讲师,在9月的三个周末集中授课,让大家通过小组合作的方式完成一个软件的开发任务,进而体验敏捷开发的开发模式。

作为一个还没参与过大规模集中式项目开发的团队新人,我对敏捷开发这一“新颖”的概念特别陌生。在老师的介绍中我了解到,敏捷开发是一种强调用户故事分析、持续交付、高效率集中开发等理念的开发模式。在采用敏捷开发模式的团队中,PO(Product Owner,产品负责人)和SM(Scrum Master,敏捷教练)带领开发和测试人员共同开发产品。敏捷开发的概念早在上世纪90年代就被提出,长期以来被很多大型互联网公司重视和应用,相较于传统的瀑布式开发、迭代开发有着显著的优点。在听老师介绍完用户故事、持续交付、迭代计划会议、结对开发等一系列全新的概念后,我脑海里产生了一系列疑问:为什么一个开发模式会有这么多与传统模式不同的开发理念?其中会不会有很多为了新颖而强行创造的伪科学?但很快,我就在实际的开发中找到了这些问题的答案。

18.jpg

18 各小组PO热火朝天地讨论需求的实现方案

课程的实验围绕《大富翁》游戏的开发而展开。在软件的第一轮迭代开发中,因为缺乏敏捷开发的经验,我们小组错误地采用了瀑布式开发的方式,即把整个软件的开发分成各个部分给每一个人,然后计划在每一部分完成后合并到一起。结果在验收时,由于进度不一、任务量差异较大以及关于接口的规则沟通得不够充分等问题,我们连一个可以演示的功能都拿不出来。交付后的回顾会议中,我们小组仔细分析了上一轮开发中遇到的问题,积极调整了开发策略。然后大家不约而同地发现,开发过程中遇到的种种问题的解决方案,正是老师在开始时介绍给大家的一个个陌生的概念。

在后续的项目完善环节中,我们小组的各个成员各司其职:PO在老师改需求、加需求时积极去找老师沟通需求的细节,经过分析后再与SM和开发人员沟通,确保需求理解的正确性和开发的有序进行;开发人员在SM的带领下充分分析各个需求的重要度、独立性和与其他需求之间的联系,确认开发顺序并集中开发与测试;负责测试的人员开发出了自动生成测试用例和自动执行用例的脚本,严格遵守敏捷开发的理念,把发现bug转换成预防bug,让开发人员在debug过程中可以根据测试不通过的用例批量分析,大大减少了工作量。

在最后的总结中,老师带着大家一起回顾在这几天的集中开发中学到的敏捷开发的理念:充分描述客户需求、做好迭代计划,充分利用站立会议进行组内沟通并将项目管理可视化,通过回顾会议进行细致的总结、分析和计划以及重视测试在开发中起到的重要作用。我惊讶地发现,这些第一节课时因为陌生和不习惯而被大家排斥的开发方式,慢慢地融入到了开发流程的每一个细节中。这也让我更加坚信,实践是学习的最好方式。

19.jpg

19 17级种子班的软工课堂