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