敏捷开发之道(一)敏捷开发宣言

        从本篇文章开始,我们一起来探讨一下敏捷开发的相关内容。

        在讲解敏捷开发之前,首先需要大家思考一个问题,在软件开发过程中,什么是不可或缺的,什么又是软件开发可以暂时忽略的?为了缩小范围,我给大家提供如下几个选项。

                1、个体和交互

                2、过程和工具
                3、可以工作的软件
                4、面面俱到的文档
                5、客户合作
                6、合同谈判
                7、响应变化
                8、遵循计划

        对于敏捷开发来讲,更多的人认为在一个项目中,奇数项要比偶数项更加具有意义,当然并不是说偶数项没有意义,只是相对于奇数项而言,敏捷开发认为前者更加重要。

1、个体和交互胜过过程和工具

        现在团队开发中越来越看重成员的沟通能力,通常一个项目团队中不乏优秀的人才,但更多的人认为沟通、交流以及交互能力要比单纯的编程能力更为重要。拥有一批高水平程序员但成员之间不能进行交流的团队,相对于一个能力平均水平但交互良好的团队,后者更有可能成功。也就是2<1+1。
        合适的工具对于团队开发来讲是非常重要要的,然而,工具的作用很多时候都被无限放大,对于敏捷开发而言,人们认为,工具并不是最重要的,因为一个庞大或者笨重的工具,它们的更换和使用所造成的障碍要远远大于它们带来帮助。
        工具和团队的构建,很多时候,我们通常会先进行环境构建,然后慢慢糅合我们的团队,对于敏捷开发而言,这种方式是错误的。正确的方式是先致力于构建团队,其次才是在此基础之上进行环境的构建。

2、可以工作的软件胜过面面俱到的文档

        很多有过项目经验的人都明白,一个没有文档的软件开发是一场灾难,然而另一方面,我们还知道一方面,过多的文档相对于过少的文档所造成的困难更大,同时如果文档和代码之间失去同步,那么文档就变得毫无用处,甚至造成误导。
        很多时候我们因为文档而拖延项目进度,这时候我们应该更改我们的文档编写策略,敏捷开发认为文档编写的最佳时机应该时迫切需要并且有重大意义的时候。

3、客户合作胜过合同谈判

        软件项目因为其自身的特殊性,我们需要频繁的与客户进行沟通,客户也需要将他所需要的告诉我们,因此交付一个能够满足客户需要的系统,对于软件开发来讲至关重要。

        很多时候项目合同在项目未完成之前就失去了原有的意义,因为客户会不定期的变更一些需求,开发进行过程中,我们也会根据客户需求进行适当的调整,一个项目中,出现重大的调整是很正常的,因此,对于一个积极合作的客户来讲,项目初期进行的合同谈判明显不如前者更为重要。


4、相应变化胜过遵循计划

        现在的项目越来越看重计划的灵活性和项目的适应性,这是因为计划通常会随着外部因素而变动,用户在项目开发中会经常性的提一些新的需求,而我们在这之前所做的一切,即使前一秒还坚信不会变更的,下一秒可能就需要我们重新再来。
        对于管理者而言,优秀的项目管理不应该是把Gantt图当成衡量一个项目的标尺,因为随着团队对项目的认识和了解,客户增加新的需求,已制定的图丝毫不能解决任何问题,之前的计划所改变的将不仅仅是时间上的变化。
计划应该随着项目的改变而具有相当的灵活性,迫切的任务制定详细的计划,未来的任务粗略的进行规划,灵活掌握计划的可变性和灵活性相对于一个详细的计划而言更为重要。

        以上四点就是敏捷开发宣言中的重点,也是敏捷开发从出现到成熟所被广泛认同的四点。理解和掌握这些理念性的东西,对于项目经理而言,能够提高项目的管理层次。对于我们而言,更多的是创造自身的价值和发现更多的开发模式!

敏捷开发之道(一)敏捷开发宣言

上一篇:UVA 668 - Parliament(贪心构造)


下一篇:创建表序列的触发器