刘凯的博客

导航

敏捷主义,关于敏捷的思考和启发

    这片文章是我这些日子以来通过读书获得的一些关于敏捷开发的思想,以及这些思想对我的启发。
 
    这篇文章不会讨论具体的敏捷方法,而是讨论一下敏捷和早期开发方式在原则和逻辑上的区别。这些区别也是我们在实践敏捷中最容易忽视的,我们很容易就能记住每一个敏捷方法的特点,但是对于敏捷开发别后的原则和哲学,却甚少深思。
 
    在传统的瀑布式开发方式中,前期的分析和设计是最重要的,项目中的代码不过是按照这个设计严格制造出来的产品,而项目中的程序员也只是按照已经做好的设计进行生产的代码工人而已。传统的瀑布式开发方式是把软件也当成一个工业制成品来设计和生产的。
 
    在敏捷开发方式中,最重要的原则是代码不是设计出来的,而是生长出来的,在一些权威的关于敏捷开发的书中,关于代码的描述中用的最多是evolvo这个单词。Evolvo这个词只能用于一个有机体,不可能用在一个工业制成品的身上,一个工业制成品是不可能进化的,你看到过一块肥皂能进化吗? 如果我们真的要拥抱敏捷的话,我们首先需要改变的是我们对代码的看法,代码在敏捷开发中是设计和业务逻辑的最终和最重要的载体,是一个能够根据需求不断进化的有机体。
 
    敏捷和瀑布模式代码观念上的区别,必然导致的是这两种开发方式对开发人员的不同要求。在传统的瀑布开发方式中,开发人员只是负责把设计文档翻译成机器能读懂的代码,仅此而已。敏捷开发从它产生的第一天起就强调了对开发人员的重视。敏捷强调代码的进化和重构,要求开发人员能够发现代码中的一些不好的设计和不能清晰地体现设计的代码,并能够对其进行重构和改进。
 
    说的简单点,传统的开发方式中,开发人员是操作工,是不需要独立思考的,只需要按照传统的工业生产方式进行简单的重复劳动就可以了,也不需要有任何判断力。但是在敏捷开发中,开发人员是园丁,他们要查看代码是不是在朝正确的方向发展,并且不断地对代码进行修剪和保养,这就使得开发人员在敏捷开发中不再是一个重复劳动的工人,而是一个需要有独立思考和判断力的手艺人。
 
    敏捷开发相比于原有的瀑布开发方式,最大的优点也正在于对开发人员的解放和信任,但是也无形中提高了对于基层开发人员素质的要求。如果你的开发人员中没有形成一种手艺人的态度的话,任何敏捷方法都是必然会破产的。很多项目和公司采用敏捷失败的原因不是他们实践敏捷方法的细节有什么错误,而是他们从一开始找的人就错了,他们的开发人员中没能形成这种手艺人的态度。什么是手艺人?手艺人就是把自己做出来的每一件东西都当成自己的作品,自身品味和精神的一个载体,体现着自己的价值和审美。把自己做的东西当成产品还是作品,是操作工和手艺人最大的区别。
 
    所以说一个软件开发公司如果真的想很好的实行敏捷开发,就首先要在开发人员中培养手艺人的态度。在中国实行敏捷开发,最难的不是怎样去实践敏捷开发的具体细节,开个scrum站立会议,弄块儿白板做Kanban,这些都不是最难的,最难得是怎么找到或培养符合敏捷精神的开发人员。中国文化中最缺少的就是手艺人的态度,因为中国的传统思维是万般皆下品,唯有做官高,权力在中国这片土地的回报率实在是太高了,以至于所有其他工作的投资回报率在它面前都相形见绌。我的很多同事和朋友,在做了许多年的开发工作后,仍然想当manager,这种选择无可厚非,因为它从一个侧面说明了中国文化中对权利的迷恋是多么的普遍和长久。在这样的文化基础上实行敏捷尤其要注意手艺人精神的培养。
 
   说了这么多敏捷开发的特点,举个不见得恰当的例子来加深一下理解吧。传统的开发方式就相当于计划经济(如果不知道什么是计划经济的童鞋,请回家问父母,实在篇幅有限,无法在此普及),更相信精英进行的顶层设计,迷恋于对流程的定义和控制,不相信也不依赖基层参与者的创造力和自我决策,基层参与者被物化成了一个个活的机器或是蚁群中的工蚁。敏捷开发却更像市场经济,它当然也注重精英对社会的设计和他们的领导作用,但是它同时更尊重经济活动中每一个基层参与者的自我决策和创造力。敏捷开发的根本优势在于对人的解放,对开发人员的尊重和信任,承认他们是软件开发活动中必不可少的创造者而不仅仅是一个操作工。
 
   关于敏捷开发,我上面已经说了很多了。关于敏捷开发的原则和实践,大家可以参考robert martin写的那本“敏捷开发原则,模式与实践”这本书,这本书也是在我学习敏捷开发的过程中对我影响最深的一本书。
 
   敏捷开发最基本的原则就是敏捷联盟发布的敏捷宣言,一共有四条,具体的条目我就不在此一一列举了,大家可以看我上面推荐的那本书。这四条敏捷宣言,不仅影响了我对敏捷开发的理解,更是深刻的影响了我的人生观。我将敏捷宣言中体现出的原则总结为8个字:关注成长,拥抱变化,我将其称之为敏捷主义,因为我觉得这些原则将成为互联网时代我们最好的生存策略。
 
   随着互联网时代的来临,我们的经济和社会发展正以我们无法预料的方式在变化。预测和期待本来是人类一种特有的优势,人类就靠着这些优势在远古的生存竞争中活了下来,成为赢家。我们现在面临的最大的悖论确是随着人类社会的发展,我们的未来越来越难以预测。在农业时代和传统的工业时代,你基本上可以根据以前若干年的情况来预测未来的收益,但是随着互联网时代的来临,我们根本无法预测出一些不知道从什么地方冒出来的颠覆力量。诺基亚和摩托罗拉肯定没想到智能手机的发展会给他们带来灭顶之灾。在这样的一个如此不可思议的年代,我们唯一能够的做的就是不去做过长时间的预测,同时不断地让自己成长,让自己永远保持好奇心和对变化的敏感。关注成长就是三省吾身,每天都要想一想自己获得了什么,有哪些错误需要注意。这些获得可以是减掉的体重,记下来的一段名言或自己喜欢的座右铭,又或是通过读书获得的一种内心体验。拥抱变化就是永远要保持一分好奇心,人类的好奇心是人类最可贵的能力和所有人类进步的终极动力,不要让我们过早的将我们的好奇心抛弃掉。我说了这么多,但是我觉得乔布斯说的那句话是对敏捷主义的最精炼的表达: stay hungry, stay foolish。让我们永远记住这句话吧,让我们永远保持对进步的饥饿和对世界的好奇。
 
   
 

posted on 2014-07-20 11:02  刘凯  阅读(1874)  评论(4编辑  收藏  举报