作者:张鹏

    什么是敏捷开发?

    敏捷开发是一种突出人的核心价值,循序渐进的开发方式。

    为什么说敏捷开发是以人为核心呢?

    软件的三个要素:程序,文档,数据。软件工程学的瀑布模型讲的也是文档的交流,一切都以文档为核心。 但是开发人员都知道,瀑布模型处理变需求是很恶心的,因为需求并不是一成不变的,但文档是死的。而敏捷开发中只需要必要的文档,而注重的是人与人之间的沟通和反馈。这里闲扯两句,瀑布模型是一个成熟的开发模式,但是它的弊端是处理问题过于教条,高举高打,最后阶段才进行测试,这样会造成开发人员在最后的阶段会有成堆的bug,可能有些bug会严重影响项目发布。现在有种提法是把scrum和瀑布模型结合开发。这里等到涉及scrum缺点的时候再写。

   为什么说敏捷开发是循序渐进呢?

    python之父Guido van Rossum说过:less is more,开发者认为,软件开发是一个庞大、精细、而又复杂的过程,把复杂的问题简单化是软件工程学需要解决的重要问题。敏捷开发是一个迭代的开发模式,就是说把一个复杂的模块分成若干个模块,又把这些模块再分割。实现将复杂的问题简单化。

    敏捷开发与scrum的关系:

    敏捷开发是技术规范,而scrum是敏捷开发的基于这种规范的实践。就像JMS与ActiveMQ,RESTful与java jersay一样。这里再闲扯两句:我一直不认为java是一个完全开源的语言,因为它的一些技术规范开源的并不多。

   scrum实践1:

    站立式早会:每天开个碰头会,说一下昨天做了什么,今天要做什么,有什么需要协调的,但是不谈技术细节。这样可以有效控制项目进度和风险,1个人也就1分钟左右,个人认为这样的效果要比发日报好,因为写到纸面上的总是没有面对面交流直观。

  scrum 实践2:

   任务面板:包括三栏:正在做的,还没做的,已经做完的,这样看一目了然,既能增加项目的可控性,也能增强开发者的成就感。

   scrum 实践3:

    计划纸牌:比如一个开发者写一个功能模块需要1个小时,他就把1个小时的纸牌抽中放在手里,而另一个开发者写同样的模块,他可能抽中代表5个小时的纸牌放在手里,最后把这两个人叫过来,让这两个人沟通为什么同样的模块计划实践却不一样。

    这篇博客就写到这里,年前会出C++ ACE框架解析,和linux的Orace安装实践,以及Hudson和maven的相关博客,敬请期待。