敏捷开发“松结对编程”实践之二:计划与设计篇(大型研发团队,学习型团队,139团队,师徒制度,设计评审,预想陈述,共同估算,扑克牌估算)

2023-11-07

转载自: http://blog.csdn.net/cheny_com/article/details/6581741#


本文是“松结对编程”系列的第二篇。(之一之二之三之四之五之六之七之八,此系列之九及之后文章请见栏目总目录。)

新人其实很少偷懒,因为一方面正处于入门学习的高峰期,另一方面工作时间不长需要得到企业和团队的认可。可为何他们工作总是不得力呢?

新人的真正问题在于无心办错事和好心办错事。

无心办错事包括没学过某种好的方法、不知道企业已经有某些可用代码或库、不懂业务等种种问题。

好心办错事包括想做一个比领导想想的更好的功能、过度思考了可复用性可维护性等。

这两个问题笔者都经历过(作为新人和老人),“避免”是最好的方法,而不是事后改正,这就需要在设计阶段和计划阶段从技术、管理两个方面来提前预防。

--------------------------

技术:轻量级设计

如果要把一个任务分配给一个“不放心的人”,有两种办法保证成功:师傅把设计做出来交给徒弟做,但是“设计文档”的详细程度很难把握,写少了做不出来,写多了等做出来了很多内容又多余了;师傅徒弟结对编程,但是很占用师傅的时间,尤其是倘若徒弟“实际上”(可惜只有上帝知道)完全可以胜任这个任务。

有两种解决方法。

1. 事前轻量级设计:预想陈述(有点隐喻的意思)

预想陈述是微软很久以前就使用的一种方法,任何人(不只是徒弟)有什么设计,不用写下来因为太费时间了而且还可能被抛弃,而是给大家讲一下。大家会给出评价和意见,以保证其正确性。然后此人就按这种方法去实现了,倘若成功了也被认可了,就简单写下来以供日后参考使用。由于系统已经存在,这个简单写下来的设计可以真的很简单。

在“松结对编程”里边,有两种类似的做法。

一种是师傅把自己的想法告诉徒弟(一般用一个白板,或一张白纸),徒弟提问师傅回答,到差不多为止。

二种相反,徒弟讲给师傅听,师傅师傅质疑和指导,到差不多为止。

两者都不要事先形成永久文档,但都在被证明可行(就是编码完成后)写一个简单文档记录。任何代码之外的能帮助理解当时做法的文字/图片都可以称为文档,没有字数限制。如果能和用户故事放在一起则更好,一个描述做了什么,一个描述怎么做的。

2. 前检查点

就是在某事开始的时候进行临时结对编程。一般发生在某个功能刚开始做的时候,详情会在之后的“日常活动篇”做详细描述。

管理:共同计划(共同估算,扑克牌估算)

预想陈述、前检查点虽然已经很轻量级了,但是如果师傅和徒弟都刚刚对需求(用户故事)有所了解,还给不出很清晰的思路的时候,比如在Scrum计划会上,怎样快速知道徒弟有没有理解需求,有没有大致的实现思路呢?那就是共同估算(扑克牌估算是共同估算的一种最好的实现形式)。

1. 共同估算

共同估算的原理和做法还是很复杂的,这里只简单说说,以后会有文章详细讲述。

共同估算就是师傅和徒弟基于相同的信息(一般是在计划会上听PO讲完故事的时候),一起说出自己认为做完这件事情需要多久。基本原理是:若两个人对某件事情的工期认识是相同的,那么他们的实现方法不分高下,用哪种方法都差不多。

为了防止人云亦云,一般需要采用匿名方法,而扑克牌估算就实现了高效有效的共同匿名估算(另有文章详述)。

2. 验收标准

为了基于相同的目标建立共同估算,也为了防止需求镀金或最终软件不能满足需求,师傅和徒弟要建立对需求的共同理解。

简单方法就是两者(其实是师傅和多个徒弟)一起参加估算会,一起听PO讲解故事。但最好是在此之后,建立一个“文档化”的验收标准。比如在一张故事卡/Excel表里……上写上“需集成;无性能要求……”等最简单的描述(请参考本博客的敏捷开发分类下一片关于验收标准的文章)。

共同估算+验收标准,使得师傅和徒弟(推广为高手和新手)使用大致相同的方法,做大致相同的东西。共同估算既是一个工作的过程,也是一个学习的过程,因为在理解做什么和怎么做的同时,徒弟也向师傅学到了东西。

--------------------------------------------

这里描述的基本上都是前期工作方式,基于莫非定理(只要事情能出错,就一定会出错)只在事前预防还是不够的,在日常工作中仍需要师傅与徒弟进行配合工作,具体细节将另有文章描述。

 

点击下载免费的敏捷开发教材:《火星人敏捷开发手册

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

敏捷开发“松结对编程”实践之二:计划与设计篇(大型研发团队,学习型团队,139团队,师徒制度,设计评审,预想陈述,共同估算,扑克牌估算) 的相关文章

随机推荐

  • Linux 中统计指定目录下同一类文件总的大小

    root PC1 test ls a map a ped a txt b ped b txt root PC1 test ll h total 1 4G rw r r 1 root root 200M Dec 1 19 42 a map r
  • Tensorflow-2-Tensorboard使用

    一 概述 机器学习如此复杂 训练模型的时候 摸不清背后到底是如何运行的 自己设置的参数和关键变量 如果能看到在训练时的变化情况 可以为后面的参数调优阶段提供很大的便利 Tensorboard就是这样一个工具 它刻意将模型抽象成图像 tens
  • UmiJS基础+UmiUI安装使用+Mock使用示例+DvaJS案例

    title UmiJS基础 date 2022 09 12 19 20 27 tags React 框架 UmiJS categories 框架 UmiJS 介绍 官方文档 可扩展 Umi 实现了完整的生命周期 并使其插件化 Umi 内部功
  • 问题(02)Message 消息提示每次只弹出1个,不能同时出现2个

    项目场景 PC端开发 vue elementUI 问题描述 Message 消息提示同时出现2个 原因分析 Element UI的Message消息提示是点击一次触发一次的 解决方案 在utils文件创建resetMessage js re
  • Jar包中Class文件替换

    1 查找替换的class的具体路径 jar tvf jar grep class 根据自己的jar包和类名替换 2 根据第一步查到的class的具体路径解压出来对应文件 jar xvf jar class 3 替换解压出来的文件中的clas
  • 代码制作数字流星雨_用C语言编写流星雨程序

    展开全部 数字流星雨代码 流星雨 cpp Defines the entry point for the console application 程序名称 数字流星雨 最后修改e5a48de588b632313133353236313431
  • Python 判断生肖

    Python 判断年份干支纪年及生肖 生肖 12年一循环 干支纪年法 60年一循环 十天干 甲 乙 丙 丁 午 戊 庚 辛 壬 癸 十二地支 子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥 十二生肖 鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡
  • java 插件式架构_springboot插件式开发框架

    介绍 该框架主要是集成于springboot项目 用于开发插件式应用的集成框架 核心功能 插件配置式插拔于springboot项目 在springboot上可以进行插件式开发 扩展性极强 可以针对不同项目开发不同插件 进行不同插件jar包的
  • 【Cat.1模组】 广和通L610 基于OpenCPU的SDK二次开发

    目前支持Cat 1网络的芯片平台主要是紫光展锐UIS8910和翱捷ASR1603 基于紫光展锐平台 各大厂商延伸出多款Cat 1模组 广和通L610就是其中之一 本文记录开发过程 供日后参考 广和通L610模组支持AT指令开发和OpenCP
  • 2020安卓启动图标圆角_从零开始画图标系列:启动图标设计指南

    想要在启动图标设计上入门 就要先从规范开始学习 然后了解不同的风格以及对应风格的设计过程 说到启动图标的规范 首先会想到的 就是 iOS 提供的图标栅格 通过这个栅格 会规范图形的尺寸 以及所处的位置 这个模板和工具图标的使用方法类似 我们
  • JAVA代码实现多级树结构封装对象(2018-09-26补充)

    我们经常在代码里会造一个树结构对象 以方便前端使用 以地区 区 镇 村 为例 后台一般对于树结构对象在数据库的结构是这样的 主键ID 名字 父ID ID REGION NAME PARENT ID 121100 尼龙区 0 12110000
  • 【Javascript VTK】在页面中放置VTK三维模型

    一 问题描述 在项目的开发过程中 遇到将vtk三维重建结果放置到网页 Web Page 中进行可视化展示的棘手问题 想要实现的效果图如下 图一 最终实现的 v t k 3
  • python日常实用技能:如何利用Python批量生成任意尺寸的图片

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 不知道大家有没有遇到过 因检验需要1000张 分别从11到10001000像素的图片 搜索一番过后发现还是Python实现比较方便 遂决定用Python实现这一功能 下面分
  • JS变量提升

    变量提升 即变量可以在声明之前使用 值为 undefined 如 var 这种使用方式虽然不报错 但它是错误的 根据代码规范我们必须要在变量声明后使用 在ES6中严格规定了这点 let 和 const 所声明的变量一定要在声明后使用 否则报
  • Python数据结构:集合(Set)介绍

    Python数据结构 集合 Set 介绍 集合 Set 是Python中一种无序 可变且不重复的数据结构 它可以用于存储一组唯一的元素 而且集合中的元素是不可重复的 在本文中 我们将介绍集合的特点 创建和操作集合的方法 以及集合与其他数据结
  • PHPExcel使用-使用PHPExcel导出文件

    导出步骤 1 新建一个excel表格 gt 实例化PHPExcel类 2 创建sheet 内置表 gt 1 gt createSheet 方法 2 gt setActiveSheetIndex 方法 3 gt getActiveSheet
  • 春招大盘点:找工作除了招聘网站还有哪些渠道?

    又是一年毕业季 估计同学们都正在写论文 找工作两头忙 很多同学和小C 诉苦 说现在找实习的渠道太少了 招聘网站都刷完了 也没看到很合适的岗位 那找工作除了招聘网站还有什么渠道呢 其实是有的 今天就为大家盘点一下 1 各大公司官网 一般大的公
  • 编程(C#)实现创建 internet快捷方式 文件

    心情 各种百度 各种搜 搞了老半天 真不容易 a 推荐解决方案2 貌似似这个也不错 http xiaochen 2003 4 blog 163 com blog static 48040967201253033250671 解决方案1 加载
  • 什么是大数据分析?定义、优点和类型

    在一个技术已经达到其使用巅峰并完全压倒我们生活的时代 交换的数据量是巨大的 传统的计算工具无法处理的大量数据集每天都在被收集 我们将这些大量数据称为大数据 如今 企业严重依赖大数据来更好地了解客户 从这些原始大数据中提取有意义的见解的过程被
  • 敏捷开发“松结对编程”实践之二:计划与设计篇(大型研发团队,学习型团队,139团队,师徒制度,设计评审,预想陈述,共同估算,扑克牌估算)

    转载自 http blog csdn net cheny com article details 6581741 本文是 松结对编程 系列的第二篇 之一 之二 之三 之四 之五 之六 之七 之八 此系列之九及之后文章请见栏目总目录 新人其实