敏捷开发一千零一问系列之二:序言及解决问题的心法(无住)
这是敏捷开发一千零一问系列的第二篇。(之一,之二,之三,问题总目录)
也是般若敏捷系列第十一篇。(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二)
无住
在般若敏捷系列中已经提过,包括不住于法,不住于空。
不住于法
就是不停留在一种固定的方法上。
如果把“敏捷”理解成一个名词,就会出现一个问题:什么是敏捷?又会扩展成Scrum是敏捷,还是XP是敏捷?RUP是不是敏捷?等等问题。
如果把“敏捷”理解成一个形容词,也就是“敏捷的开发方法”,大致能找到敏捷新的定义:敏捷是一种轻量级的开发方法。
如果把“敏捷”理解成一个副词,也就是“敏捷地开发”,就会找到一个更新的定义:敏捷就是不拘泥与形式不断优化地改进开发方法。
用最后一个理解看待开发,敏捷方法的定义就有很大不同。
比如CMMI,如果CMMI1.3修订之后更加适合美国国防部寻找适合的供应商开发军工项目(CMMI是美国国防部的供应商评价标准,而不是一个学术机构总结的通用最佳实践),那么CMMI就很敏捷;而一家企业已经实施Scrum很久了,但其质量、进度与日剧减,但大家坚持使用原汁原味的Scrum,那么反而很不敏捷。
那为什么现在的敏捷方法看起来更像是“轻量级的开发方法”呢?这是因为重量级的敏捷开发方法早就有了(最早的软件工程始于军工、航空航天、银行业),其他行业比如敏捷宣言发表时乃至今日仍盛行的互联网行业却一直没有方法。当他们“敏捷地”寻找的时候,找到了“敏捷的”方法。
但如果以为已经找到了就停了下来,就不敏捷了。
不住于空
“既然敏捷开发也不是最好的方法,那我们何苦要用敏捷方法呢?”“去年你们推CMMI,今年又推敏捷,明年天知道你们又会推什么方法(所以我打算不配合)”。
因为世界上没有绝对最好的编码规范,所以你们别说我的编码烂;因为世界上没有最好的管理方法,所以你们也别说我的方法乱;因为世界上没有绝对的好人,所以且容我再当一次坏人……这是很多人处世的哲学,开发团队也不乏这样的“老油条”“刺头”。
如果把“好”当作一个点,的确没有一种方法只好不坏。但如果把好当作一个方向,那么眼前,这里,这个项目,这个团队,的确有一些方法比另外一些方法好。虽然不是普适的最佳方法,但仍然值得追求。
不住于空,就是尽管没有最好的方法,但是不能因此放弃寻找更好的方法。
以往研发管理的教训
这里不得不提一下以往软件研发管理的教训,尤其是推广CMMI时的教训。
“为什么牛奶要检测氮含量?”“因为氮含量高,就意味着有更多的蛋白质,因而对人体更加有益。”如果把后两句给忘了,就产生了往牛奶里边添加三聚氰胺的做法。
昨天一个学员就提到说他们企业坚持要他们编写一些文档,而他们明明知道这些文档被扔在那里从来没有人看过,不写又不行,问应该怎么办(这个将是1001问系列中的一个问题)。
很多软件企业中的文档、评审、计划、会议并没有起到应有的作用,但却被盲目地坚持着。人们对这些方法的关注甚至超过了最终项目的成败和企业的盈利能力(神奇的是,美国国防部通过对这些方法的关注而大大提高了项目的成功率,但要认为我们只需要学习他们就能成功,则住在法上了)。
重读敏捷宣言
敏捷宣言中关于可运行软件胜过繁杂文档 及 响应变化胜过遵循计划的描述,说的就是这件事情。
不过,为了通俗易懂,敏捷宣言把“敏捷地找到”的方法贴出来了,所以变成了“敏捷的方法”,如果住在上面,就会出问题。
这就像“打土豪分田地”是一个通俗易懂的口号,但如果认为这就是共产主义,等土豪没了,田地分了,也就迷茫乃至要走上歧路了。
转载于:https://www.cnblogs.com/spring3/archive/2012/01/10/2401350.html
敏捷开发一千零一问系列之二:序言及解决问题的心法(无住)相关推荐
- 敏捷开发一千零一问系列之一:序言及解决问题的心法(无我)
这是敏捷开发一千零一问系列的第一篇.(之一,之二,之三,问题总目录) 也是般若敏捷系列第十篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二) 转载于:https://w ...
- 敏捷开发一千零一问系列之三:序言及解决问题的心法(共振)
这是敏捷开发一千零一问系列的第三篇.(在这里提问,之一,之二,之三,问题总目录) 也是般若敏捷系列第十二篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二) 共振 共振是 ...
- 敏捷开发一千零一问系列之二十六 如何进行优先级排序
这是敏捷开发一千零一问系列的第二十六篇.(在这里提问,之一,之二,之三,问题总目录) 问题 如何进行优先级排序?具体故事的优先级,和版本规划的优先级之间有何关系? 分析 敏捷开发里边有很多地方需要多次 ...
- 敏捷开发一千零一问系列之七:怎样对待有看法的徒弟?
2019独角兽企业重金招聘Python工程师标准>>> 这是敏捷开发一千零一问系列的第七篇.(之一,之二,之三,问题总目录) 问题 松结对编程中,师傅对徒弟安排任务时,对于有想法的徒 ...
- 敏捷开发一千零一问系列之十七:长期受制于强势客户怎么办?(上)
这是敏捷开发一千零一问系列的第十七篇.(在这里提问,之一,之二,之三,问题总目录) 这个是在一次面向电信行业供应商的公开课上提出的问题,被评为本场最佳问题. 对于这类"供应商"而言 ...
- 敏捷开发一千零一问系列之十八:长期受制于强势客户怎么办?(下)
这是敏捷开发一千零一问系列的第十七篇.(在这里提问,之一,之二,之三,问题总目录) 方案3:培养产品经理,想到客户前面 被客户牵着鼻子走本来不是坏事,还少了做需求分析的工作,但关键是客户一会牵着向东, ...
- 敏捷开发一千零一问系列之十六:如何让开发人员学习产品?
这是敏捷开发一千零一问系列的第十六篇.(在这里提问,之一,之二,之三,问题总目录) 这个和上一篇"敏捷开发与CMMI谁为主"都是最近一次培训被大家选出来的最有价值问题. 问题 开发 ...
- 敏捷开发一千零一问系列之十四:敏捷开发加班吗?
这是敏捷开发一千零一问系列的第十四篇.(在这里提问,之一,之二,之三,问题总目录) 正逢周末,又是愚人节,群中有人正在加班,想起上次培训中间休息的时候,讨论起这个"敏捷开发加班吗" ...
- 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
这是敏捷开发一千零一问系列的第十二篇.(在这里提问,之一,之二,之三,问题总目录) 问题 原问题:敏捷的具体实施是否按照一定的步骤? 方案 越前面的方案月容易实施,但是也越容易流于肤浅而失败. 方案1 ...
最新文章
- python functools模块(主要是为函数式编程而设计,用于增强函数功能,主要为可调用对象(callable objects)定义高阶函数或操作)
- jsp内置对象【02】四种内置对象【02】session、application
- java 注解 属性 类型_跟光磊学Java开发-Java注解
- 二分搜索(折半搜索),lower_bound,upper_bound
- YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】
- 论文浅尝 | 探索将预训练语言模型用于事件抽取和事件生成
- python系统提供构造函数传入参数_python类变量与构造函数的使用
- 收藏 | 机器学习领域必知必会的12种概率分布(附Python代码实现)
- scala基础之特质trait
- 官方揭晓iQOO 9正反面宣传照:挖孔直屏+巨型三摄相机模组
- mac用python爬虫下载图片_利用Python爬虫采集mac电脑皮肤|简明python教程|python入门|python教程...
- linux系统时间分区的设置方法分享
- 百度地图如何获取国内行政区的边界,同时添加覆盖物并且填充颜色
- MATLAB去除多余点的命令,如何清除matlab命令窗口中已有的内容
- iOS开发常用网址(最全)
- 树莓派官方显示屏亮度
- 下载c语言软件后怎么解压,手机怎么解压文件 盘点常用手机压缩打包解压文件应用...
- 基于DCT变换的JPEG图像压缩
- python:实现Triplets with zero sum零和三元组(附完整源码)
- STM32单片机与蓝牙模块HC-05通信数据帧处理
热门文章
- [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?
- React开发(203):react代码分割之React.lazy
- React开发(119):代码原因
- react(85)--error:Error creating bean with name ‘onlineStudyController‘:
- 前端学习(3073):vue+element今日头条管理-删除文章失败(配合axios使用)
- 前端学习(2999):vue+element今日头条管理--element导入
- [html] HTML全局属性(global attribute)有哪些(包含H5)?
- 前端学习(2801):传递id
- 前端学习(2737):重读vue电商网站47之生成打包报告
- 前端学习(1944)vue之电商管理系统电商系统之绘制分类组件的基本结构