[原创] 敏捷软件开发管理实践 (三) ——尽可能并行工作

【原创】基于禅道的敏捷开发管理实践 以下是我在一个长期项目研发过程中采用敏捷思想进行项目开发管理的成功实践,供大家参考   一、项目背景     1、这是一个长期维护,需要不断扩展功能的O2O平台,系统本身包含多达13个子系统,且还在不断增加中 2、系统采用了“组件化架构”,各个组件之间实现了脱藕,可以各自单独扩展 3、开发资源严重匮乏,程序员严重不足,且其中能独立工作的程序员比例很低   阅读详情

作者:李文华
注:本文为原创,任何使用必须经得本人同意.



尽可能并行工作

1.1. 各种角色可以协同工作

       敏捷的特征就是要是使工作更加高效。很少有公司仔细考虑过项目成员在工作流程上的优化可以为项目提高多大的工作效率。但是,只要我们想一想,项目中的每个成员其实都是一颗能够独立计算并完成任务的CPU,那么我们是否会像IBM的网格计算专家一样去不断优化这些CPU的工作流程以达到一个新的世界记录呢?

       千万不要认为必须完成所有的需求后才能够开始开发,完成开发后才能开始测试。软件管理者应该要非常清楚,所有的项目成员都是可供利用的CPU资源,无论在项目的任何阶段,你都不应该让这些CPU资源过分闲置。  项目的工作推进要想CPU的流水线一样,不要形成顺序流程,而要尽可能并发开展,这样才能最大限度利用资源。

 

       需求分析还在进行,开发人员干什么呢?

       设计还在进行,需求人员可以干什么呢?测试人员又可以干什么呢?

        

       作者不是善于剥削劳动力的资本家,问这些问题是为了启发大家明白“人力资源”是非常富有弹性的东西,很多时候感觉“资源不足够”并不是真正的不足够,而要问问自己“是否让资源充分发挥了价值”。

        

       下面这张表是作者提供给大家参考的一个敏捷工作计划。在这个计划里,作者要强调几点:

1.         软件项目中存在很多隐性的工作,要尽量在项目立项的时候就考虑到,并排入计划。比如培训,制定规范,组织公用工具开发等

2.         清晰的角色划分,尽量明确每个人的工作职责,会使整个团队工作得更积极、有序。

3.         不要忽略了协调的层次,项目组内,部门内,跨部门都需要良好的沟通渠道和协调资源。

 

阶段      角色

需求师/人机工程师

架构师/设计师

开发工程师

测试工程师

需求调研

l         与客户沟通

l         编写用例和需求规格说明(功能需求、非功能需求)

l         培训(业务背景)

l         组织需求评审

l         架构设计

l         与需求师确认需求

l         构造原型

l         培训(工具使用指南、编码规范、环境搭建、调试指南、性能问题处理)

l         组织公用工具开发

l         参与需求评审

l         安装并熟悉工具

l         了解业务背景

l         培训和学习

l         开发公用工具

l         参与需求评审

l         列写测试计划

l         编写测试用例

 

分析/设计

l         持续确认需求

l         细化功能清单

l         细化逻辑检查清单

l         界面需求

l         参与设计评审

l         架构设计精化

l         模块概要和详细设计

l         编写接口文档

l         编写性能测试计划和性能保障计划

l         组织设计评审

l         参与设计评审

l         编写针对接口的单元测试

 

l         细化测试用例

l         准备测试环境

 

 

实现/测试

l         持续确认需求

l         检查功能实现

l         检查界面规范

l         代码走查(代码结构、接口、异常处理、性能瓶颈)

l         难点公关

l         微观性能测试

l         编码实现

l         对照逻辑检查清单编写单元测试

l         修改bug

l         参与技能培训

l         功能测试

l         宏观性能测试

l         集成测试

                  

                  

1.2. 始终做最该做的

让整个团队都可以尽可能地并行工作,这看起来似乎非常理想。但是要在项目管理实践中做到这一点,并不容易,需要整个团队有统一的价值观,并遵从一个工作原则,那就是“始终做最该做的”。

这里的“始终做最该做的”原则包括:

1.         依赖项优先

2.         接口优先

3.         关键路径优先

4.         广度优先

 

1.1.1.依赖项优先

       大家都知道,并行工作的关键就是要让每个任务处理尽可能没有依赖,这样每个任务就可以单独进行下去。但是,任务之间往往不可避免存在各种依赖项,依赖项使任务的执行变成了串行。

       在项目中,每个人每天的任务往往很多,这些任务中有些是独立的,早点完成还是晚些完成对别人没有影响。有些任务是被依赖的,如果自己不完成,他人也就不能完成。依赖项优先的原则就是要求整个团队的各成员树立一个意识:始终优先解决他人对自己的依赖项。一个这样做,还看不出效果;但是如果整个团队都能真正奉行这一原则并落到执行的实处,那么整个团队的协调工作量就会大为减少,整个团队也就会持续保持在较高的工作效率状态。

       案例:测试人员A等着需求人员B为其提供一个功能检查清单f 才好对某个模块进行有效测试。那么f 是A对B的一个依赖项。如果B手头的其他事都只影响自己的工作,这是时候需求人员B应该优先完成f,以免测试人员A无法进行自己的工作。

       这里也有另外一个问题值得一提,那就是,每个人有应该清楚,如果自己的工作发生了依赖项,除了协调对方尽快去解决外依赖项外,还应该明白,自己绝对不应该就这么干巴巴等着。而应该切换去处理其他工作,一旦依赖项被解除,再切换回原来的工作。

 

 

1.1.2.接口优先

       尽管“接口”一词让面向对象的程序员理解起来更为容易,但是这里把这个概念推广。“接口”用来表达两个部分组合到一起的交接部件,可能是代码,也可能是文档。

       接口优先的原则就是强调要优先把双方的依赖项明确下来,并尽可能使之稳定。有了接口,双方遵从接口即可并行工作。接口优先是依赖项优先的特殊形式。

       接口优先要求:

A.      尽早定接口

B.      谨慎定接口,提供方和使用方共同确定接口,并要求接口评审

C.      接口变更要受控

从实际项目中看来,围绕接口制定太晚,而导致返工的现象十分突出。一个典型的场景就是等到项目集成了才发现接口并不符合需要,而这个时候修改接口往往伤筋动骨,重构的代价很大。

另外,就是制定接口需要很丰富的经验,要充分考虑到接口将来存在的变更可能。可是实际项目中经常看到的一个现象是:接口的使用方往往一开始并不关心接口的具体细节,接口由提供方自行制定,而到了集成阶段,接口的使用方才提出接口无法满足自己的需要,并要求接口提供方进行变更。大家应该非常清楚,这个时候的接口变更不仅要求接口提供方修改内部逻辑代码,更大的隐患是牵一而动全身,一个接口的变更会引起所有接口使用者的代码调整。

作者比较建议推行“接口评审”制度,评审会上必须要求接口的制定方和使用方共同派代表参与,明确接口的需求和形式。这样做往往能够形成好的气氛:

第一,接口的使用方参与了接口的评审,有助于他仔细考虑自己的需求是否能够满足。

第二,接口的形式是经过使用方评审的,使用方要为日后接口的变更负责任。这样可以促使接口的使用方提前充分理清自己的需求。

第三,双方见面进行沟通,明确了相关人,便于日后工作中的协调处理。

 

1.1.3.关键路径优先

       学过图论的读者都知道关键路径的概念,项目管理理论也告诉我们,关键路径上的任何活动的推迟将使整个项目推迟。

         关键路径要求:

1.         项目管理团队需要清楚项目的哪些工作是关键路径

2.         项目管理团队要制定可行的计划保证这些关键路径的完成。

 

 

1.1.4.广度优先

       广度优先也是图论中的一个概念,表示在树搜索的时候优先从广度上处理。这里沿引过来表示始终要要优先分解任务,而不是处理任务。

考虑整个团队任务的并行处理效率,如果说任务A可以如下图分解为子任务A1,A2,A3,并且子任务A1可能继续分解为子任务A11,A12。团队中的每个成员应该这样处理:

       第一,考虑把任务A分解为几个子任务A1,A2,A3。

       第二,考虑如何处理任务A1,发现A1可以分解为两个子任务A11,A12。OK,这个时候不要钻进去处理A11或者A12,而是处理A2。发现A2只需要处理子任务A21。接下来去处理A3,把A3分解为A31和A32。

       第三,这个时候可以处理A11了,处理完A11就处理A12,玩了在处理A21等等。

      

       

       为什么要这样做?我想这是大家想知道的。原因如下:

1.         培养大家的大局观,不要急于钻进一个细节问题

2.         始终把能做的先做,比如分工

3.         先把任务从广度上划分,有利于在某个子任务遇到依赖项时切换到另一个任务去处理

有利于资源共享。任务先在广度上有了一个划分,当出现新的资源时,很容易把其分解的子任务分配出去,从而保证任务始终在并行处理的状态。

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script>
【精品原创】银行科技:探索适应金融数字化转型的敏捷开发体系 在强化团队内部沟通协作能力,在团队内部,最有效、效率最高的传递信息的方法,就是面对面的交流。产品负责人根据需求优先级,将产品待办列表中的需求规划至对应迭代,在迭代计划会议上与团队一起进行迭代评审,确定好当前迭代要完成哪些需求之后,即可对其分解,拆分成各类子任务给研发人员。通过构建跨职能、端到端的企业级敏捷组织,打破僵化的金字塔组织架构,逐步实现内部组织的高效运转,积极响应市场变化和客户需求。拓展知识广度,加强对业务的了解,激发潜能,拓展知识广度,充分挖掘存量人才潜力,培养复合型金融科技人才。 阅读详情

相关推荐

android 敏捷开发系列(三)——《环境部署》

书接上文,上次我们了解了敏捷开发的架构,但是利用我们普通的开发工具Eclipse的Ant构建是无法完成项目依赖等工作的,所以在开发之前我们需要准备好以下开发环境  maven + nexus + hudson + git 注:本文基本环境 服务端系统为ubuntu13.04,客户端WIN7 依次解释一下 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报

保定老狼的专栏 4342

敏捷开发下多团队并行开发模式

敏捷开发下多团队并行开发模式 徐景周 ...

jz_x的专栏 938

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 敏捷并行开发方法

      首先声明,此并行开发非指并行计算,而是指实践软件工程所总结的一些心得和做法。       敏捷并行开发方法,是利用软件构件技术等技术,以及平台+插件化开发技术整合而出的一种快速开发模式;并行是指产品在生命周期内,项目管理过程、项目研发过程和机构支撑过程“并行”开展,项目研发过程中各个阶段有限度“并行”开展。 并行开发       在传统的瀑布开发模式下,同一软件的多个阶段是顺序地...

weixin_33805557的博客 172

HUAWEI华为荣耀MagicBook MateBook B D E X 13 14 16 笔记本MateStation台式机原装Win10出厂Windows11系统

HUAWEI华为MateBookX原装出厂系统恢复原厂系统,型号:MACHC-WAE9LP、EUL-W29P、MACHR-W19L、MACHR-W29、MACHD-WFE9、MRGF-16、MACHR-W19BL、MACHD-WFE9Q、WT-W19、Mach-W19、Mach-W29、WT-W09、WT-W19、MACH-W29等。HUAWEI华为MateBookE原装出厂系统恢复原厂系统,型号:PAK-AL09、GK-W7X、GK-G58、GK-W76、DRC-W76等。

QQ17855069的博客 17万+

大模型事件抽取学习——论文学习笔记《LLMs Learn Task Heuristics from Demonstrations:......》

本篇博客介绍一篇发表在2024 ACL main上的文章:《LLMs Learn Task Heuristics from Demonstrations: A Heuristic-Driven Prompting Strategy for Document-Level Event Argument Extraction》 方向:大模型事件抽取 本篇博客为个人阅读论文的总结与笔记,在这里进行简单的分享 论文链接:https://arxiv.org/abs/

weixin_53751318的博客 1852

[原创] 敏捷软件开发管理实践 (一) ——让人的资源多起来

敏捷软件开发管理实践 (一) ——让人的资源多起来第1部分   开篇语         项目管理作为一门独立的学科,已经发展了很多年,并为实践提供了丰富的理论依据。而软件开发的项目管理,虽然也属于传统项目管理的范畴,但是由于软件工业本身的特点,很多在传统项目管理理论中被证明行之有效的理论和方法,拿到软件开发的项目实践中却常常达不到预期的效果。软件开发的项目管理与传统项目管理的这种差异究竟在

云雀的理想 2339

YOLOv8知识蒸馏实战:用BCKD和LD在自制数据集上分别提点1.63%和1.69%的保姆级教程

本文详细介绍了在YOLOv8模型上应用知识蒸馏技术(BCKD和LD方法)的实战教程,通过自制数据集实现性能提升1.63%和1.69%。内容涵盖环境配置、模型选择、BCKD和LD的具体实现及调参技巧,适合目标检测领域的开发者和研究者。

weixin_29082143的博客 245

IT项目管理(第二部分)

第四章-范围管理 什么项目的范围管理,其主要包括哪些过程? 编写工作约定书或工作说明书,主要包括哪些内容? 理解项目目标SMART的含义。 什么是WBS? 其设计方法有哪几种? 理解需求变更管理的过程。 如何范围管理的思想应用于人工智能技术为基础的IT项目中? ...

laixiangwei的博客 830

告别迷茫!新手如何从RTKLIB命令行程序入手,快速理解GNSS解算全流程

本文为GNSS新手提供RTKLIB命令行程序实战指南,重点介绍如何通过`rnx2rtkp`后处理解算工具快速掌握GNSS解算全流程。从环境搭建、程序编译到核心算法解析,帮助读者理解RTKLIB源码结构,并通过真实数据处理案例演示完整解算过程,是入门GNSS定位技术的实用教程。

weixin_42524226的博客 359

Win11下Android模拟器报HAXM未安装?三步搞定虚拟化配置(附终端命令)

本文详细解析了Win11下Android模拟器HAXM报错的解决方案,从虚拟化配置到终端命令实战。通过检查BIOS设置、调整Windows功能及执行PowerShell命令,三步搞定虚拟化配置问题,有效提升模拟器性能。特别针对Win11与HAXM的兼容性问题提供了专业指导。

weixin_29215815的博客 143

敏捷开发与个人管理

1、概论         敏捷开发,其实道理很简单,但是太多的事情是道理简单却做不到。         敏捷开发(Agile)的核心是去中心化,扁平化结构,拥抱变化,习惯不确定性,当然,还有最重要的迭代。 2、三种角色         在上面这张图中可以看到,在Scrum中有三种角色,产品负责人(scrum owner)、Scrum master和menbers。    

lyx的专栏 2338

腾讯云智后台开发实习面试全纪录(已offer)

腾讯云智后台开发实习面经

wenwenaier的博客 5903

敏捷实践指南

目录申明1. 引论2. 敏捷概述2.1 可确定的工作与高度不确定的工作2.2 《敏捷宣言》及思维模式2.3 精益与看板方法2.4 不确定性、风险和生命周期选择3. 生命周期选择3.1 项目生命周期的特征3.1.1 预测型生命周期的特征3.1.2 迭代型生命周期的特征3.1.3 增量型生命周期的特征3.1.4 敏捷生命周期的特征3.1.5 敏捷适用性筛选器3.2 混合敏捷方法3.3 影响裁剪的项目因素4. 实施敏捷:创建敏捷环境5. 项目管理五大过程组6. 项目管理十大知识领域7. 项目的几种组织类型8.

雅俗共赏 7091

国产数据库全解析:openGauss、OceanBase、TiDB与KingbaseES的核心优势与应用场景指南

本文将深入剖析openGauss、OceanBase、TiDB和KingbaseES这四款主流国产数据库的核心内容,并针对国产化过程中给出使用建议,以帮助企业根据自身需求选择合适的数据库解决方案。国产数据库在性能、扩展性、兼容性、安全性等方面展现出强大实力,能够满足不同行业、不同场景的需求。企业在进行国产化过程中,应充分考虑业务特点、技术栈、团队能力等因素,结合上述分析,选择最适合自身的国产数据库产品。随着国产数据库技术的持续发展与生态完善,它们将成为推动企业数字化转型、保障数据安全的重要力量。

java专栏 8779

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

软件开发模式之敏捷开发(Scrum)

简介 这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发和xp敏捷开发,人人都在谈论敏捷开发。那什么才是敏捷开发呢?目录 什么是敏捷开发? 传统的开发模式和敏捷开发模式的对比? 敏捷开发scrum的实施。 什么是敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,

Debug yourself! 5522

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[原创] 敏捷软件开发管理实践 (二) ——做最细致的项目跟踪

作者: cloudward注: 本文属于原创, 任何使用必须经过本人同意方可.做最细致的项目跟踪项目计划告诉了我们要如何去完成项目,但是项目计划的执行并非总能够沿着预定的轨道前进。可以肯定地说,如果没有健全的反馈机制,计划的执行定然会偏离预定的轨道,而唯一能够确避免的措施就——追求项目计划执行中最细致的项目跟踪,在计划的执行稍有偏离的时候就纠正其方向,这在控制理论中,就是基于反馈的控制。

云雀的理想 3070

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[原创] 敏捷软件开发管理实践 (四) ——让每个人学会更好的沟通

让每个人学会更好的沟通软件项目活动的主体是人,项目计划的执行过程中从开始到结束,始终都贯穿着频繁的沟通。但是一个让人感慨的普遍的现象就是人与人的沟通成本往往会远远超出你的预期,从而大大降低了工作的效率。1.1. 认识沟通成本沟通是必须的,但是沟通存在“巨大”成本。Robert Cecil Martin在他的《敏捷软件开发》一书中曾经清晰的描述了沟通为什么总是那么费劲。作者在书中

云雀的理想 2565

软件开发模式之敏捷开发(scrum)

简介 这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发和xp敏捷开发,人人都在谈论敏捷开发。那什么才是敏捷开发呢? 目录 什么是敏捷开发? 传统的开发模式和敏捷开发模式的对比? 敏捷开发scrum的实施。 什么是敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。 在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成...

赛博朋克 608

[原创]敏捷管理实践看板思维导图

[原创]敏捷管理实践看板思维导图 转载于:https://www.cnblogs.com/mayingbao/p/4055934.html

weixin_30819163的博客 336

图解精益敏捷的逻辑与实证:设计您自己的工作方式

精益敏捷的书籍已如汗牛充栋,但又没有给人一个明确的产生画面感的扎实理解。本文对精益敏捷的基本定义如下: 一种工作方式; 跟人和组织相关; 其目的是达成组织的目标; 以敏捷四价值观和精益五原则为核心基础。 本文基于作者十余年管理和教练经验,总结软件开发管理中各个敏捷实践的逻辑: 发生作用的原因; 行得通的条件; 达到的效果。 业务有框架、技术有框架、工作方式也有框架。文章脉络大致参照 PMB...

GitChat 563

工具助力敏捷——中国移动研发管理提升实践

本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》 作者:刘旭东,就职于中国移动研究院,信息安全方向硕士。主要从事移动应用架构及研发管理工作,具有多年项目开发及管理经验。目前主要关注大数据及深度学习领域的研究工作。 传统企业软件研发面临的问题及应对方案有人说移动互联网的发展是第四次工业变革,移动互联网技术不但渗入人民生活,也日益影响企业的发展。无论是传统...

u012396362的博客 729

7FRESH敏捷实战之工程效率实践

阅读提示:MinistarClub北京公众号更名启示7FRESH敏捷实践在工程领域的开展,离不开工程效率平台的支撑。本文为大家介绍7FRESH工程敏捷的落地实践。-1-自动化测试平台助力交付效率提升众所周知,自动化测试对于敏捷落地实践是非常重要的一环,自动化测试能够有效地帮助团队在质量保障环节中节省人力,加快交付。7FRESH质量团队打磨多年的“猎鹰智测平台”,可...

wonew1228的博客 215

IPD敏捷开发“三步走”实践分享

在IPD咨询项目实施过程中,我们经常会碰到客户这样说,你们IPD很好,就是周期太长,速度太慢,能不能让IPD敏捷一些,适应企业快速的产品革新。随着睿创服务越来越多软件+硬件结合业务模式客户,睿创思考以一种更加敏捷的IPD来适应客户新的业务模式,让敏捷IPD同时服务于硬件和软件开发。

WISEIM的博客 834

干货|敏捷实践重构

点击上方“中兴开发者社区”,关注我们 每天读一篇一线开发者原创好文 ▎作者介绍 丁一:无线研究院敏捷教练,也是敏捷软件开发爱好者,致力于让管理实践和技术实践在团队中扎实落地。 叶卫军:优秀的团队Scrum Master,具有敏锐的洞察力,丰富的管理经验,打造了一只高效能的团队。 李会毅:专注于软件设计和开发,善于思考和总结,致力于通过敏捷软件开发技术与流程提升团队绩效。 我

中兴开发者社区 1260

干货分享|通信硬件维护项目的敏捷项目管理实践

通信硬件维护的重要性:通信硬件是现代信息社会的基石,保障其正常运行是确保通信网络可靠性的关键。硬件故障不仅会导致经济损失,还会影响社会运转,因此,通信硬件的维护工作至关重要。传统项目管理方法的挑战:传统的项目管理方法往往依赖于严格的计划和控制,对于通信硬件维护项目中频繁的需求变化和不确定性应对能力不足,无法及时响应突发事件,导致效率低下和资源浪费。(1)敏捷项目管理的定义敏捷项目管理的基本概念:敏捷项目管理是一种迭代、增量的项目管理方法,强调灵活性、响应变化和客户满意度。

才聚PMP的博客 714
上一篇: [原创] 敏捷软件开发管理实践 (二) ——做最细致的项目跟踪
下一篇: [原创] 敏捷软件开发管理实践 (四) ——让每个人学会更好的沟通
cloudward
博客等级 码龄23年 18粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值