敏捷开发 1朋友,你听说过敏捷么?

Posted 用心玩手机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏捷开发 1朋友,你听说过敏捷么?相关的知识,希望对你有一定的参考价值。


敏捷的诞生 



千禧之初,美国在计算机行业已经走了几十年,瀑布流、螺旋模型、快速迭代...各种各样的软件开发流程雨后春笋各领风骚一段时间。虽然不断变化和完善,但互联网的加速发展让传统方法显得笨重,难以快速适应变化。有十七个程序员(程序员改变世界)在美国犹他州的一个风景区开了个碰头会,找到了一个团队耦合度高,流程极其灵活的方法,他们把它称为agile program development。


盐湖城- snowbird

(敏捷联盟成立地——雪鸟滑雪场)


这十七个人如同开宗立派的长老,在会议之后给自己起了个名字“敏捷联盟”,他们不仅赋予了新方法名字,还有宣言,甚至纲领。




《敏捷宣言》

我们通过身体力行和帮助他人来揭示更好的软件开发方式。

经由这项工作,我们形成了如下价值观:

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

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

客户协作 重于 合同谈判

响应变化 重于 遵循计划

在每对比对中,后者并非全无价值,但我们更看重前者。



《敏捷开发十二原则》

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

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

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

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

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

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

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

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

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

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

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

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






敏捷的相关概念 




Agile:迅速,敏捷。

这是敏捷的理念也是精髓:迅速响应需求,快速反馈结果。

agile 的引入像一股活水冲击着老气横秋的瀑布流模型,速度上跑赢几条街。


Sprint:字面意思是短跑冲刺。

一个开发阶段被认为是一次冲刺,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。一个个 sprint 首位相连,构成一个项目。


Scrum:英式橄榄球中一股脑争球的一战术或行为。

scrum 即为这样一种方式,大家一拥而上,团队是球员,球是产品目标,人员环环相扣,围绕着产品目标进行工作。是一个用于开发和维护复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成。


Product Backlog:即需求池。

Backlog 里面写什么:1.待开发任务。2.任务优先级。

敏捷需要维护一份详尽的需求列表。这份列表常常要求 scrum 持有人(一般是产品经理)对所有待开发事项有深入了解,并且能够把待开发事项分解成更为细致的任务(或者跟敏捷教练一起,后面我们会再次提到敏捷教练)。


Story board:故事版

很多领域都有故事板的概念,交互领域里,用故事板表述用户场景、电影领域里故事板用来更具体地描述分镜。在开发领域,故事版是任务流转的可视化窗口,一般有“待开发”“开发中”“待测试”“返工”“待发布”几个区块,所有任务由任务操作者负责流转至于下一个步骤,这样任何一个人项目成员都能看到任务的完成情况。

【敏捷开发 1】朋友,你听说过敏捷么?

故事板展现所有需求的工作流



Burn down chart:燃尽图

一个 sprint 内,人/时是一个比较固定的值。在这个时间框架充分安排开发任务,每天进行时间结算,绘制时间燃尽图。项目成员通过燃尽图获知时间进展,若项目燃尽所用时间与预期时间契合,则需求时间预估和安排合理,若不契合则需要在下一个 sprint 进行调整。




敏捷的特点 



1.  以“复杂系统”为背景(Complex System Context

“敏捷典型”是以“复杂系统”为背景。人对于世界的认知和理解始终朝着减少未知 “Unknown”和不确定性 “Uncertainty”两个方向前进,对于未知需要逐步理解(Understandable),而对于不确定性,通常是提前预测,通过反馈,来获得判断(Predictable)。因此可理解和可预测也成了人认知世界的两个纬度。



2.  以人为核心驱动(Human-Driven

无论对“目的”而言,还是“过程”而言,在运用“敏捷”方法时,“人”都是认知和运转“复杂系统”过程中的核心驱动力。

所以这也对运用“敏捷”方法的“人”提出要求,需要思维模式和价值观的支撑,才能真正理解并运用“敏捷”方法。在《管理3.0》一书中,作者Jurgen Appelo给出了一个具有六只眼睛的异形生物,并取名为“Martie”,代表了运用“敏捷”方法的人应该所具备的六种思维模式:


Energize People 有效激励

Empower Teams 赋能团队

Align Constraints 调和约束

Develop Competence 发展能力

Grow Structure 结构成长

Improve Everything 全面改善



Martie



3.  具有适应能力的经验性过程控制(Adaptive Empirical Process Control

“敏捷”的第三个特征便是:“敏捷”实际上是一种经验性的过程控制方法。作为一种方法,通常都具有一定的目的性,而为了达成目的,势必要实施一定的过程控制,才能提升达成目标的几率。而在“复杂系统”的背景之下,“瀑布式开发”所代表的预定义过程控制(Predefined Process Control)已不再适合,而以人为核心驱动的经验性过程控制(Empirical Process Control)将具有更高的适应性和灵活性,同时也能充分发挥“人”的潜能和价值。







未完待续







参考文献:

Waterwalker(知乎提问:什么是敏捷?)

https://www.zhihu.com/question/30945320?sort=created

Scrumcn中文网

http://www.scrumcn.com/agile/scrum-knowledge-library.html

薄玉桴(腾讯云:你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版))

https://www.qcloud.com/community/article/766331?fromSource=gwzcw.93748.93748.93748






以上是关于敏捷开发 1朋友,你听说过敏捷么?的主要内容,如果未能解决你的问题,请参考以下文章

关于团队敏捷开发实践的 6 个常见问题 | Linux 中国

什么是敏捷开发?

如何用敏捷开发打造一支无往不胜的团队?

新加坡最会Scrum的人终于松口,原来这才是敏捷开发的秘笈!?

你真的知道敏捷和迭代吗?

自我管理杂谈:用敏捷开发策略做自我管理