写点什么

敏捷开发之路

  • 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:002497

评论

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

Android:这是一份全面&详细的-热修复-学习指南(1),统统给你解决

android 程序员 移动开发

BindService的生命周期分析【我读源码你不读,我吃螃蟹你吃土

android 程序员 移动开发

BottomSheetDialog 使用详解,设置圆角、固定高度,移动开发工程师

android 程序员 移动开发

cmake使用教程(九)-关于安卓的交叉编译,腾讯&字节&爱奇艺&网易&华为实习面试汇总

android 程序员 移动开发

Dagger2入门系列一:基础使用,从基础到源码统统帮你搞定

android 程序员 移动开发

ARouter系列2:源码分析,移动端跨平台开发

android 程序员 移动开发

BATJ面霸:程序员可是要改变世界呀!阿里巴巴3面(1),flutter下载文件

android 程序员 移动开发

王者荣耀商城异地多活架构设计

缘分呐

架构设计

Coroutine 基本原理,吃透这份阿里P8纯手打Android面经

android 程序员 移动开发

kubernetes系列随笔02:docker技术原理

Geek_cd6rkj

Docker Kubernetes 容器

Android:这是一份全面&详细的-热修复-学习指南,含泪狂刷Android基础面试118题

android 程序员 移动开发

ARouter源码详解,androidjni开发流程

android 程序员 移动开发

SAP云平台运行环境Cloud Foundry和Neo的区别

汪子熙

云平台 SAP 11月日更

cmake使用教程(一)-起步,移动应用开发就业

android 程序员 移动开发

云小课|大数据时代的隐私利器-GaussDB(DWS)数据脱敏

华为云开发者联盟

EI智能体 DWS数据脱敏 数据仓库服务GaussDB(DWS)

CountDownLatch 源码分析示例,《Android面试题及解析》分享给大家

android 程序员 移动开发

BATJ面霸:程序员可是要改变世界呀!阿里巴巴3面,移动客户端开发岗面试题

android 程序员 移动开发

cmake使用教程(三)-安装(1),kotlin入门项目

android 程序员 移动开发

BindService的生命周期分析【我读源码你不读,我吃螃蟹你吃土(1)

android 程序员 移动开发

cmake使用教程(三)-安装,程序员去大公司面试

android 程序员 移动开发

Python爬虫私活,代码公开!采集了20000+漫展历史数据,一言不合就开源

梦想橡皮擦

11月日更

AOP与OOP有什么区别,谈谈AOP的原理是什么,腾讯T2大牛亲自讲解

android 程序员 移动开发

CAS机制详解,android开发基础知识点

android 程序员 移动开发

Code Review&编程习惯(1),安卓网络通信开发

android 程序员 移动开发

测试用例又双叒叕失败了,NLP帮你来分析

华为云开发者联盟

软件 测试 nlp 测试用例

Android:知道类加载过程面试还是卡壳?干货总结,安卓运行内存监控

android 程序员 移动开发

Canvas加动画,实现火柴人跳绳效果,2021Android开发面试解答

android 程序员 移动开发

Context都没弄明白,还怎么做Android开发?,靠着这份面试题跟答案

android 程序员 移动开发

ASM插桩--多线程运行监测,2021Android大厂面试经验分享

android 程序员 移动开发

BAT常见Android面试20题详解,小白看完都会了

android 程序员 移动开发

Code Review&编程习惯,安卓工程师面试题

android 程序员 移动开发

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