写点什么

敏捷开发之路

  • 2017-03-21
  • 本文字数:1707 字

    阅读完需:约 6 分钟

Dan Suciu 提出:相较于传统那种迫使团队成员适应一种特殊开发流程的项目管理方案,敏捷开发范式的流程更顺应人类本性。Dan Suciu 是来自 UBB Cluj(一家在线教育网站 http://elearning.ubbcluj.ro/ )的讲师,他在 TopConf Linz 2017 大会上发表了关于 Agilis Humanum Est(To Be Agile is Human) 的演讲。

演讲之初,Suciu 对 Gregory Bateson 关于人类如何基于学习和变化的逻辑层次来进行学习的理论进行了讲解:最初级的层次是了解环境并从中发掘出哪里需要改变;下一层次是接受惯例和学习新的习惯;接下来的层次是提升技巧和能力;之后的层次是建立自己的价值观和信仰。最高的两个逻辑层次致力于塑造价格观和自我定位。

学习新事物的时候都会经历这些逻辑层次。任一逻辑层次中的任何改变都会推动迈向更高的逻辑层次,而更高的逻辑层次也需要不断作出改变。Suciu 以吸烟者尝试戒烟为例,讲述了一个人要改变他的习惯非常困难。如果真的想要戒烟,必须先改变价值观和对于吸烟的观念,之后再去改变吸烟这个行为就会容易的多。

Suciu 阐释了敏捷开发如何映射到 Bateson 的学习模型:敏捷开发的提出始于“发现更好的软件开发方法”的概念。这个概念与当时学习模型所说的环境和概念层次相匹配。基于这个概念,各个组织就可以建立自己的敏捷开发理念和敏捷开发方法。敏捷开发四大价值观根源于这种学习模型的价值观和信念等级。

知道敏捷开发的价值观是值得肯定的,但是如果想要学习像敏捷开发这样新鲜的事物,所需要的不止如此。敏捷开发中的各种原则,正对应了学习模型中技巧和能力层次。有许多惯例和工具可以用来实现敏捷开发原则,这属于行为习惯层次。这些惯例被归类为敏捷方法,例如 Scrum 或 XP,也会有许多书来介绍如何实践这些方法,Suciu 称之为环境层次。

纵观上述敏捷开发的各个层次,就可以解释为什么从提出敏捷概念,到提出敏捷方法,再到养成敏捷习惯,直到拥有自己的敏捷理念和见解会花费非常长的时间。Suciu 提到,有三个陷阱是在各个层次阻碍我们实现敏捷的主要难题:

  • 环境(最佳惯例)
  • 习惯(复杂性)
  • 技巧和能力(适应性)

我们经常被最佳惯例所迷惑。我们经常听说别人如何做,然后我们照着同样的方法做,但是却没有效果。我们看到的典型和教材都是关于理想化的项目。它们描述了特定的角色和惯例来解释如何用敏捷方法来开发项目。但现实世界并不是那样;我们不能照搬那些角色和惯例,因为我们的环境不同。因此,我们必须调整这些角色和惯例来适应我们所处的环境。

我们也经常被复杂的方案所迷惑。我们通常认为复杂的方案会更好。如果我们发现了简单的方案,我们甚至不相信它是正确的。Suciu 引用了 Stefan Roock 的话:

所有复杂的方案都是错的

我们通常会更欣赏提出复杂方案的人,认为他们更聪明。

我们习惯于错误的事情,但是我们因为离得太近而不能意识到这一点。习惯让我们很难发现提升工作方式的方法。

Suciu 分享了自己的一段个人经历:他曾经损坏了自己眼镜的一个镜片,然后配镜师给他换了一个彩色的镜片。尽管他将这副眼镜戴在眼前整整一个月,他都没有发现两个镜片的差异。

当团队沉浸在往日的成就,认为一切正常并且没有什么需要改进时,效率就会降低。Suciu 建议回过头以另外一种视角观察,也许就会发现,团队成员可能太沉浸于做事而忽视了做事的方法。

作者简介

Ben Linders是一名在敏捷开发、项目改进、项目质量和持续改进方面的独立顾问,居于荷兰。他是 Getting Value out of Agile Retrospectives Warrdevolle Agile Retrospectives What Drives Quality Continous improvement 的作者。他作为顾问、教练、导师,帮助企业实施高效软件开发和项目管理。他致力于持续改进、交流协作和高效开发,向客户传递商业价值。Ben 是敏捷开发、项目改进和项目质量网络的活跃成员,也是一位活跃的演说家和作者。他在 bilingual blog(Dutch and English) 分享他的经验,同时也是 InfoQ 关于敏捷开发领域的编辑。欢迎在 twitter 上关注他, @BenLinders

查看英文原文: Learing to Become Agile


感谢刘志勇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-21 19:002097

评论

发布
暂无评论
发现更多内容

golang的内存管理

六月的

golang 内存管理

go channel原理及使用场景

六月的

Go channel

go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务

六月的

Docker-compose go-zero

goroutine&waitgroup下载文件

六月的

goroutine waitgroup

golang单元测试一(简单函数测试)

六月的

golang 单元测试

OKR之剑·理念篇03:OKR理念认同

vivo互联网技术

团队管理 OKR 目标管理

实现etcd服务注册与发现

六月的

Docker-compose go-zero

golang中的几种并发模式

六月的

golang 并发模式

rabbitmq原理和应用

六月的

Go RabbitMQ

react源码中的fiber架构

flyzz177

React

go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控

六月的

Docker-compose go-zero

go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪

六月的

Docker-compose go-zero

golang中的一些实用功能

六月的

golang

PaddleNLP基于ERNIR3.0文本分类:WOS数据集为例(层次分类)

汀丶人工智能

nlp 文本分类

【LeetCode】水果成篮Java题解

Albert

算法 LeetCode 10月月更

go-zero docker-compose 搭建课件服务(一):编写服务api和proto

六月的

Docker-compose go-zero

go-zero docker-compose 搭建课件服务(三):编写courseware api服务

六月的

Docker-compose go-zero

go-zero docker-compose搭建课件服务(四):生成Dockerfile

六月的

Docker-compose go-zero

租房小程序使用uniapp展示地图map

源字节1号

小程序开发

Java中的接口详解

共饮一杯无

Java 接口 10月月更

go-zero docker-compose 搭建课件服务(二):编写courseware rpc服务

六月的

Docker-compose go-zero

etcd实现分布式锁

六月的

分布式锁 etcd

你知道Redis为什么要设计成单线程吗

芥末拌个饭吧

后端 redis 底层原理 10月月更

go-zero docker-compose 搭建课件服务(六):完善jwt鉴权和返回结构

六月的

Docker-compose go-zero

react源码中的协调与调度

flyzz177

React

部署 SAP UI5 应用到 SAP BTP 时遇到的 error retrieving MTA 错误消息

汪子熙

云原生 Cloud 云平台 SAP 10月月更

go-zero docker-compose 搭建课件服务(五):完善user服务

六月的

Docker-compose go-zero

深入浅出redis缓存应用

六月的

redis

golang中的选项模式

六月的

golang 选项模式

Lerna最佳实践(内含大量代码)

鲸品堂

代码 lerna

数据驱动型企业如何借助「新一代智能协作」提升研发效能?

LigaAI

人工智能 数据驱动 亚马逊云科技 企业号十月PK榜

敏捷开发之路_Scrum_Ben Linders_InfoQ精选文章