浅谈基于敏捷开发交付应对突发项目
软件项目开发的全过程是一个很大的范畴,从确定需求,到编码设计,到集成发布,到运维、运营、设计方方面面。在这个过程中,交付过程是非常关键的,因为它影响着软件的质量、稳定性和用户体验。
在当今竞争激烈的商业环境中,突发交付项目的出现成为了软件企业面临的一项巨大挑战。这些项目通常具有紧迫的时间要求和高度复杂的任务,需要企业迅速做出反应并提供高质量的解决方案。为应对这些突发交付项目,越来越多的软件企业采用敏捷开发的交付方式。
本文基于敏捷开发交付的思想,探讨在实际的突发软件交付项目中,如何通过敏捷交付的思想去进行软件的有效高质量落地。
突发软件交付项目的挑战及困难
时间紧:交付周期短,设计、研发、测试的时间严重压缩,里程碑设置严格
任务重:通常背靠重要的任务事件,需要在限期里取得重大结果
要求高:即使在紧迫的时间里,同样会对系统软件提出较高的建设要求,如:架构的先进性、合理性、可靠性和扩展性等
需求模糊:由于项目的突发性,软件的需求主线往往未能及时理清,甚至存在来源多样性问题,需同时满足多方诉求
资源紧张:通常研发资源都是日常分配在提升及交付项目当中,在突发情况下,短期内会存在人力资源紧张的问题,需要快速协调抽调资源
能力参次:由于是临时抽调拼凑的研发交付团队,成员的业务理解和技术能力会存在差异,需要进行技能的快速拉齐
敏捷开发交付的思想
敏捷开发交付思想是一种在软件开发领域被广泛采用的方法论,它强调快速响应变化和持续交付高质量的软件产品。在当今快节奏和不断变化的商业环境中,敏捷交付思想成为了许多组织的首选方法。
强调团队合作和沟通,鼓励开发人员、业务代表和利益相关者之间的密切合作。通过频繁的沟通和反馈,团队能够更好地理解客户需求,并及时调整开发计划和优先级。这种协作和迭代的方式使得团队能够快速响应变化,并在较短的时间内交付可用的软件。
强调持续交付和迭代开发的重要性。与传统的瀑布模型相比,敏捷交付思想更注重频繁地交付小型的软件功能,而不是一次性交付整个产品。这种迭代开发的方式使得团队能够更早地获得用户的反馈,并及时进行调整和改进。通过持续交付,团队能够更好地控制项目进度和风险,并更快地将软件产品推向市场。
鼓励团队在开发过程中灵活应对变化,并通过频繁的迭代来不断改进产品。这种灵活性使得团队能够更好地适应市场需求的变化,并及时调整开发计划和优先级。同时,敏捷方法还提倡简单性和可持续性,避免过度设计和不必要的复杂性,从而提高开发效率和产品质量。
提倡团队成员和利益相关者之间的透明可视,促进更好的沟通和合作。敏捷方法通过可视化工作流程、任务面板和迭代回顾会议等方式,使团队成员和利益相关者能够清楚地了解项目的进展和问题,并及时进行调整和改进。这种透明度有助于减少沟通和协调的成本,并提高团队的效率和工作质量。
总结起来,敏捷开发交付思想就是一种以人为中心、持续交付、灵活性和透明度为核心的软件开发方法论。相较于传统的瀑布式开发,可以帮助团队更好地适应市场需求的变化,提高团队的效率和工作质量,并为客户创造更好的价值。
我们的实践
基于敏捷思想的价值观及原则,我们在面对突如其来的软件研发交付项目,结合软件研发交付的几个阶段,进行了如下实践:
规划阶段
方案需求前置现场:在项目启动的初期,部署核心方案人员需前置现场,快速收拢客户需求,引导客户建设思路,减少定制化研发。通过与客户的深度沟通,了解客户的需求和动机,从而制定更合适的项目规划和产品设计方案。
锁定建设范围,精准工作量评估:前置人员配合客户快速完成建设范围内容的圈定,明确范围内容,及时输出功能清单,反馈后端研发预判投入,形成投入决策依据。在明确项目目标和范围的基础上,通过精准的内容估算,合理安排资源,为项目投入成本、人员选用提供有力依据。
资源筹备阶段
确定投入规模,设定核心团队架构,分组定责:基于规划的建设内容,分组设定研发负责人、关键设计以及明确组内所需人员要求,包括:缺口数量及技能要求,明确小组目标及职责。
拉通外部组织资源,快速甄选投入:基于团队设计的资源诉求,快速向公司发起资源申请诉求,拉通外部组织,收集近期可抽调投放的人力资源,针对人员进行及时的面试沟通甄选入组,锁定参与工期,规划滚动进项的时间节点,补充团队人力缺口。
设计阶段
交付里程碑分解切割:根据客户整体目标,设计切割出多个主要里程碑,每月输出匹配的建设成果,满足配合项目组客户领导阶段性成果汇报输出。
前后方紧密配合,迭代输出设计:方案设计人员前置客户侧,推动客户快速确认设计原型,后端主力研发协同配合前方完善设计,同步理解客户诉求并反馈实现意见。根据任务大小,按 3 天为一个单位快速迭代方案成果输出,通过前端人员的主动推动,加速与客户的交流互动,保障设计内容的准确性和修订及时性。
原型验证,快速印证方案设想:针对客户提出的关键核心技术场景,架构设计人员输出关键核心的原型,由后端研发进行快速研发验证可行性,通关验证结果印证设想,完成设计方案的输出。
研发阶段
持续改进和学习:研发启动初期,定立规则强调持续改进的思维和实践,包括:方案迭代回顾、团队培训和知识分享等,务求以最短的时间内拉齐相关研发人员的知识短板。每周定期探讨如何借助研发每日的进展反馈和数据分析来改进团队的工作流程和项目管理,争取前期项目管理快速进入正轨。
采用 Scrum 方法团队高效协作:小组负责人每日组织“站立会议”,协调沟通团队的工作进度,确定当日冲刺目标落实团队成员,成员分享进展、问题难点及寻求支持。每个阶段冲刺结束后,团队会进行回顾会议,评估过去的工作,找出需改进的缺陷。小组会议后再由项目主管组织组长间的联动会议拉通信息。通过鼓励团队成员之间的密切合作和互相支持,提高团队的凝聚力和效率。
平台产品能力复用,降低定制化研发投入:积极拉通公司级成熟存量产品的整合,复用产品能力,串联打通应用与平台产品的业务实现过程,基于 28 定律尽量提升配置化能力的覆盖度,结合小量的编码完成定制化需求,快速满足客户的功能诉求,缩减功能重构投入。通过产品技术整合,降低项目研发成本,提高项目投资回报。
创新技术引入,工具化提效:引入创新性的研发提效工具,如:低代码、WhaleBI 等,分析筛选出与工具匹配度最高的用户功能需求,利用高效的工具辅助实现,快速构建平台应用界面,实现产物输出品质一致,有效腾出精锐前端力量投放到其它复杂功能研发任务中。
就绪阶段
业务数据预置,降低业务交付复杂度:结合客户提供的业务场景,提前预置所需的配置数据,如:流程、参数、采集对象、性能及告警监控指标等。确保软件交付时的业务配置数据完备,开箱后交由实施人员通过简单的配置调试则可快速接入使用。
出厂版本部署演练,输出稳定的可快速交付版本:通过多轮次的环境部署演练,沉淀整理出快速部署搭建的脚本,并加载到 ZCM/Sims 等环境部署工具上,实现预置的环境配置及对应基座部署版本。借助反复实战演让交付人员清楚熟悉部署过程,了解常见问题,积累经验。
总结交付手册,用于指导快速开局业务加载:通过交付人员的实践演练及测试人员的日常使用,沉淀出完整齐备的交付文档资料,如:部署、业务配置、调试的标准动作,用于指导现场项目快速交付部署,完成必要业务配置及内部调试,有效确保产品交付落地顺利。
测试阶段
知识就绪,提前熟悉规划功能:测试人员从设计阶段中后期介入,熟悉了解版本规划所需的功能及业务场景。前期设计人员每周进行 1~2 轮功能知识培训及问题答疑,快速提升测试人员对项目业务功能的理解,提升满足从业务视角的整体场景去驱动进行测试,而非仅停留在功能可用性的验证层面。
场景联合设计,制定测试目标:核心设计人员牵头核心业务场景设计,测试人员配合测试功能范围点的覆盖确认,共同制定测试计划和预期测试目标,避免测试在验证过程中对成品内容理解出现分歧偏差,影响进度及质量。
测试问题负责人点对点跟踪,快速扑灭:测试问题每日由测试人员统一汇总到问题跟踪表,由模块小组负责人分析后跟测试人员进行解答,制定 bug 改进计划及复测时间安排,保障 bug 修复响应及时。
用户参与和反馈循环:强调用户参与的重要性,每周对测试就绪的版本功能,通过例会给项目用户进行相关演示和反馈收集,建立有效的用户反馈循环机制,快速调整和优化产品功能,避免在里程碑积压大量成果去演示,产生大量偏离返工。
综上所述,基于敏捷的思路结合软件交付的几个重要阶段环节的实践策略,可以一定程度上有效帮助我们解决突发项目所面对的困境,其中心思想做法归纳来说,主要还是围绕以人为中心的快速沟通、复杂分解、快速迭代、快速反馈、快速整合及提前就绪等方面进行处理。
结语
成功的软件系统落地离不开高效的软件交付组织管理,对于突发交付项目的重要性更是不言而喻。敏捷交付的方法思想可以帮助团队更快地响应变化,更快地适应新的要求,并更快地交付可用的产品,通过快速迭代和反馈,帮助团队在项目中更快地发现问题并及时解决,更好地管理风险,从而确保项目的成功。
版权声明: 本文为 InfoQ 作者【鲸品堂】的原创文章。
原文链接:【http://xie.infoq.cn/article/33daac004310574875d35916f】。文章转载请联系作者。
评论