浅谈基于敏捷开发交付应对突发项目
软件项目开发的全过程是一个很大的范畴,从确定需求,到编码设计,到集成发布,到运维、运营、设计方方面面。在这个过程中,交付过程是非常关键的,因为它影响着软件的质量、稳定性和用户体验。
在当今竞争激烈的商业环境中,突发交付项目的出现成为了软件企业面临的一项巨大挑战。这些项目通常具有紧迫的时间要求和高度复杂的任务,需要企业迅速做出反应并提供高质量的解决方案。为应对这些突发交付项目,越来越多的软件企业采用敏捷开发的交付方式。
本文基于敏捷开发交付的思想,探讨在实际的突发软件交付项目中,如何通过敏捷交付的思想去进行软件的有效高质量落地。
突发软件交付项目的挑战及困难
- 时间紧:交付周期短,设计、研发、测试的时间严重压缩,里程碑设置严格
- 任务重:通常背靠重要的任务事件,需要在限期里取得重大结果
- 要求高:即使在紧迫的时间里,同样会对系统软件提出较高的建设要求,如:架构的先进性、合理性、可靠性和扩展性等
- 需求模糊:由于项目的突发性,软件的需求主线往往未能及时理清,甚至存在来源多样性问题,需同时满足多方诉求
- 资源紧张:通常研发资源都是日常分配在提升及交付项目当中,在突发情况下,短期内会存在人力资源紧张的问题,需要快速协调抽调资源
- 能力参次:由于是临时抽调拼凑的研发交付团队,成员的业务理解和技术能力会存在差异,需要进行技能的快速拉齐
敏捷开发交付的思想
敏捷开发交付思想是一种在软件开发领域被广泛采用的方法论,它强调快速响应变化和持续交付高质量的软件产品。在当今快节奏和不断变化的商业环境中,敏捷交付思想成为了许多组织的首选方法。
强调团队合作和沟通,鼓励开发人员、业务代表和利益相关者之间的密切合作。通过频繁的沟通和反馈,团队能够更好地理解客户需求,并及时调整开发计划和优先级。这种协作和迭代的方式使得团队能够快速响应变化,并在较短的时间内交付可用的软件。
强调持续交付和迭代开发的重要性。与传统的瀑布模型相比,敏捷交付思想更注重频繁地交付小型的软件功能,而不是一次性交付整个产品。这种迭代开发的方式使得团队能够更早地获得用户的反馈,并及时进行调整和改进。通过持续交付,团队能够更好地控制项目进度和风险,并更快地将软件产品推向市场。
鼓励团队在开发过程中灵活应对变化,并通过频繁的迭代来不断改进产品。这种灵活性使得团队能够更好地适应市场需求的变化,并及时调整开发计划和优先级。同时,敏捷方法还提倡简单性和可持续性,避免过度设计和不必要的复杂性,从而提高开发效率和产品质量。
提倡团队成员和利益相关者之间的透明可视,促进更好的沟通和合作。敏捷方法通过可视化工作流程、任务面板和迭代回顾会议等方式,使团队成员和利益相关者能够清楚地了解项目的进展和问题,并及时进行调整和改进。这种透明度有助于减少沟通和协调的成本,并提高团队的效率和工作质量。
总结起来,敏捷开发交付思想就是一种以人为中心、持续交付、灵活性和透明度为核心的软件开发方法论。相较于传统的瀑布式开发,可以帮助团队更好地适应市场需求的变化,提高团队的效率和工作质量,并为客户创造更好的价值。
我们的实践
基于敏捷思想的价值观及原则,我们在面对突如其来的软件研发交付项目,结合软件研发交付的几个阶段,进行了如下实践:
规划阶段
方案需求前置现场:在项目启动的初期,部署核心方案人员需前置现场,快速收拢客户需求,引导客户建设思路,减少定制化研发。通过与客户的深度沟通,了解客户的需求和动机,从而制定更合适的项目规划和产品设计方案。
锁定建设范围,精准工作量评估:前置人员配合客户快速完成建设范围内容的圈定,明确范围内容,及时输出功能清单,反馈后端研发预判投入,形成投入决策依据。在明确项目目标和范围的基础上,通过精准的内容估算,合理安排资源,为项目投入成本、人员选用提供有力依据。
资源筹备阶段
确定投入规模,设定核心团队架构,分组定责:基于规划的建设内容,分组设定研发负责人、关键设计以及明确组内所需人员要求,包括:缺口数量及技能要求,明确小组目标及职责。
拉通外部组织资源,快速甄选投入:基于团队设计的资源诉求,快速向公司发起资源申请诉求,拉通外部组织,收集近期可抽调投放的人力资源,针对人员进行及时的面试沟通甄选入组,锁定参与工期,规划滚动进项的时间节点,补充团队人力缺口。
设计阶段
交付里程碑分解切割:根据客户整体目标,设计切割出多个主要里程碑,每月输出匹配的建设成果,满足配合项目组客户领导阶段性成果汇报输出。
前后方紧密配合,迭代输出设计:方案设计人员前置客户侧,推动客户快速确认设计原型,后端主力研发协同配合前方完善设计,同步理解客户诉求并反馈实现意见。根据任务大小,按3天为一个单位快速迭代方案成果输出,通过前端人员的主动推动,加速与客户的交流互动,保障设计内容的准确性和修订及时性。
原型验证,快速印证方案设想:针对客户提出的关键核心技术场景,架构设计人员输出关键核心的原型,由后端研发进行快速研发验证可行性,通关验证结果印证设想,完成设计方案的输出。
研发阶段
持续改进和学习:研发启动初期,定立规则强调持续改进的思维和实践,包括:方案迭代回顾、团队培训和知识分享等,务求以最短的时间内拉齐相关研发人员的知识短板。每周定期探讨如何借助研发每日的进展反馈和数据分析来改进团队的工作流程和项目管理,争取前期项目管理快速进入正轨。
采用Scrum方法团队高效协作:小组负责人每日组织“站立会议”,协调沟通团队的工作进度,确定当日冲刺目标落实团队成员,成员分享进展、问题难点及寻求支持。每个阶段冲刺结束后,团队会进行回顾会议,评估过去的工作,找出需改进的缺陷。小组会议后再由项目主管组织组长间的联动会议拉通信息。通过鼓励团队成员之间的密切合作和互相支持,提高团队的凝聚力和效率。
平台产品能力复用,降低定制化研发投入:积极拉通公司级成熟存量产品的整合,复用产品能力,串联打通应用与平台产品的业务实现过程,基于28定律尽量提升配置化能力的覆盖度,结合小量的编码完成定制化需求,快速满足客户的功能诉求,缩减功能重构投入。通过产品技术整合,降低项目研发成本,提高项目投资回报。
创新技术引入,工具化提效:引入创新性的研发提效工具,如:低代码、WhaleBI等,分析筛选出与工具匹配度最高的用户功能需求,利用高效的工具辅助实现,快速构建平台应用界面,实现产物输出品质一致,有效腾出精锐前端力量投放到其它复杂功能研发任务中。
就绪阶段
业务数据预置,降低业务交付复杂度:结合客户提供的业务场景,提前预置所需的配置数据,如:流程、参数、采集对象、性能及告警监控指标等。确保软件交付时的业务配置数据完备,开箱后交由实施人员通过简单的配置调试则可快速接入使用。
出厂版本部署演练,输出稳定的可快速交付版本:通过多轮次的环境部署演练,沉淀整理出快速部署搭建的脚本,并加载到ZCM/Sims等环境部署工具上,实现预置的环境配置及对应基座部署版本。借助反复实战演让交付人员清楚熟悉部署过程,了解常见问题,积累经验。
总结交付手册,用于指导快速开局业务加载:通过交付人员的实践演练及测试人员的日常使用,沉淀出完整齐备的交付文档资料,如:部署、业务配置、调试的标准动作,用于指导现场项目快速交付部署,完成必要业务配置及内部调试,有效确保产品交付落地顺利。
测试阶段
知识就绪,提前熟悉规划功能:测试人员从设计阶段中后期介入,熟悉了解版本规划所需的功能及业务场景。前期设计人员每周进行1~2轮功能知识培训及问题答疑,快速提升测试人员对项目业务功能的理解,提升满足从业务视角的整体场景去驱动进行测试,而非仅停留在功能可用性的验证层面。
场景联合设计,制定测试目标:核心设计人员牵头核心业务场景设计,测试人员配合测试功能范围点的覆盖确认,共同制定测试计划和预期测试目标,避免测试在验证过程中对成品内容理解出现分歧偏差,影响进度及质量。
测试问题负责人点对点跟踪,快速扑灭:测试问题每日由测试人员统一汇总到问题跟踪表,由模块小组负责人分析后跟测试人员进行解答,制定bug改进计划及复测时间安排,保障bug修复响应及时。
用户参与和反馈循环:强调用户参与的重要性,每周对测试就绪的版本功能,通过例会给项目用户进行相关演示和反馈收集,建立有效的用户反馈循环机制,快速调整和优化产品功能,避免在里程碑积压大量成果去演示,产生大量偏离返工。
综上所述,基于敏捷的思路结合软件交付的几个重要阶段环节的实践策略,可以一定程度上有效帮助我们解决突发项目所面对的困境,其中心思想做法归纳来说,主要还是围绕以人为中心的快速沟通、复杂分解、快速迭代、快速反馈、快速整合及提前就绪等方面进行处理。
结语
成功的软件系统落地离不开高效的软件交付组织管理,对于突发交付项目的重要性更是不言而喻。敏捷交付的方法思想可以帮助团队更快地响应变化,更快地适应新的要求,并更快地交付可用的产品,通过快速迭代和反馈,帮助团队在项目中更快地发现问题并及时解决,更好地管理风险,从而确保项目的成功。
相关文章:
浅谈基于敏捷开发交付应对突发项目
软件项目开发的全过程是一个很大的范畴,从确定需求,到编码设计,到集成发布,到运维、运营、设计方方面面。在这个过程中,交付过程是非常关键的,因为它影响着软件的质量、稳定性和用户体验。 在当今竞争激烈的…...
1.工具-VSCode有哪些常用快捷键
题记 记录一些vscode的常用快捷键 基本编辑 Ctrl C:复制选定内容。Ctrl X:剪切选定内容。Ctrl V:粘贴剪贴板内容。Ctrl Z:撤销上一步操作。Ctrl Shift Z:恢复上一步操作。Ctrl D:选择下一个匹配项…...
行业模型应该如何去拆解?
行业模型应该如何去拆解? 拆解行业模型是一个复杂的过程,涉及对整个行业的深入分析和理解。下面是一些步骤和方法,可以帮助你系统地拆解行业模型: 1. 确定行业范围 定义行业:明确你要分析的行业是什么,包括…...
【开题报告】基于微信小程序的签到打卡系统的设计与实现
1.研究背景与意义 考勤管理是企业日常管理的重要内容之一。随着企业规模的扩大和员工数量的增加,传统的考勤管理方式已经不能满足需求。而基于微信小程序的签到打卡系统可以提供方便快捷的签到打卡服务,为企业管理人员提高工作效率和员工考勤管理提供了…...
1.写一个算法模型以及python算法工程化步骤
生成一个 PT(Perceptual Tokenizer)模型的步骤如下: 准备数据集:首先,你需要准备一个用于训练 PT 模型的数据集。这可以是一个包含大量文本数据的语料库。 数据预处理:对数据进行预处理以准备训练。这可能…...
物联网AI MicroPython传感器学习 之 GC7219点阵屏驱动模块
学物联网,来万物简单IoT物联网!! 一、产品简介 LED-8 * 32点阵屏显示板由 4 块单色 8x8 共阴红色点阵单元组成,通过 SPI 菊花链模式将多块显示屏连接后可以组成更大的分辨率显示屏幕,任意组合分辨率。可用于简单仪表显…...
MySQL中查询重复字段的方法和步骤是怎样
示例 accountinfo 表数据如下: 场景一 单个字段重复数据查找 & 去重 我们要把上面这个表中 单个字段 account字段相同的数据找出来。 思路 分三步 简述: 第一步 要找出重复数据,我们首先想到的就是,既然是重复,…...
怎样才能去除视频中的背景音乐,保留人声?
做视频剪辑,二次创作的朋友,需要去除视频中的背景音乐,保留人声;或者去除人声,保留背景音乐。如果请身边做视频的朋友帮忙,可有时不能沟通到位,完成后的效果并不是很理想,就很尴尬了…...
【C语言程序设计】--C语言(一)计算机思维导论
控制台输出中文乱码问题解决: ref:https://blog.csdn.net/ymzhu385/article/details/121797080 基本数据类型 我们的程序离不开数据,比如我们需要保存一个数字或是字母,这时候这些东西就是作为数据进行保存,不过不同的数据他们的…...
三、git信息泄露
一、git信息泄露 解释:Git信息泄露是指通过公开或错误地配置版本控制系统Git,导致敏感数据(例如API密钥、数据库密码、个人信息等)被泄露到公共代码仓库或其他未授权的访问者手中。通俗来说,在公网暴露类似http://127…...
第 368 场 LeetCode 周赛题解
A 元素和最小的山形三元组 I 前后缀操作:求出前后缀上的最小值数组,然后枚举 j j j class Solution { public:int minimumSum(vector<int> &nums) {int n nums.size();vector<int> l(n), r(n);//l[i]min{nums[0],...,nums[i]}, r[i]mi…...
Qt中QFile、QByteArray QDataStream和QTextStream区别及示例
在Qt中,QFile、QByteArray、QDataStream和QTextStream是常用的文件和数据处理类。 主要功能和区别 QFile: QFile是用于读写文本和二进制文件以及资源的I/O设备。可以单独使用QFile,或者更方便地与QTextStream或QDataStream一起使用。 通常在…...
【操作系统】32进制小数转16进制
要将32进制的小数转换为16进制,可以按照以下步骤进行: 将32进制小数转换为10进制。可以使用上述提到的方法,将32进制小数转换为对应的10进制数。 将10进制数转换为16进制。使用常规的方法将10进制数转换为16进制数。可以将10进制数不断除以1…...
C#实现数据导出任一Word图表的通用呈现方法及一些体会
疲惫的修改 应人才测评产品的需求,导出测评报告是其中一个重要的环节,报告的文件类型也多种多样,其中WORD输出也扮演了一个重要的角色。 实现方法比较简单,结合分析结果数据,通过WORD模板文件进行替换输出。在实现的…...
2023-10 字节跳动面试整个过程 golang营销服务开发岗位
面试整个过程大约1个小时回答的中规中矩吧 很多问题回答的不具体 难受死我了非常简单的算法题下面列出来了面试步骤这里面有一点就是面试官本来想问问我数据结构这一块的问题 但是我说不太熟悉 他就没问了 1. 简单介绍个人信息 略2. 介绍简历上的项目 略3. 什么是分布式事务 主…...
Java类名的命名规范
Java中的类名必须以字母或者下划线开头,不能以数字开头。 类名的每个单词的首字母必须大写,这被称为帕斯卡命名法。 此外,类名不能使用关键字或保留字,不能使用数字除了_和$之外的任何符号,中间不能添加空格。 如果…...
【c++Leetcode】141. Linked List Cycle
问题入口 思想:Floyds Tortoise and Hare 这个算法简单来说就是设置一个慢指针(一次移动一个位置)和一个快指针(一次移动两个位置)。在遍历过程中,如果慢指针和快指针都指向同一个元素,证明环…...
Visa股票仍然值得投资
来源:猛兽财经 作者:猛兽财经 总结: (1)尽管Visa(V)的估值高于市场平均水平,但仍值得买入。 (2)Visa拥有强劲的基本面,销售额和每股收益一直在稳定增长,股息…...
【Android知识笔记】RecyclerView专题
RecyclerView工作流程 RecyclerView 的使用方法简单回顾: // 1. 添加gradle依赖 implementation androidx.recyclerview:recyclerview:1.1.0// 2. 布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http:…...
从头开始使用 KNN 进行 KNN 和 MNIST 手写数字识别的初学者指南
一、说明 MNIST (“修改后的国家标准与技术研究所”)是事实上的计算机视觉“hello world”数据集。自 1999 年发布以来,这个经典的手写图像数据集一直作为分类算法基准测试的基础。随着新的机器学习技术的出现,MNIST 仍然是研究人…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
