你不得不懂的IT知识-《敏捷项目管理》

news2024/11/23 20:13:28

 

       国林哥在IBM时,几乎每天都会收到关于“敏捷”相关的邮件,公司鼓励我们去学习邮件里的知识,参加敏捷相关的认证和培训。刚开始我和大多数同事一样不管不顾,后来随着PBC里要求加上成长目标,比如要获得一个认证,我们就不能再回避这类邮件,并逐渐试图弄清楚它的"底层逻辑“,并在公司参加”Agile“相关认证,并在实际项目中运用敏捷实践。

       必须感谢蓝色巨人IBM给自己带来的敏捷文化,在服务华为研发管理时,我就讲敏捷相关的理念和实践带到项目中,并逐渐从0到1组建了一只近100人的研发团队。记得当时多次在团队分享《敏捷项目管理实践》这门我自己编写的PPT材料,我们团队的小伙伴也逐渐理解其中的意义,也清楚明白我们作为敏捷团队的要求,组织的工作效率比较高,大部分人干活都很主动,上班时打满鸡血,摸鱼者越来越少,为华为”活下去“贡献一点微薄力量。

       今天我就来讲讲敏捷项目管理的基础知识,为即将或已经踏入技术管理的小伙伴做一个抛砖引玉的碰撞,以期共同进步。

       首先,项目管理是什么? 我们都知道,项目管理无处不在,项目管理是运用管理的知识、工具、技能和技术于项目活动上,来解决项目的问题或达到项目的需求,通过周密的计划,管理好项目中的人、事、物,达成项目目标。比如结婚,旅游都涉及项目管理,需要你的周密计划,组织。

        其次,敏捷开发的定义是什么?敏捷开发(Agile Development) 是一种以人为核心、迭代、循序渐进的开发方法,是拥抱变化的开发流程。

        再次,敏捷项目管理的定义是什么?敏捷项目管理规划和指导项目流程的迭代方法。 与敏捷软件开发一样,敏捷项目是在叫做迭代的小型部门中完成的。 每个迭代都由项目团队审查和评判;从迭代的评判中获得的信息用于 决定项目的下一个步骤。每个项目迭代通常是安排在两周内完成。

        传统的项目管理面临哪些挑战?比如:缺乏明确的目标、目的,组织与项目目标不一致;需求的不明确,不完整,与不断的变更;缺乏最终用户的参与;不明确的职责;没有做好计划等等。

       让我们来看看敏捷开发宣言:个体与交互高于流程和与工具;工作的软件高于详尽的文档;
客户合作高于合同谈判;响应变化高于遵循计划。

      基于敏捷开发宣言,我们总结出敏捷宣言遵循的12条原则:

      1. 我们最重要的目标,是通过持续不断地,及早交付有价值的软件是客户满意。
      2. 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
      3. 经常地交付可工作的软件,相隔几星期或者一个月,倾向于采取较短的周期。 
      4. 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
      5. 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支持,辅以信任,从而达成目标。
      6. 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。 
      7. 可工作的软件是进度的首要度量标准。
      8. 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
      9. 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
      10. 以简洁为本,它是极力减少不必要工作量的艺术。
      11. 最好的架构、需求和设计出自自组织团队。 
      12. 团队定期的反思如何能提高成效,并依此调整自身的举止表现。

       项目管理铁三角是什么?时间,成本,范围。所谓“铁三角”,指的是三者中任意一方的变动都会对其他二者产生影响。项目管理的目标是平衡三者的关系,使之达到最佳的效果。各要素相互牵制,而对需求的管理就至关重要,否则就会带来时间,成本,范围的失控。因此,我们需要做好需求统一管控,实现一个”刚刚好“的交付。

     传统开发面临的问题有哪些呢?

       1. 交付周期长:往往是6-12个月甚至更长;

       2. 软件质量差:经常为了赶着上线而牺牲质量;

       3. 团队士气弱:员工积极性不高,相互抱怨产生隔阂;

       4. 按时发布低:长期累积大量任务债务,在临近交付日期时很难完成;

       5. 沟通效果差:员工经常因为小事情不沟通或沟通缓慢,导致进度延迟;

       6. 进度延期久:工作计划的估算靠拍脑袋决定,外行指挥内行。

      传统的项目管理追求”一次把事情做完“,而敏捷项目管理追求增量交付,通过故事分割,多次把事情迭代完成,过程中通过优先级和工作量的评审,与客户在各个版本阶段达成预期。

 

      为什么要做敏捷呢?需求为啥要变化呢?不能一开始多花点力气,想明白吗?

     首先, 项目需求的细节无法提前全都想明白,在做得过程中才逐渐清晰。项目管理过程中的不确定性太多,可能连用户自己都没意识到自己到底想要的是什么。
     其次, 世界变化太快,原本有价值的东西,随着项目的推进,可能会变得不那么有价值了。

     那么,敏捷软件开发的优势有哪些呢? 

     1. 快速交付:1-4周迭代结束即可,并交付可运行的软件;
     2. 降低风险:短周期迭代持续反馈,提高预见性;
     3. 适应变化:小步快跑,快递验证产品需求及调整方向;
     4. 质量更好:持续集成及频繁测试,保证代码质量更高;
     5. 持续改善:迭代结束后进行回顾,频繁检查团队动向;
     6. 满意度高:高ROI的需求快速交付,早期实现商业价值。

      敏捷项目管理的特点有拥抱变化,快速试错,全民阶段性测试。不仅快,而且离用户近!

      敏捷推崇的工作方式是通过5-9人的跨职能小团队,通过2-4周的迭代周期,分批次增量交付需求,通过小团队在短时间内做出一小块需求,并有规律的集成组装形成整体功能。

     那么,什么项目适合传统项目管理,什么项目适合敏捷呢?

     如果需求和技术明确,就适合采用传统项目管理;如果需求和技术都不明确,属于复杂类型的项目,就适合敏捷。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/872113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么要试用CRM系统?有什么优点?

对于那些正在进行CRM选型的企业来说,想要了解一款CRM系统是否好用,亲自试用无疑是最好的方法。那么,有没有可以免费试用的在线CRM系统 CRM系统免费试用的好处 体验产品功能:您可以亲自操作和测试CRM系统的各项功能,如…

从一个GPU到多个GPU

在多GPU运行应用程序时,需要正确设计GPU之间的通信,GPU间数据传输的效率取决于GPU是如何连接在一个节点上并跨集群的 在多GPU系统里有两种连接方式 多GPU通过单个节点连接到PCIe总线上 多GPU连接到集群中的网络交换机上 /* * 本示例演示了如何使用 Open…

【Vue-Router】路由模式

1. WebHashHistory index.ts import { createRouter, createWebHistory, RouteRecordRaw, createWebHashHistory } from "vue-router";// 路由模式 //vue2 mode history -> vue3 createWebHistory //vue2 mode hash -> vue3 createWebHashHistory //vue2 m…

电池的正极是带正电?

首先说明结论:电池正极带正电,负极带负电。 一个错误的实例: 如果说电流是从电池正极流动到电池负极,那么电子就是从负极流动到正极,那么正极就是带负电。----这个说法是错误的。这是因为,根据那么很出名…

verilog学习笔记5——进制和码制、原码/反码/补码

文章目录 前言一、进制转换1、十进制转二进制2、二进制转十进制3、二进制乘除法 二、原码、反码、补码1、由补码计算十进制数2、计算某个负数的补码 前言 2023.8.13 天气晴 一、进制转换 1、十进制转二进制 整数:除以2,余数倒着写 小数:乘…

难解的bug

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord 【Android TimeCat】 解决 context.startforegroundservice() did not then call service.startforeground() | XiChens Blog http://www…

【Linux从入门到精通】文件I/O操作(C语言vs系统调用)

文章目录 一、C语言的文件IO相关函数操作 1、1 fopen与fclose 1、2 fwrite 1、3 fprintf与fscanf 1、4 fgets与fputs 二、系统调用相关接口 2、1 open与close 2、2 write和read 三、简易模拟实现cat指令 四、总结 🙋‍♂️ 作者:Ggggggtm 🙋‍…

JAVA多线程和并发基础面试问答(翻译)

JAVA多线程和并发基础面试问答(翻译) java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序…

Shell编程之条件测试、if语句、case语句

条件语句 一、条件测试1.1 测试命令1.1 文件测试1.2 整数比较1.3 字符串比较1.4 逻辑测试1.4.1 逻辑与 &&1.4.2 逻辑或 || 1.4.3 组合应用1.5 多个命令组合执行 ( ) { } 二、if语句2.1单分支结构2.2 多分支结构2.4 if语句练习2.4.1 单分支2.4.2 简单的交互式分数反馈 三…

Shell编程之正则表达式(非常详细)

正则表达式 1.通配符和正则表达式的区别2.基本正则表达式2.1 元字符 (字符匹配)2.2 表示匹配次数2.4 位置锚定2.5 分组 和 或者 3.扩展正则表达式4.部分文本处理工具4.1 tr 命令4.2 cut命令4.3 sort命令4.4 uniq命令 1.通配符和正则表达式的区别 通配符一般用于文件…

部署Springboot项目注意事项

步骤 步骤 1:将数据库内容在云服务器上的数据库部署一份 我使用mariadb;会出现一些不兼容现象;我们需要把默认值删掉 2:配置文件你得修改地方 a:linux是磁盘区分(像我自己项目用来储存验证码的文件我们得换这个配置;…

DoIP诊断入门

简介 DoIP(Diagnosis over Internet Protocol)是一种用于车辆诊断的网络通信协议。它基于现代互联网技术,允许通过以太网或IP网络进行车辆诊断和通信。 DoIP的背景是现代车辆中使用的电子控制单元(ECU)数量不断增加&…

利用OpenSSL实现私有 CA 搭建和证书颁发

利用OpenSSL实现私有 CA 搭建和证书颁发 一、私有 CA 搭建1. 安装openssl2. 配置 openssl3. 生成 CA 自己的私钥4. 生成 CA 自己的自签证书5. 验证自签证书 二、向私有CA申请证书流程1. 生成应用私钥文件2. 根据应用私钥生成证书申请文件3. 向CA请求颁发证书4. 验证应用证书5. …

PS/LR2024专用智能磨皮插件Portraiture提高P图效率

Portraiture 4智能磨皮插件支持Photoshop和Lightroom!Portraiture是一款智能磨皮插件,为Photoshop和Lightroom添加一键磨皮美化功能,快速对照片中皮肤、头发、眉毛等部位进行美化,无需手动调整,大大提高P图效率。全新4…

Wlan——无线服务集和AP的基本概念以及AP的配置

目录 WLAN服务集的基本概念 AP的基本概念 AP的分类 AP模式的切换 胖(FAT)AP介绍 胖AP的工作模式 接入模式和路由模式的区别 胖AP的组网方式 瘦(FIT)AP介绍 瘦AP的工作模式 瘦AP的组网方式 胖AP和瘦AP的区别 AP的配置…

(leecode)错误的集合

最近听到的,还可以,试试吧~ 题目: 示例: 提示: 题解: 思路: 将数字大小的位置,然后遍历每个位置,大小为0的是缺失数字,大小为2的是重复数字 int* findErro…

2022年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:加一 输入一个整数x,输出这个整数加1后的值,即x1的值。 时间限制:1000 内存限制:65536 输入 一个整数x(0 ≤ x ≤ 1000)。 输出 按题目要求输出一个整数。 样例输入 9 样例输出 10 以下是使用C语言编写的解决方案…

湘大 XTU OJ:1406 String Game、1098 素数个数 题解(非常详细)

1406 String Game 一、链接 1406 String Game 二、题目 题目描述 Alice和Bob正在玩一个基于字符串的游戏,一开始,Alice和Bob分别拥有一个等长的字符串S1和S2,且这两个字符串只包含小写字母。 在每个回合中,Alice和Bob必须分…

【Vue-Router】路由入门

路由(Routing)是指确定网站或应用程序中特定页面的方式。在Web开发中,路由用于根据URL的不同部分来确定应用程序中应该显示哪个内容。 构建前端项目 npm init vuelatest //或者 npm init vitelatest安装依赖和路由 npm install npm instal…

Python Opencv实践 - 图像旋转

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#图像旋转 #Opencv中的旋转,首先通过cv.getRotationMatrix2D获得旋转矩阵 #cv.getRotationMatrix2D(center,ang…