【DEVOPS】需求跟踪管理全面落地
0. 目录
- 1. 现状/背景
- 2. 需求管理存在的问题
- 3. 改进思路/措施
- 4. 所谓"禅道尚未普及/铺开"
- 5. 最后
- 6. 相关
1. 现状/背景
近期又被领导问到"如何对项目过程中的需求进行量化和跟踪管理"。这真是一个狗皮膏药似的问题,反反复复地,隔一段时间就得被再次提及。
究其原因,除了过往在传统软件行业中技术团队的发展(现状篇),【DEVOPS】基于禅道 - 重构研发协作流程分别进行过总结的背景之外:
- 我们的DEVOPS改良推进路线风格属于彻底的自下而上。除非拿出切实的,已经试点成功的,能够被直观感受到好处的改良结果,领导才会进行明确的站台支持。
- 上一条属于客观背景,那么这一条就属于自身不足了 —— 一直以来向上管理意识有但是不多。没有做好成果汇报和信息同步,同时缺少宣讲和对外输出。于是出现"我们觉得时机早已成熟,但是领导层对此知之甚少,进而对于改良的推进犹犹豫豫,畏首畏尾"。
本文接下来的部分就是解决上面提出的这两个问题,解释:为什么我们认为现在时机已经成熟,为什么存在一种在没有太大阻力,不放弃底线的情况下,能够将现代化项目管理流程推行下去的可能性。
注:以下内容有个前提,就是如【DEVOPS】基于禅道 - 重构研发协作流程,组织内部已经有了成功的样例。
2. 需求管理存在的问题
以需求为抓手,是项目管理过程中跟踪项目进度,判断风险,量化各个岗位贡献值的基本方法和思路。
但是现在的问题正是,记录需求的变更过程,以提供客观数据去反映各方的工作量,这部分工作没有人做,一是没经验,二是没意愿,而领导出于各类原因始终无法下定决心将这份职责指定给哪个角色。 于是无尽的扯皮在不同的项目组内接连上演:
- 产品说研发效率太低;
- 研发说产品的需求总是变来变去。
- 扯皮的时候"双手赞同要搞标准化项目管理,我要证明自己的清白",但一旦摆出真的要进行改进的架势时候,各种困难就出来了——哎呀本来就很忙了,哪来的时候记录这个。也就是"这个东西是很重要,但是凭什么要我来做?"
于是又绕回了过往的惯性老路 —— 试图通过降低标准/无限倒退的方式来让规范/改良能够执行下去。
但是有些时候,对于有些已经是基本要求,没有后退之路的底线,这个思路并不适用。
还是以需求的管理为例,对需求进行持续跟踪的前提是有人去记录各个版本的内容,并且建立它们之间的联系,工具只是可以帮助我们减轻这部分工作量,但"对需求进行持续跟踪"这项工作本身最终的质量以及相关方的满意度,还是需要人来把握的。如果相关方连这个都不愿意做,或者糊弄着做,那么我们最终的目的很难达成。
3. 改进思路/措施
所谓"工作量不会消失,只会转移",正如DEVOPS并不是消除了工作量,而只是将其由人工转交给了机器,项目管理中的"对需求进行持续跟踪"这件事情现在既然不能依靠于产品和相关售前/需求分析人员,那么我们就下移一步,交给有经验的研发团队来主导或占据关键节点,该项目团队的原有其它人员进行辅助填充,让有经验的研发团队推着其他人来适应这个操作流程。
我们来看看为什么这个移交存在可行性:
-
我们推进DEVOPS就是使用机器操作逐步代替人工操作,在此过程中借助机器操作特点借此来构建标准的工作流程,最终保住产品质量的底线,同时也显著减轻人员工作压力和心智负担。
-
并且我们在过去几年一直也在推进技术栈沉淀,实现解决方案的标准化,减少人员在所谓"技术难点"上的精力投入。
-
在禅道推进上,过去几年我们分别在行业部门和基础平台部门结合各自当下现状,对于禅道标准化研发流程进行了自适应改造/本地化改造,做到了真正的落地。
3.1 这个"真正的落地"的第一层含义: 本地化改造后的流程已经实现了在无需过多外力/监督介入情况下的自运转。
3.2 这个"真正的落地"的第二层含义: 两个部门内部对于禅道的理解和使用完全不一样,而且和禅道官方推荐的标准化项目管理流程也是差别甚大。
原有团队没有人愿意,也没有一个额外的精力去监督和检查"对需求进行持续跟踪",那就让被解放出精力,具备了基本需求管理流程经验的研发人员,以及具备禅道本地化改造流程经验负责人来作为主导/关键节点,引导该项目内的需求跟踪管理流程,原项目组的其它人作为辅助参与进来,在这个试点过程中:
- 实现对当前项目"对需求进行持续跟踪"的基本要求;
- 同时培养/熏陶出一批具备基本素养的产品/需求分析人员;
- 并且迭代出一个针对性的流程,既兼顾该业务线/该团队内相关人员的既有操作习惯,又满足基本的标准项目管理流程要求,为之后的流程优化打下基础。
4. 所谓"禅道尚未普及/铺开"
所谓"禅道尚未普及/铺开"正是以上改良措施出现的背景;而且如果禅道已经铺开,本文背景都已经不存在了,也就是不会出现需求变更导致的扯皮问题。
我们提出的对策正是为了应对"禅道尚未普及/铺开"情况。
可以说现在这批人是幸运的,至少公司给了他们这个过渡的阶段。一旦这个流程成型,这样的人就没有机会了。因为到时候你要不是白纸一张,要不就是已经知晓这些流程。一张涂满涂鸦的纸,我们已经没有这个耐心去矫正了。
5. 最后
- 不要再讨论"要不要用",而是"怎么用"? 始终在这起点徘徊,一辈子都到不了。
- 我们已经完全接受"慢慢来"这个现实,是因为我们承认最终还是人决定了产品的质量,所以我们愿意将这个过程慢下来,克服人性中急躁,急功近利的弱点,拾阶而上,一步步地向目标进发,在这个过程中把人培养出来,把事情做成。
- 我们并非要求当下马上执行以上试点,我们只是提供一种可能性,一种如何在一个四面楚歌的情况下,让好的变化发生。(相较于过往的改良推进,当下其实已经好多了,毕竟现在已经再是0到1了)
6. 相关
- 【DEVOPS】基于禅道 - 重构研发协作流程
- 【DEVOPS】DevOps推进过程中的一些最佳实践
- 阿里如何定义团队的研发效能?
- 《UNIX编程艺术》
- 【DEVOPS】DevOps推进过程中的一些最佳实践3
- 禅道官方推荐的标准化项目管理流程
相关文章:
【DEVOPS】需求跟踪管理全面落地
0. 目录 1. 现状/背景2. 需求管理存在的问题3. 改进思路/措施4. 所谓"禅道尚未普及/铺开"5. 最后6. 相关 1. 现状/背景 近期又被领导问到"如何对项目过程中的需求进行量化和跟踪管理"。这真是一个狗皮膏药似的问题,反反复复地,隔一…...
算法修炼Day57|647. 回文子串 ● 516.最长回文子序列
LeetCode:647. 回文子串 647. 回文子串 - 力扣(LeetCode) 1.思路 暴力思路见对应代码… 动规解法:画图推导动规公式,当前状态由左侧和左下角推出,所以首层应该采用倒序的方式,内部采用正序的方式。 2.…...

呈现数据的精妙之道:选择合适的可视化方法
在当今数据时代,数据可视化已成为理解和传达信息的重要手段。然而,选择适合的数据可视化方法对于有效地呈现数据至关重要。不同的数据和目标需要不同的可视化方法,下面我们将探讨如何选择最佳的数据可视化方法来呈现数据。 1. 理解数据类型&a…...

数据结构(Java实现)-java对象的比较
元素的比较 基本类型的比较 在Java中,基本类型的对象可以直接比较大小。 对象比较的问题 Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较 默认情况下调用的就是equal方法,但是该方法的比较规则是:没有比较引用变量引用对象的…...

Wolfram Mathematica 13 for Mac 数学计算工具
Wolfram Mathematica for Mac是一款功能强大、划时代的科学计算软件。它结合了数字和符号计算引擎、图形系统、编程语言、文本系统以及与其他应用程序的高级连接,在许多功能方面处于世界领先地位,截至2009年,它是使用最广泛的数学软件之一。人…...

系统架构设计高级技能 · Web架构
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 Web架构 一、Web架构介绍1.1 Web架构涉及技术1.2 单台服务…...

再写CentOS7升级OpenSSL-1.0.1U
本文在CentOS7.4以及TencentOS 2.4上测试通过。 原系统自带OpenSSL 1.0.2k-fips。 编译安装方法跟之前的没啥区别。 从官网下载1.0.1u版https://www.openssl.org/source/ 使用tar解包 tar xfz openssl-1.0.1u.tar.gz 依次执行如下: cd openssl-1.0.1u ./con…...

HBase--技术文档--基本概念--《快速扫盲》
官网 Apache HBase – Apache HBase™ Home 阿里云hbase 云数据库HBase_大数据存储_订单风控_数据库-阿里云 云数据库 HBase-阿里云帮助中心 基本概念 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可…...

如何利用SFTP协议远程实现更安全的文件传输 ——【内网穿透】
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 安装openSSH1.1 安装SSH1.2 启动ssh 2. 安装cpolar2.1 配置termux服务 3. 远程SFTP连接配置3.1 查看生成的随机公…...

深度学习8:详解生成对抗网络原理
目录 大纲 生成随机变量 可以伪随机生成均匀随机变量 随机变量表示为操作或过程的结果 逆变换方法 生成模型 我们试图生成非常复杂的随机变量…… …所以让我们使用神经网络的变换方法作为函数! 生成匹配网络 培养生成模型 比较基于样本的两个概率分布 …...

sql入门-多表查询
案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…...

软考A计划-网络工程师-必考知识点-上
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...
kafka复习:(17)seekToBeginning的用法
从分区的开始进行消费,因为kafka会定期清理历史数据,所以分区开始的位移不一定为0。seekToBeginning只是从目前保留的数据中最小的offset进行消费 package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consume…...

C# textBox1.Text=““与textBox1.Clear()的区别
一、区别 textbox.Text "" 和 textbox.Clear() 都可以用于清空文本框的内容,但它们之间有一些细微的区别。 textbox.Text "": 这种方式会将文本框的 Text 属性直接设置为空字符串。这样会立即清除文本框的内容,并将文本框显示为空…...

CnetSDK .NET OCR SDK Crack
CnetSDK .NET OCR SDK Crack CnetSDK.NET OCR库SDK是一款高度准确的.NET OCR扫描仪软件,用于使用手写、文本和其他符号等图像进行字符识别。它是一款.NET OCR库软件,使用Tesseract OCR引擎技术,可将字符识别准确率提高99%。通过将此.NET OCR扫…...
Python最新面试题汇总及答案
一、基础部分 1、什么是Python?为什么它会如此流行?Python是一种解释的、高级的、通用的编程语言。Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。它之所以受欢迎,就是因为它具有简单易用的语法 2、为什么Pytho…...

设计模式(单例模式,工厂模式),线程池
目录 什么是设计模式? 单例模式 饿汉模式 懒汉模式 工厂模式 线程池 线程池种类 ThreadPoolExcutor的构造方法: 手动实现一个线程池 什么是设计模式? 计算机行业程序员水平层次不齐,为了让所有人都能够写出规范的代码,于是就有了设计模式,针对一些典型的场景,给出一…...
在mybatis中的mapper.xml中如何使用parameterType实现方法单个传参,对象传参,多参数传参.
在MyBatis的mapper.xml文件中,可以使用parameterType属性来指定方法的参数类型。parameterType属性用于指定传递给映射方法的参数类型,这将影响到MyBatis在映射方法执行时如何处理参数。 以下是三种不同情况下如何在mapper.xml中使用parameterType实现方…...

No120.精选前端面试题,享受每天的挑战和学习
文章目录 浏览器强制缓存和协商缓存cookie,localStorage、sessionStoragejs闭包,原型,原型链箭头函数和普通函数的区别promise的状态扭转 浏览器强制缓存和协商缓存 浏览器缓存是浏览器用于提高网页加载速度的一种机制。浏览器缓存分为强制缓…...
c# 访问sqlServer数据库时的连接字符串
//sql server 身份验证的场合, 连接字符串 private string ConnstrSqlServer "server服务器名称;uid登录名称;pwd登录密码;database数据库名称"; //windows 身份验证连接字符串 private string ConnstrWindows "server服务器名称;database数据库…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...