换个角度看敏捷1-敏捷问题解决方式

敏捷问题解决方式

敏捷是什么?这是我一直在思考的一个问题,同时也在敏捷之旅2010成都站提出。这似乎是一个不值得推敲的问题,敏捷就是“敏捷”。但为何某些实践可以称为敏捷实践?方法学可以称为敏捷方法学?是不是存在一根看不见的线把这一切关联起来?

这让我如此着迷,没有什么能够比寻找答案更让人着迷了。下面就是我的尝试,肯定不完善,但即使是小小的帮助也是一个进步。

作为问题解决方式的敏捷

“敏捷”是一种问题解决方式,是在问题本身或问题解决能力不能确定的情况下取得尽可能好的结果(近优解或更优解)的问题解决方式。

基本做法


1.         角色划分

在敏捷问题解决方式中,问题提出者的作用得到强调。问题被按照问题提出者可理解、可检验的方式进行分解,问题提出者负责对分解后的单位问题进行检验。而问题解决者需要与问题提出者密切配合,共同进行问题分解和检验适应。

2.         迭代

敏捷问题解决方式强调问题分解后的多次完成与反复验证。迭代是敏捷问题解决方式的基础要素,也是对问题提出者合适的时间周期。在一个迭代的单位时间内至少完成一个由原问题分解而成的单位问题。

3.         问题分解与检验

敏捷问题解决方式是以问题分解与检验为中心进行推进的。在问题分解阶段,以问题提出者为中心进行问题分解,包括优先级设定,确保单位问题符合客户理解与期望,不会破坏问题完整性。在单位时间末尾,问题提出者和问题解决者对问题完整性进行检查,能够得到问题反馈和问题解决能力反馈,双方均可以在下一个单位时间内进行改进。

4.         单位问题解决

敏捷问题解决方式重视单位时间内的“完成”。敏捷问题解决方式力图保证将大部分时间用于解决单位问题。

复杂问题


敏捷问题解决方式针对复杂问题采用层层分解,逐级反馈。

1.         角色划分

在面对复杂问题时,敏捷问题解决方式将角色划分为多层次的问题提出者与问题解决者。这些多层次的问题提出者与问题解决者需紧密沟通与协作,共同解决问题。

2.         问题分解与检验

a)         在每一层次

依然是问题提出者与问题解决者的协作关系。依然是问题分解、问题解决和检验适应3个步骤。

b)        在层次之间

上一层次的问题解决者成为了下一层次的问题提出者。下一层次的整个过程成为上一层次的问题解决步骤。

特点

1.        

敏捷问题解决方式是以人为中心的问题解决方式。问题的解决与否依赖于人的检验。问题解决的过程依赖于人与人的沟通与协作。

2.         专注

在单位时间内,作为问题解决者的个人是不可分解的最小单位。

3.         沟通与协作

问题的解决依赖于问题提出者与问题解决者的沟通与协作。

4.         行动派

严格的时间盒控制,保证大部分时间应该放在问题解决上。

5.         检验适应

敏捷问题解决方式是以反馈为基础的问题解决方式。在单位时间结束后,创造有效反馈。推进问题的解决,加深对问题的认识和增强问题解决能力。

敏捷问题解决方式与敏捷宣言

软件开发是问题本身和问题解决能力不确定的一种典型情况。而敏捷问题解决方式与敏捷宣言是相适应的,下面以敏捷问题解决方式来解读敏捷宣言。

《敏捷宣言》中的4条价值观:

1.         个体与交互 重于 过程和工具

在敏捷问题解决方式中,问题的解决取决于问题提出者和问题解决者的能力和他们之间的相互协作,过程和工具是相对次要的,只有在满足前者的基础上才有作用。

2.         可用的软件 重于 完备的文档

问题解决的结果重于中间产物,敏捷问题解决方式不鼓励将时间大量投入到文档的完备化,而应该投入到问题解决上。

3.         客户协作   重于 合同谈判

软件开发是客户与软件开发商共同解决问题的过程。客户作为最关键的问题提出者,与问题解决者的协作是解决问题的关键。

4.         响应变化   重于 遵循计划

所有的预测都仅仅是预测,通过敏捷问题解决方式,我们可以适应变化并快速学习。

《敏捷宣言》背后的12准则:

1.         我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。

为客户解决问题是软件开发的最重要的目标。

2.         欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。

问题可能随时会变化,软件开发是以问题提出者为中心解决问题提出者的问题,因此重要的是解决问题而不是限制变化。

3.         要不断交付可用的软件,周期从几周到几个月不等,且越短越好。

检验适应是敏捷问题解决方式的核心方式,不断以客户可检验的方式交付可用的软件。

4.         项目过程中,业务人员与开发人员必须在一起工作。

业务人员作为软件开发的问题提出者,需要与软件开发团队(问题解决者)密切配合,促进问题解决。

5.         要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。

问题解决取决于人的投入程度与状态,激励项目人员,为他们创造环境和条件,能够有助于问题的解决。

6.         无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。

敏捷问题解决方式推荐进行面对面的沟通与交流,这是人与人合作解决问题的最好沟通方式。

7.         可用的软件是衡量进度的主要指标。

只以单位问题的解决结果也就是完成作为进度衡量的指标。

8.         敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。

在敏捷问题解决方式中,良好设计的迭代与稳定的迭代进度是最有效的和最可预测的问题解决方式。

9.         对技术的精益求精以及对设计的不断完善将提升敏捷性。

不断追求更高效的解决问题,技术与设计是解决软件问题的重要手段。

10.     要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。

问题的解决不取决于解决方案的复杂性,而是源自于对问题提出者和问题本身的深刻理解。当然,问题解决方式本身也是重要的。

11.     最佳的架构、需求和设计出自于自组织的团队。

问题提出者与问题解决者所组成的团队是解决问题的最佳组合,发挥团队的力量解决问题远胜于不明情况的指手划脚。

12.     团队要定期反省如何能够做到更有效,并相应地调整团队的行为。

检验适应是敏捷问题解决方式的核心。

posted on 2011-01-30 14:33  大卫张  阅读(907)  评论(3编辑  收藏  举报

导航