今明两天,公司从外专局联系专家给我们培训 敏捷开发,两位专家都是在国外工作20年左右的博士、大腕,经验丰富,跟他们做些沟通确实能够对 Agility 有更深的理解。
我03年底接触敏捷思想,04年充满激情的在开发团队中推广,后来基本上算是失败了,接下来几年也没有在刻意执着于什么样的名词,保留了敏捷的核心思想:沟通、质量,用自己的方式根据情况来推动开发工作。方法论方面基本上四不像,或者说我的管理手段本身就很敏捷,呵呵。
今天听两位专家讲课,并做了一些分组讨论和沟通,有几点感觉值得记下来跟大家分享:
1、敏捷并不适用于所有项目。
专家打了个比方:传统软件开发是炮弹,敏捷开发是巡航导弹。
如果是针对固定目标,使用炮弹的成本很低,而且命中率也很高。
如果是针对移动目标,则传统炮弹的命中率很低,要打中总成本很高,巡航导弹则会不断追踪目标并调整方向。
敏捷开发和传统软件开发,只是两种不同的招式,对付不同的项目,要用不同的招式,而且,经过几年的发展,现在两种方法互相融合的现象越来越明显。
2、业界对敏捷有误解。敏捷开发的最典型代表是XP,在其出现之初,由于其相对传统软件开发思想的叛逆性,其拥趸都有一定得狂热性,很多初试水者,并不是特别理性。有些人在采纳敏捷或者XP的时候,对其了解不够全面,往往会剑走偏锋,比如:敏捷说“可工作的软件重于文档”,但却被很多人理解为文档可以不要,甚至有些人在实践XP的时候,别人一提文档就会起急。
无论是敏捷还是XP,都需要适当的文档,只是XP对文档的样式要求不太严格,可以使画在纸上的草图,可以是画在白板上并拍下来的照片等等。
3、最常见的导致敏捷开发失败的原因,是部分采纳其最佳实践。
有些人看到敏捷所宣称的美好图景,只看到了其快捷、简单、自由的一面,却忽视了其严谨、复杂的一面。敏捷开发的很多实践,比如重构,比如代码共有、比如持续集成等等,都有一个最重要的前提,那就是:有完备的自动测试。而这一点,正是敏捷开发中最复杂,最难做到的,但它恰恰是核心。
做不到,又宣称自己是在敏捷开发,那么很容易演变成无序状态。因为没有手段保证重构的代码中不出现问题,随着codebase不断变大,需要救火的情况会越来越多。
4、敏捷开发是一种文化,对组织者的要求非常高。
传统软件开发管理过程,致力于通过限制和明确的规定来保证大家做的事情不跑偏。敏捷开发提倡一种文化,它希望通过激励和气氛,让所有人能够积极的参与,从而创造出更好的结果。
我个人非常喜欢敏捷开发,主要是因为书里对敏捷开发团队的工作场景的描述,太诱人了,多少年不看了,脑海里还留下如印象:
开发人员屋子的墙壁上,只要空白的地方就挂上白板,大家在白板上讨论的结果尽量不要擦掉。每个人都可以对白板上的设计图提出自己的疑问,随时展开讨论。结对编程,两个人一边沟通一边写代码,一个人敲代码,一个人在旁边提醒可能的错误,每隔一段时间互换。对代码精益求精,让人觉得是在雕琢一件艺术品。使用CRC卡片,像拍电影一样讨论故事场景和任务的分配。
这些是美好的,我也非常期待有一天我的团队能够这样工作,这需要合适的公司,合适的团队,还有,必须解决自动测试的问题。
分享到:
相关推荐
敏捷软件开发(Agile Software Development)是一种以人为核心、迭代、逐步交付的软件开发方法论。这种方法强调灵活性、快速响应变化以及高效的团队协作,旨在在不断变化的需求环境中提供高质量的软件产品。 标题中...
**敏捷软件开发**(Agile Software Development)是一种以人为本、迭代增量的现代软件工程方法论,它强调快速响应变化,通过持续反馈来提高软件项目的灵活性和效率。在《敏捷软件开发》这本书中,作者Alan S. Koch为...
英文扫描版,在别人的基础上加了目录
"Agile Software Development is a highly stimulating and rich book. The author has a deep background and gives us a tour de force of the emerging agile methods." 2006年英文chm格式 页数:504
### 用户故事在敏捷软件开发中的应用 #### 一、用户故事的概念与起源 - **概念**: 用户故事(User Stories)作为敏捷开发方法中的一个核心组成部分,最初源于极限编程(Extreme Programming, XP)。...
This master thesis identifies main bottlenecks in agile software development exemplified by research industry partner, the international advanced technology company, Ericsson. Theory of Constraints is...
Manifesto for Agile Software Development
### 敏捷软件开发最佳实践在大型项目中的应用 #### 引言 本书《敏捷软件开发:大型软件项目的最佳实践》由Thomas Stober与Uwe Hansmann共同编写,旨在分享他们在IBM WebSphere Portal产品开发过程中引入敏捷软件...
http://www.amazon.com/Agile-Software-Development-Cooperative-Game/dp/0321482751
**MSF for Agile Software Development 4.0 中文版** 微软解决方案框架(Microsoft Solutions Framework, MSF)是一种灵活的方法论,旨在帮助团队高效地管理软件开发项目。MSF for Agile Software Development 4.0 ...
User Stories Applied: For Agile Software Development <br>by Mike Cohn <br>Publisher: Addison-Wesley Professional (March 11, 2004) <br> Agile requirements: discovering what your users...
**Springer - Agile Software Development Best Practices for Large Software Development Projects.2010** - **最佳实践**: 这表明书中包含了经过验证的有效策略和技巧,这些策略和技术旨在帮助团队更有效地管理...
PDF, 高清,英文原版。 Lean Architecture: for Agile Software Development http://www.amazon.com/Lean-Architecture-Agile-Software-Development/dp/0470684208
### 敏捷经典:Enterprise-Scale Agile Software Development #### 核心知识点概览 - **组织层面的敏捷实施** - **大规模敏捷软件开发的最佳实践** - **敏捷过程建设的方法与技巧** #### 组织层面的敏捷实施 在...
agile software development - the cooperative game, 2ed
Agile.Software.Development:Principles,Patterns.and.Practices
在“Agile Software Development Presentation”中,我们看到了敏捷开发的核心原则和实践,这些原则旨在解决传统开发模式中遇到的问题,如延期、预算超支和低质量的软件产品。 1. **持续交付**:敏捷开发重视尽早并...
- **Scrum角色**:主要包括三种角色——产品负责人(Product Owner)、Scrum Master和开发团队(Development Team)。 - **产品负责人**:负责定义产品的愿景并确保团队专注于高价值的工作项。 - **Scrum Master**:...