回顾整个会议的过程,尽管只有两天的会议时间,但是会议前后的一系列活动对我的收获还是很多的,现将我的收获通过会前、会中、会后几个部分来和大家分享。
会前准备工作
在还没有被通知参加敏捷大会之前,我们已经开始接触敏捷的一些知识,最初听说敏捷也只是一个概念,并没有实际使用过,尽管经常挂在口头的像XP,RUP,ICONIX等一些理论性的东西。后来还是通过看公司购买的书轻松SCRUM之旅,SCRUM管理等,才对敏捷开发有了初步的认识,在研发中心也组织的一次头脑风暴,然而具体应该怎么去实施敏捷,包括哪些方面及实施的要点基本上没有什么概念,对理论知识的理解应该还处在表面上。如何实施敏捷开发对我们来说觉得是一件很困难的事情,至少是还没有形成自己的一个完整的体系。后来得知我们要去参加敏捷大会,摆在我们面前的问题是,我们对敏捷的理解还处在初级阶段,如何使这次会议能够最大化的给我们带来实处,如何才能不虚此行,让公司的投入有较大的产出,后来决定参会人员必须了解相关的敏捷知识,在会议之前必须把公司目前买的书都看一下,了解一下相关的知识。
与此同时还需要做的工作就是会前的准备工作了。组织一次外出的会议不是一件简单的事情,必须把整个会议的前后工作都做好,准备到位才能做到游刃有余。在这次会议过程中,我负责会议前需要准备的工作及注意事项。这对于一个没有出过远门的我来说也是一次挑战,出去应该准备些什么呢?初次看到敏捷大会的网址,我觉得没什么准备的啊,然而我得到的回复是,我给你的不是静态页面,你好好看看。经过仔细一看,我才发现,其实这个里边有许多需要考虑的事情,比如说时间安排,课程听课安排,人员划分其实都是需要有考虑的,而不是随便看看就可以了。还有就是住宿乘车费用这些看似很小的问题其实都是需要很好的规划一下的,否则将来会出现这样那样的问题。通过这件事情是我认识到做计划的重要性,以及如何做计划,做计划的切入点是什么,想问题应该站在哪个角度等等。
会议中
第一次参加这样的技术盛会,不管是从心理上还是从认知,还是从技术上,都对我产生了很大的变化。首先能够参加这次会议对我来说就是一个惊喜,会前从几个方面考虑我都不是最佳人选,我已经做好了不去的心理准备了,我相信无论让谁去,将来都会把这次大会的精华带回来,与我们分享。然后后来结果出来让我去,这是对我莫大的支持和鼓舞,同时带来了很大的压力,我知道自己的责任重大,如何从这场会议上收获的更多,带着这个问题,带着这份责任我迈进了会议大厅。
首先是大会开场致辞,接着是Marin Fowler 世界级大师演讲《21世纪的软件设计》,由于讲的是英语所以需要戴上耳机,进行同声翻译,一开始还是充满喜悦,以前在电视上看别人都是戴着有翻译的耳机,很是羡慕,然而当我戴上的那一刻突然在我心里顿时觉得有点失望,如果我英语好点该多好啊,就不用戴着耳机了。在整个会议过程中,会议安排的时间比较紧凑,原来预计的休息时间基本上没有了,几乎上是一个讲师接着一个讲师上场,在整个会议过程中没有明确的标注那个理论是哪个讲师讲的,但是,我想重要的是我们通过这些讲师的讲座中能够获得哪些东西似乎更重要,下面就将我所收获的知识和大家分享一下。
1如何进行敏捷开发,敏捷开发要有预测性的规划,适应性的规划,以人为本,已过程为先。首先制定一个有适用性的计划,通过进行一部分工作,然后对计划进行修复,设计再进行工作,随着工作的不断深入,要加大发布频率,将软件开发的缺陷控制在最少。
2 软件开发过程中,“完美”是一个动词而不是一个形容词。完美不是仅是指做出来的软件产品,完美在开发工程中是指开发过程中要求每一个过程,每一个方法、功能、等过程的完美。
3 如何进行企业的变革,需要公司有好的工作流程,好的员工,以及良好的组合,同时,要兼顾费用、公平性、自主权,掌握性、目的,同时还要使员工对自己的工作有信心有兴趣来驱动他的工作,企业需要的是创新型的人才,工作人员可以看做志愿者,如何让他们愿意工作,就要动员他们,让他们对工作有所有权,做出自己的决策,有荣誉感,这样才能发挥员工的积极性,创造性,而不是把他们看成一种资源,所谓的人力资源。就像大师举的例子,一个人骑在大象上,人的力量是渺小的,如何控制大象是需要有方法,有策略,这样大象才能按照你的要求进行。企业要能够容忍员工的失败,没有失败说明你的工作就没有努力,企业要保留最了不起的员工,不是把员工当做一种资源,员工不是资源而是专业人员。
4 关于重构的问题,首先分析一下重构与重写的区别,重构是培养习惯,持续提高产品的质量,重写是一次性的工作。重构是稳妥的,注重实效的方法,普遍适用,重写是非常规的方法,是危险的。需要重构的是那些低质量的遗留系统,重构前需要考虑的问题是,旧的设计是否解决了旧的问题,组织有足够的资源或技能吗,会影响当前的业务吗,何时才能取得收益等。重构的方法,要有纪律,度量和意识,要消除恐惧心理,系统的80%的修改来自20%的活跃模块,再者是领域模型,需要先让领域模型、概念模型干净,才能让代码干净。改造代码前构造防护网,进行单元测试还是模块测试,要保持100%变化覆盖。小步重构,及时回退,尽早集成。
5 测试用例,除要关注主要路径的用例还要关注非主要路径上的用例。不允许写任何的单元测试,除非可能失败,要写足够的代码,除非通过失败测试。单元测试是开发人员所做的。聚合测试。
6 敏捷应用之十二中成功模式,有一个清晰的促动性目标,获得高层的帮助,确保有一个计划良好的框架,有指导性的采取计划,我们的主要业务目标是什么,怎么创建这个目标。使用五个计划,组织型的backlog,敏捷铺开计划,引入有经验的导师,培训每一个角色。没有铺开的计划的时候不要铺开你的团队。创建良好的团队环境,友好,承诺、团队的成功和成长,没有个人英雄主义,没有超人,超人是不会长久的。要所有的团队都有承诺。衡量正确的事情,完成定义,backlog的完整性,看守产品而不是员工,持续价值流动,是不是顺利。创造一个持续学习的文化。要为规模性有所准备。需要有耐心并愿意不断重复这些模型。运用你自己的模型。
7 幸福感,客户的幸福感是帮助客户实现业务价值,公司的幸福感来自把握机会,快速反馈,业务价值,员工的幸福感来自友情,快乐的合作气氛,技术能力的提升,少加班,阶段性功能演示。定期的组织学习会议。只有快乐的生活,生活才能快乐。
8 中型软件团队的管理。每个团队有共享的责任,让每个团队来分担,团队从自己独特的角度、知道自己应该做什么?周会讨论自己的工作任务,找出一个代表谈谈进度情况,发布会议。制定迭代计划,做一张图表获得进度信息,发布成本。站在项目角度做规划,作为团队,需要理解客户和我们是一个团队,确保工作流在同一个背景下连续,建立资源的往返真正传递我们的信息。有一个共同的愿景,有一个共同分担的责任,需要不断改进工作计划。引进资讯公司等。
会后
在这两天的会议过程中,学到的内容还是很多的,上边列出来的只是一部分,如何将这些理论知识运用的我们公司当中,仍是一个需要认真考虑的问题。会议上讲到的这些案例基本上都是一些大型企业,基本上每个案例都有敏捷的咨询师,那么我们公司在没有咨询师的情况下,如何转型,考虑到目前公司的现状,我个人认为,敏捷不是挂在嘴上,也不是靠部分人的努力,而是一个整个公司观念的转变,首先应该给公司员工灌输敏捷的思想,小部分实现敏捷,再将敏捷推向公司层面。小部分敏捷也就是项目敏捷,觉得当下的问题是,如何提高公司员工自身的修养,已经如何提高员工的工作积极性问题,以及给予充足的时间。
会议之外
经过两天紧张的会议,脑子已经很累了,终于可以休息一下脑袋了,我们选择了体力劳动,在北京转了一天,对体能又是一个挑战。上学时,宏伟的天安门的印象一直很深,当我真正到了天安门,我的观念变了,但是似乎悟出了一个道理,任何事物都是相对的,当周围的事物都在变化,而你却呆在原地,尽管没有退步,但是别人都在进步的,那么这时在别人眼里的自己似乎已经不是原来的自己了。所以我们要不断的超越自己。北京的王府井大街很热闹,路边小摊上的摊主,居然能将数种流利的外语,我的第一个感叹时崇拜他们,第二个感叹就是在北京生存看来需要很大的技能才行。