在我很小的时候,家里人给我起了一个绰号:“Bu’why”,这是因为我总是向周围的人问为什么。大多数时候,他们会尝试解答我的问题,但是后来他们给我的这个绰号中也流露出了他们的挫败感。
直到现在,我依旧执迷于事物背后的真正原因。因为我想知道交通拥堵背后的真正原因,于是我读完了一整本关于交通模式的书籍。因为我想尝试得到更好的休息,我读完了一本关于睡眠的书籍。我坚信,‘为什么’是至关重要的。
已经被公认或确定的是正确且最高效的商业、专业流程。(维基百科)
不幸的是,大多数人想要的是“什么”而不是“为什么”。他们需要处理的事情太多了,他们需要的是能解决他们手上的问题的现成的解决方案:节流、软件模型、制定计划、软件开发方法论、只要你坚持下来,你就能得到承诺于你的一切。
“我们上一次尝试的系统因为其自身的先天缺陷被视为一个失败品,而这个新系统比上一个更好,这一次一定非常棒。”, Holy Grail 说。可能借助新系统事物的发展不至于太糟糕,但是对其抱有的期望高的有点不切实际了。没有人变得更开心,因为实际上并没有显著的提升。这到底是为什么?
2012年,当我在Nordstorm创新实验室工作时,我第一次知道了Cynefin框架。它着眼于给定系统的复杂度,然后来决定什么样的方法可以用在这个系统上。它把系统拆成了四个类别,通常用四个象限表示:
你会注意到,越复杂难预测的系统随着时间的推移,创建的那些尝试预测这个系统的规则需要做的适应修改的地方越多。道理都是类似的。就拿股票市场这个复杂的系统来说吧,他的波动规律就经常性地打脸那些尝试预测他的上涨下跌周期的股票理论的脸,作何理论在他面前都变得无用,要在这种领域有所作为,不能一劳永逸,需要不断学习和适应。
问题是:软件开发在这个连续过程中处在什么位置?有人可能会说这只不过是个工程问题,所以这就像设计建造摩天大楼那样按部就班做即可。另一些开发软件的过程中受到挫折的人,可能会说这就像历史中记载的自然灾害那样完全不可预测。
有时这很复杂,有时这很混乱无序。大多数时候,这是复杂的。
Cynefin告诉我们,没有一套最佳实践可以告诉我们如何在给定的复杂系统中采取行动。它也确实指出一些初始的启发式类的方法是有用的,而我们的重点应该是探索问题领域,并随着时间的推移调整我们的方法。
这听起来很熟悉,不是吗?每当开发团队为给定的项目采用一种新类型的功能时,不确定性就会上升。要知道一个给定的解决方案是否有效,唯一的方法是多探索一下。这就是正在开发的软件系统。还有五个复杂的系统在起作用:
上述系统中的任意一个都能轻易地导致一个排期紧密的开发项目出现问题:一堆意料之外的影响了正常业务的线上bug,开发团队成员突然的身体不适,业务方提出的关于发展方向上的改变。
这就是为什么要实施敏捷。敏捷帮助开发团队来应对前面提到的所有问题,同时建立一个随时间变化而适应当前形势的框架。敏捷向开发团队提供了一套使之变得最棒、最具有生产力的工具。
接下来会讨论一些特定的“礼仪”以及它们存在的理由。我们需要摆脱“必须”和“应该”的思维模式,我们不这么做是因为它们是必要的,我们这么做是因为我们想从中得到一些我们想要的东西。如果我们没有办法再得到我们想要的,那么我们需要作出一些改变。
现在,那些敏捷教练说的诸如“在你接受采用敏捷的早期,你的估算会被停止”的言论是有道理的。这一切都是因为你处在一个逐步适应和提高的过程中。你的估算会更精确,困难阻碍会被解决,团队也会逐步减少历史遗留下来的技术债务问题。
控制系统的一部分,允许其进行反馈和自我修正,以及可以根据实际输出结果和期望的理想输出结果之间的差异调整其接下来的操作。 (American Heritage® Dictionary)
敏捷可以创建一个引导你走向你的最终目标的反馈循环。每一步都是一个小的胜利,让你感觉良好,给你带来更多的胜利。它就像一个恒温器,只不过你暂时还不知道目标温度是多少。事实证明,反馈循环也是测试驱动开发(TTD)和精益创业背后的本质。
这里留给读者一个问题:如何调整你的软件开发反馈循环来使你的团队成为最棒的那个?在我的第二篇敏捷文章:可定制的敏捷中,我会为各位读者提供一些思路和想法。
本文地址:https://www.oschina.net/translate/the-why-of-agile
原文地址:https://blog.scottnonnenberg.com/the-why-of-agile/
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
原网址: 访问
创建于: 2018-11-07 02:03:11
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论