敏捷开发一千零一问系列之二:序言及解决问题的心法(无住)

这是敏捷开发一千零一问系列的第二篇。(之一,之二,之三,问题总目录)

也是般若敏捷系列第十一篇。(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二)

 

无住

在般若敏捷系列中已经提过,包括不住于法,不住于空

不住于法

就是不停留在一种固定的方法上。

如果把“敏捷”理解成一个名词,就会出现一个问题:什么是敏捷?又会扩展成Scrum是敏捷,还是XP是敏捷?RUP是不是敏捷?等等问题。

如果把“敏捷”理解成一个形容词,也就是“敏捷的开发方法”,大致能找到敏捷新的定义:敏捷是一种轻量级的开发方法。

如果把“敏捷”理解成一个副词,也就是“敏捷地开发”,就会找到一个更新的定义:敏捷就是不拘泥与形式不断优化地改进开发方法。

用最后一个理解看待开发,敏捷方法的定义就有很大不同。

比如CMMI,如果CMMI1.3修订之后更加适合美国国防部寻找适合的供应商开发军工项目(CMMI是美国国防部的供应商评价标准,而不是一个学术机构总结的通用最佳实践),那么CMMI就很敏捷;而一家企业已经实施Scrum很久了,但其质量、进度与日剧减,但大家坚持使用原汁原味的Scrum,那么反而很不敏捷。

那为什么现在的敏捷方法看起来更像是“轻量级的开发方法”呢?这是因为重量级的敏捷开发方法早就有了(最早的软件工程始于军工、航空航天、银行业),其他行业比如敏捷宣言发表时乃至今日仍盛行的互联网行业却一直没有方法。当他们“敏捷地”寻找的时候,找到了“敏捷的”方法。

但如果以为已经找到了就停了下来,就不敏捷了。

不住于空

“既然敏捷开发也不是最好的方法,那我们何苦要用敏捷方法呢?”“去年你们推CMMI,今年又推敏捷,明年天知道你们又会推什么方法(所以我打算不配合)”。

因为世界上没有绝对最好的编码规范,所以你们别说我的编码烂;因为世界上没有最好的管理方法,所以你们也别说我的方法乱;因为世界上没有绝对的好人,所以且容我再当一次坏人……这是很多人处世的哲学,开发团队也不乏这样的“老油条”“刺头”。

如果把“好”当作一个点,的确没有一种方法只好不坏。但如果把好当作一个方向,那么眼前,这里,这个项目,这个团队,的确有一些方法比另外一些方法好。虽然不是普适的最佳方法,但仍然值得追求。

不住于空,就是尽管没有最好的方法,但是不能因此放弃寻找更好的方法。

以往研发管理的教训

这里不得不提一下以往软件研发管理的教训,尤其是推广CMMI时的教训。

“为什么牛奶要检测氮含量?”“因为氮含量高,就意味着有更多的蛋白质,因而对人体更加有益。”如果把后两句给忘了,就产生了往牛奶里边添加三聚氰胺的做法。

昨天一个学员就提到说他们企业坚持要他们编写一些文档,而他们明明知道这些文档被扔在那里从来没有人看过,不写又不行,问应该怎么办(这个将是1001问系列中的一个问题)。

很多软件企业中的文档、评审、计划、会议并没有起到应有的作用,但却被盲目地坚持着。人们对这些方法的关注甚至超过了最终项目的成败和企业的盈利能力(神奇的是,美国国防部通过对这些方法的关注而大大提高了项目的成功率,但要认为我们只需要学习他们就能成功,则住在法上了)。

重读敏捷宣言

敏捷宣言中关于可运行软件胜过繁杂文档 及 响应变化胜过遵循计划的描述,说的就是这件事情。

不过,为了通俗易懂,敏捷宣言把“敏捷地找到”的方法贴出来了,所以变成了“敏捷的方法”,如果住在上面,就会出问题。

这就像“打土豪分田地”是一个通俗易懂的口号,但如果认为这就是共产主义,等土豪没了,田地分了,也就迷茫乃至要走上歧路了。

转载于:https://www.cnblogs.com/spring3/archive/2012/01/10/2401350.html

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

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

相关文章

ubuntu小企鹅输fcitx入法乱码问题

本教程中的技术资料来自互联网本人只是对其的一个总结并纠正其中的一些小错误和不足,希望能帮到你! OK,Lets go! 一、fcitx输入法的安装 安装方法有两种: 1、在ubuntu的软件中心中搜索fcitx 就可以找到fcitx的安装包,傻…

pycharm自带python环境_Pycharm安装+python安装+环境配置

Pycharm工具:1.安装jdk(64位):jdk-8u65-windows-x64.exe路径:C:\Program Files\Java(默认路径)2.配置环境步骤一:系统变量→新建 JAVA_HOME变量 。变量值填写jdk的安装目录(本人是C:\Program Files\Java\jdk1.8.0_65)步骤二&#…

大学四年, 专业心得

林锐有一本书, 叫做 <<高质量 C/C 程序设计指南>>. 其中附录里有他的一篇十分震撼的文章叫做 <<大学十年>>. 讲述了林锐从大学以来学习的经历和所获得的感想. 我看过后, 内心深深的被触动了, 都是大学 4 年, 为何差距如此之大? 都是学计算机专业, 为何…

HDU 2222 Keywords Search

HDU_2222 今天开始学AC自动机了&#xff0c;这个就是我AC自动机的处女作了。这个题有个小trick就是单词列表中可能有重复的单词&#xff0c;但这些重复的单词应看做不同的&#xff0c;因此建字典树时做标记的时候&#xff0c;把原来的赋值为1的操作变为自加1的操作即可。 最后匹…

java前言_Java Web前言

Java Web是什么&#xff1f;首先我们得搞清楚这个问题&#xff0c;以上是百度百科给出的答案。然后我们抠出关键词&#xff1a;Java技术 web(web服务器和web客户端)以上是Java百度词条给出的答案&#xff0c;通篇浏览可以有个大概的了解同上&#xff0c;建议全篇浏览所以这里我…

转:html id与name区别

id与name的作用,作为标签的标识符,基本上是一样的.name是老方法,id是在name基础上发明的,比name"现代化"一点,用的范围广一点. <A..> 中的name原来(刚发明时)就是用于本页按一下转向过去用的。我们一般认为&#xff1a;ID就像是一个人的身份证号码&#xff0c;…

PHP企业级开发环境配置全攻略-IDE+SVN++(转)

zend studio一直被认为是最好的php IDE&#xff0c;然而zend studio对javascript和css的支持一直很弱。刚刚发布的zend studio 8 加入了javascript调试的功能&#xff0c;对css的支持也改进了。然而zend studio是要收费的。我在这里推荐一套开源免费的可比拟zend studio的php开…

java 生成url_JAVA 通过URL生成水印图

Overridepublic OutputStream watermark1(String ossURL, String logoOsskey, HttpServletResponse response) {lock.lock();OutputStream os null;InputStream imageStreamnull;//水印String logoPath ossService.getOssURL(logoOsskey,bucket);//原图ossURLtry {osresponse…

前端学习(381):CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)

一、px&#xff0c;em&#xff0c;rem&#xff0c;vw的简单介绍 1、px px其实就是像素的意思&#xff0c;全称pixel&#xff0c;也就是图像的基本采样单位。对于不同的设备&#xff0c;它的图像基本单位是不同的&#xff0c;比如显示器和打印机。而我们通常所说的显示器分辨率…

SAP 那点事BW HANA

作为在去年10月份SAP公司大会上隆重推出的产品&#xff0c;不得不提&#xff0c;HANA是十分强大的&#xff0c;它与BW是相辅相成的&#xff0c;但又可以独立于BW之外&#xff0c;虽然建模功能不如BW强大&#xff0c;但是它的ETL较之BW快上了至少10倍以上&#xff0c;速度和可实…

java数组中相同的元素个数_java求两个数组中相同元素出现的次数

法一public class Methodfifth {public void mixed(int array1[], int n1, int array2[], int n2){int i 0, j 0,number0;while (i < n1&&j < n2){if (array1[i] array2[j]){number;i;j;}else if (array1[i]>array2[j]){j;}else if (array1[i] < array2…

实例1.2:获得应用程序主窗口指针

主窗口指针保存在CWinThread::m_pMainWnd中&#xff0c;可以先调用AfxGetApp函数获得应用程序的指针&#xff0c;然后通过应用程序的指针获得其主窗口的指针。 //获得应用程序指针CMy1_2App* pApp (CMy1_2App*)AfxGetApp();//获得主窗口指针CWnd* pMainWnd pApp->m_pMainW…

【C++ 学习笔记】 MFC CEdit

环境&#xff1a;VS2008 -关联变量 方法一&#xff1a;在控件上右键-变量-CEdit类型变量-输入变量名。 方法二&#xff1a;添加代码 头文件中定义变量CEdit m_edit_fileName;源文件中变量关联DDX_Control(pDX, IDC_FILENAME, m_edit_fileName); -取得文本 取得CEdit中输入文本的…

java log4j 配置_Java:log4j与log4j.properties的配置说明

[来源&#xff1a;Java |作者&#xff1a;Java |时间&#xff1a;2007-7-20 |去论坛]--在强调可重用组件开发的今天&#xff0c;除了自己从头到尾开发一个可重用的日志操作类外&#xff0c;Apache为我们提供了一个强有力的日志操作包-Log4j。Log4j是Apache的一个开放源代码项目…

Linq(03)基础之Orderby group-by

说明&#xff1a;本内容来自微软的MSDN&#xff0c;好记性不如烂笔头&#xff0c;加深印象。 我的心得&#xff1a;开头 Let子句 1) 在查询表达式中&#xff0c;存储子表达式的结果有时很有用&#xff0c;这样可以在随后的子句中使用。 2) 该关键字可以创建一个新的…

linux-tar命令详解

转自&#xff1a;http://www.21andy.com/blog/20060820/389.html linux解压 tar命令 tar命令 tar [-cxtzjvfpPN] 文件与目录 .... 参数&#xff1a; -c &#xff1a;建立一个压缩文件的参数指令(create 的意思)&#xff1b; -x &#xff1a;解开一个压缩文件的参数指令&#xf…

java tcp端口复用_windows server tcp端口重用问题

我们的服务器端和客户端都是windows的Serverclient(192.168.1.11)发送socket连接到windows服务端&#xff0c;windows处理完数据返回报文后就close掉了(server端是java写的)。比如client使用12345端口发送数据到server的7777端口。client收到server的fin包后完成4次挥手后clien…

计算机视觉基础(11)——语义分割和实例分割

前言 在这节课&#xff0c;我们将学习语义分割和实例分割。在语义分割中&#xff0c;我们需要重点掌握语义分割的概念、常用数据集、评价指标&#xff08;IoU&#xff09;以及经典的语义分割方法&#xff08;Deeplab系列&#xff09;&#xff1b;在实例分割中&#xff0c;需要知…

使用vs2010+WCF发布json数据,ExtJS4.0进行调用

花了近一天的时间调试解决&#xff0c;希望对有相同需要的朋友有帮助&#xff1a;1、新建一空网站,添加一个web页面webform1.aspx&#xff0c;添加ExtJs相关引用<link href"ExtJs4.0.7/resources/css/ext-all.css"rel"stylesheet"type"text/css&qu…