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

ThoughtWorks 结对编程 起因技术博客写多了,不会起名字的说 ,可能写多了,最后写出来的东西偏向于冷冰冰吧;正经的起因 可能就是某个懒散的下午,打开电脑,不知道做什么,打开牛客看了看,随即看到结对编程,不知道是做什么的,点开看了看;页面很好,不想中国人写的; 鬼使神差的就报名了,点进去看了看,居然 还有题;而且第一道题还是 intellij idea 的快捷键,很感兴趣,就做了;其实当时应该好好学习一下的,因为现在视频点不进 阅读详情

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

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

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

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

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

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

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

技术:轻量级设计

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

有两种解决方法。

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

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

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

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

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

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

2. 前检查点

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

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

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

1. 共同估算

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

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

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

2. 验收标准

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

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

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

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

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

 

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

 

 

Quartz定时任务调度框架中的Misfire策略实战解析 本文深入解析了Quartz定时任务调度框架中的Misfire(失火)处理策略。针对SimpleTrigger和CronTrigger两种常用触发器,详细对比了其各自的Misfire指令(如NowWithExistingCount、FireAndProceed等)的核心行为与适用场景,并提供了基于不同业务需求(如数据补跑、时间点敏感度)的实战选型指南,帮助开发者构建更健壮可靠的任务调度系统。 阅读详情

相关推荐

避坑指南:RK3588上编译EtherCAT 1.6时遇到的权限问题和模块安装错误

本文详细解析了在RK3588平台上编译EtherCAT 1.6时常见的权限问题和模块安装错误,提供了两种实战解决方案和嵌入式开发的通用权限管理策略。通过优化内核配置和编译参数,显著提升实时性能,帮助开发者高效完成EtherCAT主站部署。

weixin_33724046的博客 453

CSP-J备考指南:规避算法热搜陷阱,掌握六大基础算法稳拿奖

基础算法是信息学竞赛的基石,也是软件能力认证的考察核心。模拟、枚举、排序、二分、搜索与动态规划等基础算法,看似简单,却蕴含着问题分解、边界处理与时空权衡的核心思想。它们在日常编程和算法竞赛中应用广泛,比如二分答案可高效解决最优化问题,BFS分层搜索能处理最短路径与奇偶性约束,动态规划则通过状态转移实现最优子结构求解。深入理解这些算法的原理与应用场景,能帮助学习者建立扎实的算法思维,提升程序设计与调试能力。在CSP-J认证中,初赛侧重算法分析与手算模拟,复赛强调算法实现与优化,掌握六大基础算法即可覆盖绝大多数

weixin_34161029的博客 237

AI 编程助手新玩法:用 Claude Code 一键调用国产大模型(DeepSeek/Kimi/GLM 对比)

本文深入评测了Claude Code与三大国产大模型(DeepSeek、Kimi、智谱GLM)的集成效果,详细对比了它们在代码生成质量、响应速度和特殊场景支持度等方面的差异。通过实测数据和实战技巧,帮助开发者选择最适合的AI编程助手组合,提升开发效率。

weixin_30955617的博客 487

【项目管理】关于“敏捷迭代”第一周的那点事

随着敏捷开发的流行,目前越来越多的互联网公司使用“敏捷迭代”来进行项目管理了,且目前最常见的敏捷迭代都是使用“两周一迭代”的形式,那两周中的第一周都需要做些什么呢? 第一周很多公司都会当作“开发周”,开发周各岗位都需要关心并产出什么? 产品:通常情况下产品需要在开发周或者上一迭代测试结束前进行需求评审(具体可以根据实际项目情况确定需求评审时间),并输出最终prd文档; 开发:...

monkey_怡宝的博客 1495

你以为你懂 Java 反射?看了这篇源码分析,我发现我以前都错了

摘要:本文讲述了一次生产环境Metaspace内存溢出的故障排查经历。事故源于一个通用数据导出功能中频繁使用反射调用method.invoke(),触发了JVM的"膨胀机制":当同一Method对象调用超过15次时,JVM会动态生成GeneratedMethodAccessor类,导致Metaspace被撑爆。文章分析了问题根源在于循环中反复调用getMethods()创建新Method对象,并提出了三种解决方案:缓存Method对象、改用MapStruct/MethodHandle工具

BUG猿的博客 770

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiR

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiResCAM, LayerCAM, RandomCAM, EigenGradCAM等

静谧、淡雅 2389

高效的敏捷测试第九课 ATDD、需求分析、需求评审和设计评审

第20讲:没有 ATDD,就没有用户故事的可测试性 从这一讲开始,我们就进入了第 4 部分的学习:测试左移更体现敏捷测试的价值。因为敏捷更提倡团队对质量负责、预防缺陷胜于发现缺陷,这两点就意味着我们要构建出高质量的产品,把质量构建推向源头——需求,把测试活动左移到需求阶段,持续地对需求和设计进行评审、及时发现需求和设计的问题。 测试左移的目的是及时发现研发前期的错误,避免将错误带到代码阶段、测试阶段,TDD/ATDD(测试驱动开发/验收测试驱动开发)是更为彻底的测试左移,一次把事情做对,即零缺陷质量管理思

fegus的博客 3322

Android 10.0 SystemUI下拉状态栏点击设置跳转设置时白屏修改

在10.0的系统rom定制化开发中,在SystemUI下拉状态栏下方点击设置图标跳转设置的过程中,发现 有白屏显示挡住设置界面,显示白屏,接下来分析下相关原因来解决这个问题

安卓兼职framework和app工程师的博客 80

敏捷开发,极限编程,结对编程介绍

参考:http://zhidao.baidu.com/link?url=O9OtPIuteNEcN0hXNDm0k9H3SIZeBsbONCRdp1dUmNAZLWOEdLvLV9ggDHxCd3iq8-wgLreQSbw00-mdxwLUUq 1、敏捷开发         敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被

絮雨清风 2951

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 530

多物理场光学仿真软件:Ansys Lumerical_(8).CHARGE解决方案详解

CHARGE 模块主要用于求解 Poisson 方程和连续性方程,以模拟半导体器件中的电荷分布和载流子输运。通过 CHARGE 模块,可以分析器件的能带结构、载流子浓度、电流密度等关键参数。这些参数对于理解器件的工作原理和优化设计至关重要。

kkchenjj的博客 1387

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

本文是“松结对编程”系列的第二篇。(之一,之二,之三,之四,之五,之六,之七,之八)新人其实很少偷懒,因为一方面正处于入门学习的高峰期,另一方面工作时间不长需要得到企业和团队的认可。可为何他们工作总是不得力呢?新人的真正问题在于无心办错事和好心办错事。无心办错事包括没学过某种好的方法、不知道企业已经有某些可用代码或库、不懂业务等种种问题。好心办错事包括想做一个比领导想想的更好的功能、过度...

diaogan4202的博客 111

ARMv8/ARMv9的TLB深度学习

千万不要人云亦云。一个TLB entry里有很多很多东西的,有100多个比特位呢,并不是仅仅只有VA/PA/nG/VMID/ASID等。.👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。

baron-周贺贺-代码改变世界ctw 1569

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

转载自: http://blog.youkuaiyun.com/cheny_com/article/details/6581741# 本文是“松结对编程”系列的第二篇。(之一,之二,之三,之四,之五,之六,之七,之八,此系列之九及之后文章请见栏目总目录。) 新人其实很少偷懒,因为一方面正处于入门学习的高峰期,另一方面工作时间不长需要得到企业和团队的认可。可为何他们工作总是不得力呢?

蓝斯的专栏 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

转载自:http://blog.youkuaiyun.com/cheny_com/article/details/6581741# 本文是“松结对编程”系列的第二篇。(之一,之二,之三,之四,之五,之六,之七,之八,此系列之九及之后文章请见栏目总目录。) 新人其实很少偷懒,因为一方面正处于入门学习的高峰期,另一方面工作时间不长需要得到企业和团队的认可。可为何他们工作总是不得力呢?...

java开发指南博客 【转载】 88

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

hdfyhf的博客 327

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

敏捷开发“松结对编程”

【转载按】非常棒的关于敏捷开发执行模式的系列文章。共5章。【原文】敏捷开发“松结对编程”实践之一:人员结构篇(大型研发团队,学习型团队,139团队,师徒制度)http://blog.youkuaiyun.com/cheny_com/article/details/6581517敏捷开发“松结

技术拾遗 501

json

JSON2 JSONLint – JSON数据格式验证器 - 小众站点 >开发工具 JSON 格式验证工具推荐 - peter cheng - 博客园 正则表达式参考文档 - Regular Expression Syntax Reference 一 些JSON相关的函数 - 博客文库 - 博客园 Tryit Edit...

iteye_10089的博客 131
上一篇: 敏捷开发“松结对编程”实践之一:人员结构篇(大型研发团队,学习型团队,139团队,师徒制度)
下一篇: 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算)
火星人陈勇
博客等级 码龄18年 4899粉丝 381原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值