经常听到有人提到敏捷开发与“本能反应”非常近似,比如凡事都需“看着办”,比如“不拘泥于形式”,比如“直击代码,不写无用的文档”等等。
那么敏捷开发与本能反应之间的差别是什么呢?
简单地说,敏捷开发就是无我状态的本能反应。
无我,无人(无我,无人,无众生)
按理说,本能反应是最接近最佳路径的,一线人员,工作现场,当下的问题,一定能在事先预定的路径之外找到更好的方法,除非有个“我”字。
1. 比如测试人员最近的工作繁忙,需要多调度几个测试人员过来,才能保证测试不延期。如果按照本能反应,开发人员中的一些人极有可能过来帮忙测试,或帮助编写一些节省人工的自动测试代码(后者是01年我们团队的做法,最终结果是25个开发人员只需要1个测试人员就能完成测试);但如果“我们是开发人员,他们是测试人员”,尤其是“每发现一个缺陷,他们得10元,我们扣10元”,这件事情多半就办不成。
2. 比如有一个人在每日例会上说遇到了困难,而另有人对此有非常容易解决的方法。如果按照本能反应,可能一句话就能帮助节省几个小时;但如果“我有我的工作,他有他的工作”,尤其是“如果帮助了他,我的工作可能完不成”,这件事情也多半办不成。
3. 比如某个文档在这个产品中的确不需要写,但是“如果他们不写,做CMMI评估的时候我们EPG组就会比较难办”,那么这个文档到底要还是不要写就真成了一个问题。
这些我与别人的分隔,使得很难在事情上走最佳路径,而多半会在人和分工上走最佳路径,尤其是按“我”的利益来走最佳路径。在这种情况下,本能反应就是错误的。
无现在的我,无未来的我(无寿者)
一个人的时候,也会出问题。
1. 一个设计非常复杂,按本能反应,怎么也应该记录下来点东西。但是如果“我现在心里清楚设计不用写,未来也不一定是谁在维护这些代码”,那么就很容易不写这个文档,却在未来产生很大的麻烦。
2. 一个代码这样写未来可能产生缺陷,但是这个版本这样写最快。如果“我要按最快的方法写,管他未来是谁”,那么多半代码就会很烂。
如果一个人说:我不写文档的原因是“我把设计表达在代码里”,如果代码很漂亮则的确如此,如果代码又很烂,就可见前者只是一个借口。
说实话多数吆喝“代码即设计”的程序员代码都很烂。
创造无我的环境
在多数有我的环境中,对某件事情而言,每个人提出的解决方案都不相同,而且没有一个是与这个事情的最佳解决方案重合的,因为每个“我”都按自己的利益行事。
最终的结果,是为了让这些我能凑在一起工作,创造出无数的部门规范、工作流程、中间文档、计划、中间文档的评审标准等等,用来约束每个我的工作。本能反应也就被压抑了。
“如何创造一个无我的环境?”这个问题在每个具体环境中,都有具体的最佳答案,受到具体人、事、物的限制,很难一概而论。
但如果如果没有任何前提条件地回答这个问题,倒也有一个“般若”一点的答案,就是“共振”。
所谓共振,就是在能控制的范围内先取得一些成效,以此换取他人及未来的共鸣,从而推广下去的方法。世界上的各种伟人,无一不是以这种方法工作的,影响力能远达万里、千年。
作为个人,首先可以破除现在的我;作为小团队(比如3个人),可以小范围破除我人之分,共进退;作为开发组,可以局部破除分割和个体考核;作为研发部,可以在部门内部推行新的绩效考核体系,等等。
尽管这些事情看起来都有其困难之处,但与那些“万里、千年”的事情相比,却微不足道,几乎可以说基本上只要去做,没有做不成的。
不过共振的原理,就是不谋求一说就通,一做就成,而是找到事物推广的固有频率,走得太快了,难免做不成先驱,反而成为先烈。
本人曾经在10年里频繁地更换工作,目的是找到一个可以“大展宏图”的地方,但都失败了。直到在一家企业固守了3年,结局令我大吃一惊,原来每个企业都是很容易被推动的,唯一要判断的其实只有一个问题:“这个企业值得推动吗?”
ref:http://blog.csdn.net/cheny_com/article/details/7100894
分享到:
相关推荐
"敏捷开发 敏捷开发 敏捷开发 敏捷开发"这个标题多次提及敏捷开发,表明其重要性和讨论的焦点。 描述中重复的“敏捷开发敏捷开发”,进一步强调了这一主题的重要性,暗示内容可能涵盖了敏捷开发的各种方面,如原则...
敏捷开发与测试是指在软件开发过程中采用敏捷开发理念和方法,以及在开发的同时实施测试的一系列实践活动。敏捷开发与测试强调迭代和增量的开发方式,倡导紧密的客户合作、团队协作和快速适应变化的能力。 敏捷开发...
3.4.5 谁更适合使用敏捷与精益相结合的方法 3.5 敏捷开发方法框架之特征驱动开发 3.5.1 定义和特性说明 3.5.2 主要角色 3.5.3 主要活动和实践 3.5.4 主要工件 3.5.5 工作流程 3.5.6 谁适合使用特征驱动开发 3.6 敏捷...
### 敏捷开发的核心理念与实践 #### 一、敏捷开发概述 敏捷开发是一种强调灵活性、快速响应变化的软件开发方法论。与传统的瀑布模型相比,敏捷开发更加注重团队之间的紧密协作、持续改进以及高质量的产品交付。...
本文将论述敏捷开发方法在系统分析师中的应用,通过实践证明,在项目的开发中采用合适的敏捷开发方法可以有效地缩短开发时间,提高产品质量。本文将从以下几个方面论述敏捷开发方法的应用: 一、极限编程的应用 ...
本书为那些正在考虑应用敏捷开发来构建有价值软件的人们提供了实用的指导。现在已经有大量的书籍描述敏捷开发是什么或者为什么它能帮助软件项目成功,但很少有哪一本书能把针对开发者、管理者、测试者和客户的信息...
敏捷软件开发是一种强调快速反应和持续改进的软件开发方法。它倡导开发人员和利益相关者之间的紧密合作,推崇简单设计和对变化的拥抱。与传统的瀑布模型相比,敏捷开发更加适应于变化迅速的环境,并强调人的重要性,...
源自2001年发布的“敏捷宣言”,敏捷开发的核心理念是人与交互优于过程与工具,可工作的软件优于详尽的文档,客户合作优于合同谈判,响应变化优于遵循计划。 **敏捷开发的价值观和原则** 1. **个体和互动**:在...
敏捷软件开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调快速和灵活地响应变化,以适应不断变化的需求。敏捷方法反对繁重的文档和过度的预设计,提倡可适应性、可持续性和持续的客户合作。 书中,...
本文从敏捷方法的定义,提出背景,实施方法等方面对敏捷方法进行描述,并与传统软件工程方法相对比,分析敏捷开发的优劣。通过实际软件开发的案例分析软件生产的价值观,得出敏捷方法在软件开发中的价值。关键词:...
在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导...这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。
Scrum是敏捷开发中的一种框架,其核心理念是迭代开发与自我组织团队。Scrum框架包括三个主要角色:产品负责人、Scrum Master和开发团队,以及几个关键活动:Sprint计划会议、每日立会、Sprint评审会和Sprint回顾会。...
"敏捷开发方法与实践交流.pdf"这本书籍可能更侧重于实际操作和案例研究,分享了敏捷开发在实际项目中的应用经验和教训,帮助读者理解如何在团队中实施敏捷,如何进行敏捷规划、需求管理、迭代开发、每日站会、回顾...
这四条核心价值观背后反映了一种对于软件开发过程的新理解,即重视人与人的沟通、协作、软件的实用价值以及对变化的适应性。 敏捷开发的十二条原则进一步明确了这四个价值观的具体实践方向,其中包括: - 满足客户...
《Scrum实战——敏捷软件项目管理与开发》.pdf 度讲解:Agile and Tooling敏捷开发与工具.ppt 敏捷建模_极限编程和统一过程的有效实践.pdf 敏捷开发的艺术.pdf 敏捷开发知识体系.pdf 敏捷开发项目管理软件——...
**敏捷开发原理与实践** 敏捷开发是一种以人为核心、迭代、逐步交付的软件开发方法论。它强调在快速变化的需求环境中,通过灵活响应变化来提高软件项目的成功率。本章将深入探讨敏捷开发的核心理念,实践策略以及其...
敏捷开发与其他开发模型相比,更注重迭代和增量开发,即软件不是一次性构建完成,而是分阶段进行,每个阶段都会产出可以使用的软件。此外,敏捷方法鼓励团队成员之间的密切合作,减少不必要的管理层次,促进信息的...