`
阿尔萨斯
  • 浏览: 4174821 次
社区版块
存档分类
最新评论

敏捷是另一颗银弹吗?

 
阅读更多
这个问题其实是一个伪问题,因为大多数软件从业人员都相信没有银弹,但很多时候这一观念需要不断被强化。Ivar就说过,软件行业是一个时尚行业,人们不断将旧的概念包装和组合来创造新的概念。在过去十年中,先是面向对象/UML而后是CMM(I)被当成银弹来出售。据我个人的观察,敏捷有被神化成下一颗银弹的趋势。
那么什么是敏捷(Agile)呢?虽然敏捷这个概念近来很火爆,但当你向敏捷一个的狂热支持者提出这个问题的时候,那多半会看到一张茫然的脸。所以,我从Wikipedia中找到了下面的定义,我相信其他版本的定义也大同小异:
Agile Software Development is a conceptual framework for software development that promotes development iterations, open collaboration, and adaptability throughout the life-cycle of the project.
在这个定义中,指出了敏捷的三个要素:迭代开发、坦诚合作和自适应性,下面我们分别对这三个要素进行以下分析。
我们需要注意,迭代开发并不是一个新的概念,也不是敏捷所特有的。RUP在十年前就在强调迭代开发了。其实,敏捷在迭代方面并没有引入什么新的 东西,而且我注意到目前在敏捷语境下已经出现了一些对迭代误用(这一话题在以后的文章里在展开吧)。下面是Wiki里有关敏捷和其他迭代开发方法的异同:
Most agile methods share other iterative and incremental development methods' emphasis on building releasable software in short time periods. Agile development differs from other development models: in this model time periods are measured in weeks rather than months and work is performed in a highly collaborative manner. Most agile methods also differ by treating their time period as a strict timebox.
坦诚合作其实才是敏捷的精髓,如Ivar所说,敏捷其实是有关Social Engineering的。敏捷的主要贡献在于他更多地思考了如何去激发开发人员的工作热情,这是在软件工程几十年的发展过程中相对被忽略的领域。如何将 敏捷融入到整个软件工程的体系当中,这将是下一篇文章讨论的内容。
自适应性其实是一种后退,但是一种明智的、合理的后退。长期以来,人们经常试图将成功应用于建筑、机械等其他领域的项目管理方法强加到软件身 上。这些方法往往非常强调可预测性,但由于软件本身的特性,往往给开发过程增加了不必要的成本。正如Walker Royce所说,开发软件其实更象拍电影,所以管理的挑战更大。敏捷提出的自适应性其实是减低了对项目可预测性的不合理要求,解放团队让他们关注与交付客 户价值。
Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team will have difficulty describing exactly what will happen in the future.
以下十一条是Agile Manifesto背后的基本原则,其实你可以看到前四条是有关迭代的,后六条是有关团队合作的,最后一条是有关自适应性的。
1. Customer satisfaction by rapid, continuous delivery of useful software
2. Working software is delivered frequently (weeks rather than months)
3. Working software is the principal measure of progress
4. Even late changes in requirements are welcomed
5. Close, daily cooperation between business people and developers
6. Face-to-face conversation is the best form of communication (Co-location)
7. Projects are built around motivated individuals, who should be trusted
8. Continuous attention to technical excellence and good design
9. Simplicity
10. Self-organizing teams
11. Regular adaptation to changing circumstances
了解了敏捷之后,我们要如何面对时下火热的敏捷运动呢?首先是不要神化,不要迷信,不要迷失自我。存在即合理,你先有的开发流程和工作方式一定 有它的合理性,应渐进地采纳敏捷中一些合适的实践,仔细审视各种工件的合理性和必要性,要防止借敏捷的旗号来偷工减料(尤其是放弃必要的设计和架构工 作)。同时,也应该充分利用这次文化运动所产生的变革力量和热情,推动一些最佳实践(如迭代开发),打破一些对软件开发活动不合理的束缚。总之,要弄潮, 而不要被潮水裹挟,Be Smart。
分享到:
评论

相关推荐

    认识微服务——一颗银弹

    如今微服务架构正逐渐演变成一种主流的架构风格,那么微服务架构是一颗银弹吗?我们提倡微服务架构的目的是什么?1987IBM大型机之父FredBrooks在《没有银弹:软件工程的本质性与附属性工作》中提出软件工程包括本质...

    自动化测试:真的是银弹?

    自动化测试:真的是银弹?软件测试没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性。Brooks鼓励我们将技术和方法视作一种演进手段,而并非革命。将自动化技术引入...

    微服务是传统企业电商解决方案的银弹吗.docx

    微服务是传统企业电商解决方案的银弹吗.docx

    自动化测试-蛇油还是银弹?

    前言 蛇油还是银弹? Snakeoil在英谚中指“骗人的万灵油”,用来指那些宣称万灵却实际没什么用处的骗人把戏。 silverbullet则指能解决难题的特殊的有效手段。来源于银弹可杀死吸血鬼的传说。 而...

    没有银弹ppt

    没有银弹《没有银弹》是Fred Brooks在1987年所发表的一篇关于软件工程的经典论文。该论述中强调真正的银弹并不存在,而所谓的银弹则是指没有任何一项技术或方法可以能让软件工程的生产力在十年内提高十倍。Brooks...

    没有银弹 Frederick P. Brooks Jr.

    《没有银弹:软件工程的本质性与附属性工作》(英语:No Silver Bullet — Essence and Accidents of Software Engineering)是IBM大型机之父佛瑞德·布鲁克斯所发表一篇关于软件工程的经典论文

    自动化测试:真的是银弹?

    曾在1986年写过一篇题为《没有银弹:软件工程的根本和次要问题》的文章(NoSilverBullet-EssenceandAccidentsofSoftwareEngineering)。这篇文章列举了人们对于软件工程技术发展的一些期望,并与现实进行了对比。他...

    没有银弹软件工程中的根本和次要问题.doc

    没有银弹软件工程中的根本和次要问题.doc

    论银弹的存在

    引子(一年前我写作此文,实在是因为看不惯对于软件技术进步、软件技术革新,国内多少年来总有一些人老是热衷于喊世界上“没有银弹”,全以为自己对软件科技看穿了、看透了(他们真读懂了《人月神话》?),便喜欢对...

    没有银弹-软件工程中的根本和次要问题 英文版

    没有银弹-软件工程中的根本和次要问题 英文版

    分布式追踪不是银弹.pdf

    分布式追踪不是银弹.pdf

    大数据没有唯一的银弹.docx

    大数据没有唯一的银弹.docx

    人月神话--没有银弹 PPT

    人月神话--没有银弹 学习用PPT 作业用也可以 一些分析,一些见解,值得一看

    敏捷个人和敏捷开发

    我在今年6月份上海举办的ScrumGathering中进行了一场敏捷个人话题的分享,我说到,想要Doing敏捷并不难,只要花上几天功夫学习敏捷知识之后就可以在小范围团队中去实践了,而要做到真正的Being敏捷则并不容易,而...

Global site tag (gtag.js) - Google Analytics