本文作者:sodme
本文出处:http://blog.csdn.net/sodme
声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.
引言:
前面几篇文章中,都在不断重复着"敏捷"二字的真正内含,是的,如果要说起这些所谓的内含,应该没有人会反对,但是,如果把这个问题再引申一步:如何理解各种各样的敏捷开发形式与敏捷方法论之间的关系?如何把书本上总结的各种各样的敏捷理论用于我们的开发实践?这些问题,可能就不再是那么容易回答的了.在本篇文章中,将会阐述我对这些问题的理解以及我的实践解决之道.
正文:
事实上,当大家把软件当作一件“工程”的事来作的时候,很多东西就开始变味了。按理说,软件开发是一件极具创造力的事,而写程序的我们自己也应该是每天生活在充满想象和幸福感的氛围里,而现实恰恰相反,我们总被这样那样的需求折磨得人不人、鬼不鬼,不断的修改设计方案,不断的调试代码,我们甚至变成了连打字员都不如的一类人:因为打字员只管快速击打就行了,而我们还需要不断地在既有的方案和新产生的需求里走钢丝,尤如穿针引线般地通过各种让我们自己和后来人都痛苦的所谓“技巧”来实现新的需求以及保持既有框架的稳定。
当需求变得越来越不可控,当软件开发变得越来越依赖个人经验之时,我们希望能有一根稻草将我们这些受苦受难的IT技术人解救出去。于是,软件生命周期,软件工程化管理,瀑布开发模型,敏捷开发模式等等等等,在实践与理论的交织过程中,我们发明了一个又一个新方法来不断适应真实的业务开发需求。从这个意义上来说,敏捷开发模式,可以称得上是软件开发领域的一件具里程碑意义的大事件,因为,它把开发本身还原成它本来所应该具有的那个样子,它承认了现实的复杂性,它也务实的提出了很多具有指导意义的具体开发方式。
在国内IT技术翻译界里,对“敏捷”一词的翻译,我想,是为数不多的几个好词之一,仅凭这一个词,就已精确表达了这一方法论下所有开发方式的起始和归宿,那就是:以“敏捷”的开发方式,带来“敏捷”的产品交付速度,最终带来“敏捷”的公司发展速度。
不管是XP,SCRUM,Crystal,ADD,FDD,还是DSDM或者RUP,形式可能多种多样,但其本质从未变过,那就是:让不可控的产品研发,变成可控的;让慢如蜗牛的开发,变成快速的;让杂乱无序的开发,变成秩序井然而让人心情愉悦的。
我们自己的开发框架,采用的是SCRUM为主体,但会根据需要临时在某个阶段或者某些同事之间采用XP的方式。“某个阶段”,是比如:我们想让某一块的关键代码,能被两个人以上的同事了解、熟悉并掌握,那么对这一块代码的开发,我们就会鼓励大家采用XP的方式来完成。而当这块任务完成后,就又恢复成既有的方式。
我们采用SCRUM方式时,并没有机械照搬它本身的多种职位设定以及人员设定,最主要的,我们是学习到了它的“神”:那就是,我们讲究充分授权,同时,强调关注结果,只对结果负责,且,结果要是明确的,可达成的,以及可周知的,逐渐的,要作到结果是可控的。而,作开发的人都会了解,对于一个经常变换需求且对发布周期要求苛刻的项目来说,“结果可控”是多么重要。可以这么说,如果“结果不可控”,那这种项目,只有死路一条,而这种团队,其最终结局必然是解散。
老实说,如果是一个新团队,一开始就采用我们现在这样的作法,那可能会遇到比较大的阻碍,因为,在我们的开发方式里,对个体的专业素质要求比较高,“独挡一面”几乎是团队成员的基本要求。也就是说,无论你原来作的是哪方面的内容,在既有的框架下,把你放在新的任务环境下,也要求你能马上适应,快速在新环境里出成果。
但是,不是每一个人,以及每一个团队,都能达到这种状态的。很多的团队,特别是初创团队,需要面临的,首先是团队成员专业素质不高的问题,而这一点,如果试图通过教育、辅导的方式来提高,其效果是比较缓慢的。所以,比较好的方式,是由老人来带,把一些作事的正确方法,一些良好的专业习惯,通过言传身教的方式传递给新人,最终把他们一个个都培养出来。我们的最终目标,是让团队里的每一个人,都能在某一方面独挡一面,当我们跟他们中的任何一位一起作战时,我们都可以放心的把自己的后背交给他。
我们自己的团队,也是这样一步步走过来的。刚开始,我们也是一群毫无经验的初生牛犊,我们比别人幸运的是,有比较好的公司背景和资源可以支持我们在这么长的时间里去失败、摸索与提高,而我们比别人优秀的是,在这个过程中,我们从没有退缩和逃避,也没有得过且过,而是在这将近四年的时间里,不断寻求着精益求精的方法,不断改进着我们每一天的工作,甚至,我们对自己在质量、安全和稳定方面的要求,已经到了刚来的新人不可理解的BT程度。是的,只要影响到安全、稳定和质量的再小的细节,我们也不会让步,更不会得过且过,放这些代码的丝毫一马。这,是我们的底限,不可逾越。
“效率,效率!质量,质量!”,每当我们在审视自己的实践与书本上的理论貌似“脱节”之处时,这两个词就会不断的出现在我们的脑海中,这也成为了我们作出正确选择的最主要的两个参考坐标。
有很多人,工作没激情,没效率,是因为他们的项目没有压力感,他们的工作没有生存的压力感,作好作坏不会对自己的前途造成太大影响,作多作少不会对自己这个月的工资带来多少波动,他们总说项目没前途,公司没前景,他们总想着,混点时间出来骗点所谓的“时间积累出来的经验”,然后跳槽换个大一点的公司,找一个工资更高一点的工作,如此往复。
而事实上,我想说的是,无论你换到哪一家你想换到的“大一点的、待遇好一点”的公司,你最终能从这个公司里获得的东西,永远只是因为你对公司贡献了多少价值,而我相信,你那些没有太多有价值经验而浪费掉的时间,对于这些新公司来说,也同样是没有价值的。
而如果,你想让自己将来更有价值,就应该马上从现在起,让自己每一天的工作开始有效率起来,不要总想着用在公司的时间作更多公司外的事,不要总想着在上班时间看更多与当前项目无关的技术书籍,你所最需要作的,就是把每一天你的老大,你的老板安排给你的事,作好,作到极致!人,总要先有付出,而后才会得到回报的。不要再抱怨待遇不好,不要再抱怨公司没前景,如果你想找个有前景的公司,那你自己就要首先成长为一个看起来有前途的家伙。
扯远了,本来是想说敏捷来着,竟然谈起了理想和人生,汗!好吧,其实,我是想说,我们现在在谈的,绝不仅仅只是一种写代码的方式,或者一种作软件的方式,更深一层次的,它会关联产生其它很多很多的效果,而这些效果,可能是现在的你连想都不曾想过的。千里之行,始于足下。如果想让自己变得更有价值,就让自己每一天的工作更有效率起来,而真正属于你自己的“敏捷”,其实是你自己在思考和分析了自己当作工作流程、工作环境的情况下,作出的真正符合你自己实际情况的解决方案,绝不是那些书本上所说的各式各样的理论。
分享到:
相关推荐
在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导...这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。
敏捷开发--用户故事参考.pdf
敏捷开发-敏捷软件开发:原则、模式与实践(全).pdf
敏捷开发-敏捷软件开发:原则、模式与实践 .net.pdf
### 软件测试之敏捷测试--从实例详解敏捷测试的最佳方案 在当前快速变化的市场环境中,软件开发团队越来越倾向于采用敏捷方法论来提高工作效率并确保产品能够迅速响应市场变化。敏捷测试作为敏捷开发过程中的重要...
4. 敏捷测试方法、技术和工具 - 测试驱动开发、验收测试驱动开发和行为驱动开发:这些是敏捷测试中常用的开发方法,强调先写测试用例,再实现功能。 - 测试金字塔:测试金字塔是一种测试策略,强调在单元测试、...
从给定的文件信息中,我们可以提炼出一系列与IT行业,特别是敏捷开发团队管理相关的知识点。以下是对这些知识点的详细解读: ### 敏捷开发的核心原则 - **个人和互动胜过过程和工具**:敏捷宣言强调团队成员之间的...
敏捷教练-如何打造优秀的敏捷团队
敏捷开发工具 -- mingle 敏捷开发工具 -- mingle 敏捷开发工具 -- mingle
Scrum敏捷方法一分钟扫盲 Scrum敏捷方法丨的工作产品 Scrum敏捷方法丨的觇色 猪不鸡的故亊 Scrum过程 读前预习内容 创建和维护产品待开収项(Product Backlog) 迭代计划会 产品负责人准备什么?...
11.敏捷回顾-团队从优秀到卓越之道, 注意1页2个图片,带目录,整理的PMI-ACP考试的第11本书。共12本
敏捷建模-极限编程和统一过程的有效实践
### 敏捷个人-认识自我,管理自我 v0.2 #### 核心知识点解析 **一、敏捷个人概述** 本书籍《敏捷个人-认识自我,管理自我 v0.2》是在前一版本的基础上进行了更新和完善,作者周金根通过自身的实践经验及对敏捷...
敏捷开发-敏捷软件开发:原则、模式与实践(全、高清有目录)
难得的一本关于敏捷落地指导的书,完全可以参照手册在团队中开始尝试敏捷
Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rarWeb开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rarWeb开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rarWeb开发敏捷之道-应用Rails进行敏捷Web开发-第三版...
### 敏捷个人-认识自我,管理自我 v0.2 #### 一、敏捷个人概述 **敏捷个人**是一种基于敏捷开发原则和个人管理理论的方法论,旨在帮助个人提高自我管理和成长效率。它由周金根先生撰写并分享,强调通过自我反思、...