Skip to content

牛国柱

欲成国柱,须勤耕田

  • 首页
  • 专题
  • 分享
  • 关于
  • 每周一句

Archive 2010-12-26

  • 首页   /  2010   /  
  • 12 月
组织管理 12 月 26,2010

如何管理团队?(1)

如何培养个人?
团队是由多个人组成的,因此从微观上来将我们要清楚如何培养一个员工。对新加入成员来讲,他需要处理两个定位、两个关系,分别是在公司的定位、在团队的定位以及工作关系和人际关系。而管理者应该从这四个角度出发去帮助新成员加速四个方面的认识。

定位
新成员在公司的角色定位,最好是通过细化到新成员职能点的组织架构图来表示。
如下图:
职能组织中you are here 说明:
职能架构中you are here说明

矩阵架构中you are here 说明:
矩阵组织中you are here说明

新成员在团队中的定位,则需要通过两方面内容来说,第一是岗位描述,说明此职位的工作内容,第二是新成员所在任务组与团队所有任务的关系说明,可以通过各种图表方式来说明。

关系
新成员在确定两个定位后,紧接着就是要处理工作关系与个人关系之间的问题。不论是从管理者或者从新成员的角度来讲,赫塞-布兰查德(Hersey-Blanchard)模型都可以作为解决这个难题的思路。

  • 赫塞-布兰查德(Hersey-Blanchard)模型又称为赫塞-布兰查德的情境领导理论(situational leadership?theory),或称为领导生命周期理论(life cycle theory of leadership)。该理论1966年首先由美国的科曼(A.K.Koman)提出,其后由美国的赫塞(P.Hersey)和布兰查德(K.T.Blanchard)加以发展。
  • 该理论认为,领导者的风格应适应其下属的“成熟程度”,依据下属的成熟度水平来选择正确的领导风格就会取得领导的成功。
  • 成熟度(Maturity)的定义为:个体对自己的直接行为负责人的能力和意愿。成熟度包括两个要素:工作成熟度与心理成熟度。工作成熟度指一个人的知识和技能。工作成熟度高的个体拥有足够的知识、能力和经验完成他们的工作任务而不需要他人的指导。心理成熟度是指一个人做某事的意愿和动机。心理成熟度高的个体不需要太多的外部鼓励,他们靠内部动机激励。
  • 情景领导模式示意图
    情景领导模型

    横坐标代表以抓工作为主的工作行为。作为工作行为是指,领导者用单向沟通的方式向下属人员说明应该干什么,在何时、何地、用何种方式完成任务。纵坐标代表以关心人为主的关系行为。所为关系行为是指,领导者用双向沟通的方式,用心理的、培育社会感情的措施指导下属,并关心员工的福利。第三个坐标是下属的成熟度,成熟度指成熟动机,承担责任的意愿和能力。

  • 赫塞-布兰查德领导模型认为,随着下属由不成熟走向成熟(M1-M4),领导行为也应相应的改变,由S1向S4逐渐推移,按此程序推移,相应的领导类型分别是:命令型-说服型-参与型-授权型。

根据赫塞-布兰查德领导模型,再根据新成员的成熟度,团队负责人可以选择对应的领导类型。作为对领导模型的扩展,我们可以将S1-S4看做一个新成员在新公司的时间序列,从S1-S4,成员对公司越来越熟悉,与其他成员间的熟悉度也越来越增加。工作可以看做是工作关系,关系可以看做是个人关系。高与低可以看做是发生联系的频率。因此:在S1区间,新成员刚进入公司,对公司、与其他成员均不熟悉,此时应该以工作关系为主、个人关系为辅,以工作能力使其他成员认识自己、接纳自己。到了S2区间,经过一定时间的熟悉,则在保持工作关系的同事加强与其他成员间的个人关系,比如一起游玩、运动等。到了S3区间,在工作关系上已经稳定,此时应该更多的以个人关系为主。很多人的关系都会维持在这一区间,并且很多人会在这一区间跳槽离开公司。S4区间则个体已经和公司、和团队融为一体,此时工作关系、个人关系都已稳定,反而不需要频繁的发生联系了。

作者 牛 国柱
敏捷开发 12 月 25,2010

Scrum介绍

有感于传统开发方式的执行难、不能适应快速变化、延误进度并且造成产品、设计、开发、测试各个部门相互敌视、相互指责的窘境,研究了敏捷开发中流行的Scrum方法,并以简单的思维导图形式展现。
全图中核心部分为Scrum图示以及其价值观——以价值为本,以人为本。然后分别从理念、流程、角色以及工具4个角度来说明如何理解Scrum方法、执行Scrum方法。希望能对大家理解Scrum有所帮助!

Scrum敏捷方法的理念、方法、角色以及可以使用的工具:

Scrum
查看大图

作者 牛 国柱
组织管理 12 月 19,2010

什么山头唱什么歌!——你该如何管理公司并谈矩阵型组织

有感于公司最近架构的频繁变动,特别聊一聊组织管理的相关知识。公司采用什么样的组织结构,取决于公司的业务复杂度以及公司人员的多少,在不同的情况下,应采用不同的组织方式。组织方式没有好与坏,完全为公司发展服务。超越公司发展阶段的组织方式成为公司信息沟通、人员管理的枷锁,而落于后公司发展阶段的组织方式将会完全阻碍公司的快速发展。

在公司的初创期,人员规模应该在10人及10人以下,此时根本无需专门设置部门,甚至无需设置专门的title。每个人负责的工作内容很杂、工作范围很广。此时最佳的沟通方式就是面对面的沟通,最好的管理方式就是兄弟情意似的管理。兄弟式的融洽关系有助于每个人的潜能发挥,更有利于公司的发展。

如果公司的发展顺利,下一个发展阶段,公司的人员应该会增至30人左右。此时业务的类型应该没有增加,还是初创期的业务类型,只是随着发展,规模越来越大,需要的人员越来越多而已。此时会产生简单的组织管理,一般是按照职能划分的各个部门。简单是指此时主要还是兄弟情义似的管理方式,规章制度还是很弱,虽然可能有一些制度,但执行必定很差。此时员工间的气氛也会非常好。30人的公司也还是出于创业的第一阶段,因此这种弱化的职能管理方式有利于公司的发展。

再往下发展,公司的人员会产生跳跃式的发展,基本上会达到80人的规模。此时兄弟情意似管理方式已经不再适合了。毕竟人员增多,再考虑到人员流动的因素,势必会有一部分人是陌生人,此时情意、感情已经不可能建立了。因此这个阶段的显著特征是规章制度的反复修订以及确立、公司的中层管理者的地位确立。在上一个阶段中,弱化的职能式组织结构会得到加强。此时的中层人员基本上属于从公司初创期随着公司走过来的员工。他们熟悉公司业务,了解公司文化,是公司高速发展的必要保证。有利就会有弊,这些人的能力有可能不会适应此时的管理工作,因此需要加强对中层人员的管理知识的培训。严格点说,老板其实也需要得到培训。当然有可能会从外部招入一些管理人员进来,但肯定是少数的职位。此时公司的业务类型应该只是一种,因此会经常碰到跨职能处理事情的问题——职能部门阻碍了项目的发展,但由于此时大家(尤其是中层管理者)的目标一致,因此都会比较快的完美解决。但公司偶尔还是会产生职能划分还是项目划分的争论。当然此阶段的组织架构还是职能划分为主。

随着公司的进一步发展,业务类型会增加,人员也会增加到200人左右。此时职能划分还是项目划分的争论会愈演愈烈。此时更需要高层对公司发展战略、发展道路的清楚认识,负责只能是今天职能结构划分、明天项目结构划分,或者再来个矩阵组织管理。频繁的架构变动会费时费力,浪费公司的人力资源,消耗公司的时间成本,也会使公司员工莫衷一是、茫然无措,影响公司业务的发展。至于采用什么方式的组织架构,需要根据公司的实际情况进行判断。

  • 矩阵型组织结构图示
    矩阵组织
  • 矩阵型组织结构说明

矩阵式组织结构(Matrix)是指在组织结构上把既有按职能划分的垂直领导系统(Functional),又有按产品(项目)划分的横向领导关系(Projectized)的结构。其中矩阵型从项目经理职权大小的角度又分为Weak Matrix,Balanced Matrix和Strong Matrix。

矩阵型结构作为组织结构的一种设计模式,它在20世纪70年代和80年代很流行。虽然这种组织形式主要应用在项目工作中,但由于它的灵活性和应付复杂组织需求的能力,还经常被广泛地应用于一般意义的管理中。

在矩阵型组织里,项目经理的角色类似于总经理,负责整合公司有关资源来完成项目目标。职能经理的角色类似于技术专家,对高质量地完成所承担的产品任务负责。每个职员有两个经理——项目经理和职能经理,项目性职责向项目经理汇报,职能性职责向职能经理汇报。

这种结构的优点在于它同时拥有多种导向,专家的技能和职能知识可以应用到所有的项目中。通过灵活地配置员工,以及根据环境来决定产品导向还是职能导向,新产品或新项目能够快速地运转起来。

但其缺陷也是很明显的,首先必须进行大量横向与纵向的协调工作,必然要耗费管理者更多的精力,并付出更多的组织成本。再次员工要接受双重领导,陷入双重职权中,会产生角色混乱和冲突。第三如果管理者不能适应矩阵结构所要求的资源、信息与权力共享,尤其是职位权力,这样结构系统将变得无效,将很难实现组织的目标。

200人以上的时候,恭喜!这证明公司的发展很顺利,此时就不用争到底哪种方式更好了,请一个咨询公司吧!让专业的人做专业的事吧!

作者 牛 国柱
敏捷开发 12 月 12,2010

关于敏捷开发

1 敏捷开发的出现

许多人认为,相比于“传统”的瀑布开发模式,敏捷开发是一种“现代”的开发模式。但是,实际上敏捷方法,特别是迭代和增量开发方法(IID)起源于20世纪30年代的一些非软件项目。而最早引入一些敏捷方法的项目之一就是20世纪60年代初的美国航天局水星计划。在这个项目中,一些极限编程方法如测试先行等也被使用。此后,迭代和增量开发被IBM联邦系统部(FSD)和沃森研究中心(Watson Research Center)采纳。有趣的是一些研究人员甚至在关于瀑布开发模式的最早的论文中发现了敏捷开发的线索。在这篇论文中,温斯顿.罗伊斯(Winston Royce)建议在一个项目中使用两次瀑布模式,也就是使用两次迭代。

20世纪70年代,最早的有记载的使用迭代和增量开发的主要项目之一,是为第一艘美国三叉戟潜艇开发的第一指挥和控制系统。该项目有大约一百万行代码,进行得非常成功。迭代和增量开发从此开始稳步发展,越来越多的项目开始使用这种开发模式。在1976年,Tom Gilb在他的著作《软件度量》(“Software Metrics”)一书中阐述了他的迭代和增量开发实践,这可能是第一部阐述这种方法的书籍。迭代和增量开发的另一次出色发挥,是在一个美国宇航局航天飞机软件的开发项目。这个项目负责开发其航空电子设备的软件系统。改项目由IBM联邦系统部(IBM FSD)在1977至1980年完成。一些典型的敏捷做法,如使用8个周迭代以及用反馈推动开发循序渐进等方法都在该项目中得以应用。

20世纪80年代,更多的出版物和更多的项目应用进一步推进了迭代开发的发展。在1988年,Barry Boehm正式定义了使用迭代开发的螺旋模型(Spiral model)。
80年代初,在美国国防部发生了一件有趣的事情。美国国防部一直以来都要求其软件开发商在开发过程中使用严格的瀑布开发模型。但是到了1987年末,国防部开始“建议”使用迭代和增量开发作为软件开发模式。后来美国国防部的项目审查显示,早期使用瀑布模式开发的软件项目,有75%以失败告终,有些开发出来的产品根本没有被使用过,只有2%的软件产品无需大量修改就能被正常使用。

20世纪90年代,推荐使用迭代和增量开发的出版物和文献显著增加。在经历了多次有“瀑布心态”(‘waterfall mentality’)项目的失败之后,美国国防部开始“要求”而不是像80年代那样仅仅是“建议”他们的软件开发商使用IID开发模式。Rational统一开发过程(Rational Unified Process)也是在这一时期产生并发展起来的,它具有更规范的迭代渐进过程。到2000年底,更多的敏捷方法被广泛推广并被使用于各种不同的项目中。2001年二月,一组由17位在DSDM,XP,Scrum,FSD等领域的专家组成的代表团齐聚美国犹他州,寻找这些方法的共同点。最终,这些专家制定并宣布了敏捷开发宣言。由此形成了现在我们所认识的敏捷开发和后来的敏捷联盟。

为什么瀑布模式多数情况下总会失败?为什么我们需要敏捷开发模式?

因为瀑布模式能够在一个迭代周期内表现优异,但是,在如何管理需求变化面前,瀑布模式却显得无能为力。因为大多数的软件项目都具有以下一些特点:

◆在初始阶段,最终用户通常不能准确得知道他们需要什么样的软件。即便知道,也很少有人能准确清楚的表达出来。

◆对于某些项目,在一开始,我们可以很好的定义其所有的功能,但是可能有很多细节只能随着项目的不断深入才能被挖掘出来。即便是我们了解了所有的细节,大多数人还是不能很好的处理这些细节,特别是在项目开发初期。

◆外部环境如客户的业务模式,技术进步,甚至是系统的终端用户都有可能在开发过程中不断改变。 而预想或试图阻止这些改变通常都是徒劳的。

◆在互联网时代,许多Web应用程序的开发都是基于对远景客户的预期,而非当前用户的实际需求。在这种情况下,变化从开始就有,而且在系统开始应用后几乎每天都会发生。

正因为“变化”是软件项目中唯一不变的的因素,因此我们需要敏捷开发模式。敏捷方法通过迭代过程管理来处理需求和技术的频繁变化。迭代周期尽可能短,以便能及时地处理频繁的需求变化和用户反馈。在每一次迭代周期结束时,都交付用户一个可用的、可部署的系统。使用并体验该系统所获得的有价值的反馈意见将按顺序、在随后的迭代周期中和其它需求变化一起在产品中实现和集成。

2 敏捷开发的现状

在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。它不仅被许多中小公司青睐,在全球一百强的企业中,敏捷也已大行其道,受到许多资深项目管理者和开发人员的推崇。欧美软件企业中,有近半企业已采用敏捷方法进行开发。

国内的外企、外包公司和许多知名企业也都开始采用了敏捷方法。

3 敏捷开发的好处

敏捷开发可以给企业和用户带来诸多好处。

◆精确。它将带给用户真正需要的软件系统。瀑布模式通常会在产品起点与最终结果之间计划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想去的地方。而敏捷方法则采用小步的方式向前走,每走完一步,都需要及时调整并为下一步确定当前的方向,直到真正的终点。

◆质量。敏捷方法对每一次迭代周期的质量都有严格要求。一些敏捷方法如XP等,甚至使用测试驱动开发(test-driven development),即在正式开发功能代码之前,先开发该功能的测试代码。这些都对敏捷项目的整个开发周期提供了可靠的质量保证。

◆速度。敏捷开发提倡避免较大的前期规划,认为那是一种很大的浪费。因为很多预先计划的东西都会发生改变,大规模的前期规划通常是徒劳的。敏捷团队只专注于开发项目中当前最需要的,最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。

◆丰厚的投资回报率(ROI)。在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。

◆高效的自我管理团队。这既是采用敏捷开发的必然结果,也是推动敏捷开发不断前进的动力。敏捷开发要求团队成员必须积极主动,自我管理。在这样的团队中工作,每个团队成员的技术能力,交流,社交,表达和领导能力也都能得以提高。

4 敏捷开发的方法

敏捷开发由几种轻量级的软件开发方法组成。它们包括:极限编程(XP)、Scrum、精益开发(Lean Development)、动态系统开发方法(DSDM)、特征驱动开发(Feature Driver Development)、水晶开发(Cristal Clear)等等。所有这些方法都具有以下共同特征,它们也是敏捷开发的原则和方法:

1.迭代式开发。即整个开发过程被分为几个迭代周期,每个迭代周期是一个定长或不定长的时间块。每个迭代周期持续的时间一般较短,通常为一到六周。

2.增量交付。产品是在每个迭代周期结束时被逐步交付使用,而不是在整个开发过程结束的时候一次性交付使用。每次交付的都是可以被部署到用户应用环境中被用户使用的、能给用户带来即时效益和价值的产品。

3.开发团队和用户反馈推动产品开发。敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。同时,团队对于用户的需求也能及时提供反馈意见。

4.持续集成。新的功能或需求变化总是尽可能频繁地被整合到产品中。一些项目是在每个迭代周期结束的时候集成, 有些项目则每天都在这么做。

5.开发团队自我管理。拥有一个积极的、自我管理的、具备自由交流风格的开发团队,是每个敏捷项目必不可少的条件。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给人。

主要的敏捷方法

极限编程(XP-Extreme Programming)

极限编程(XP)的主要目的是降低需求变化的成本。它引入一系列优秀的软件开发方法,并将它们发挥到极致。比如,为了能及时得到用户的反馈,XP要求客户代表每天都必须与开发团队在一起。同时,XP要求所有的编程都采用结对编程(pair-programming)的方式。这种方式是传统的同行审查(peer review)的一种极端表现,或者可以说是它的替代方式。

XP定义了一套简单的开发流程,包括:编写用户案例,架构规范,实施规划,迭代计划,代码开发,单元测试,验收测试等等。

像所有其他敏捷方法一样,XP预期并积极接受变化。它具有以下的价值观或原则:

◆互动交流。团队成员不是通过文档来交流,文档不是必须的。团队成员之间通过日常沟通,简单设计,测试,系统隐喻以及代码本身来沟通产品需求和系统设计。

◆反馈。反馈是一种信息的交流,能使系统更加完善。反馈也和交流密切相关,客户的实际使用、功能测试、单元测试等都能为开发团队提供反馈信息。同时,开发团队也可以通过估计和设计用户案例的方式将信息反馈给客户。

◆简单。XP提倡简单的设计,简单的解决方案。XP总是从一个简单的系统入手,并且只创建今天(而不是明天)需要的功能模块。因为它认为,创建明天需要的功能模块可能会由于需求的变化而成为浪费。

◆勇气。XP在这一点所要达到的目的(我们认为)是鼓励一些有较高风险的良好的做法。例如,它要求程序员尽可能频繁地重构代码,必须删除过时的代码,不解决技术难题就不罢休,等等。

◆团队。XP提倡团队合作,相互尊重。XP以建立并激励团队为一项重要任务,同时它把互相尊重和实际的开发习惯相结合。比如,为了尊重其他团队成员的劳动成果,每个人不得将未通过单元测试的代码集成到系统中。因此,每个人的代码质量必须过关。

核心做法:

◆小规模,频繁的版本发布,短迭代周期

◆测试驱动开发(Test-driven development)

◆结对编程(Pair programming)

◆持续集成(Continuous integration)

◆每日站立会议(Daily stand-up meeting)

◆共同拥有代码(Collative code ownership)

◆系统隐喻(System metaphor)

SCRUM

Scrum是一个敏捷开发框架,它由一个开发过程,几种角色以及一套规范的实施方法组成。它可以被运用于软件开发,项目维护,也可以被用来作为一种管理敏捷项目的框架。

在Scrum中,产品需求被定义为产品需求积压(product backlogs)。产品需求积压可以是用户案例,独立的功能描述,技术要求等。所有的产品需求积压都是从一个简单的想法开始,并逐步被细化,直到可以被开发的程度。

Scrum将开发过程分为多个Sprint周期,每个Sprint代表一个2-4周的开发周期,有固定的时间长度。首先,产品需求被分成不同的产品需求积压条目。然后,在Sprint计划会议(Sprint planning meeting)上,最重要或者是最具价值的产品需求积压被优先安排到下一个Sprint周期中。同时,在Sprint计划会上,将会预先估计所有已经分配到Sprint周期中的产品需求积压的工作量,并对每个条目进行设计和任务分配。在Sprint开发过程中,每天开发团队都会进行一次简短的Scrum会议(Daily Scrum Meeting)。会议上,每个团队成员需要汇报各自的进展情况,同时提出目前遇到的各种障碍。每个Sprint周期结束后,都会有一个可以被使用的系统交付给客户,并进行Sprint审查会议(Sprint review meeting)。审查会上,开发团队将会向客户或最终用户演示新的系统功能。同时,客户会提出意见以及一些需求变化。这些可以以新的产品需求积压的形式保留下来,并在随后的Sprint周期中得以实现。Sprint回顾会随后会总结上次Sprint周期中有哪些不足需要改进,以及有哪些值得肯定的方面。最后整个过程将从头开始,开始一个新的Sprint计划会议。

Scrum定义了4种主要的角色:

◆产品拥有者(Product Owner):该角色负责产品的远景规划,平衡所有利益相关者(stakeholder)的利益,确定不同的产品需求积压的优先级等。它是开发团队和客户或最终用户之间的联络点。

◆利益相关者(Stakeholder):该角色与产品之间有直接或间接的利益关系,通常是客户或最终用户代表。他们负责收集编写产品需求,审查项目成果等。

◆Scrum专家(Scrum Master):Scrum专家负责指导开发团队进行Scrum开发与实践。它也是开发团队与产品拥有者之间交流的联络点。

◆团队成员(Team Member):即项目开发人员。

Scrum提供一个敏捷开发框架,其他许多敏捷方法都可以被集成到Scrum中。比如测试驱动开发(test-driven development)和结对编程(pair programming)等都可以被整合到Scrum中。

精益开发(LEAN DEVELOPMENT)

精益软件开发模式是从丰田公司的产品开发方法中演化而来。它主要包括两个部分:一部分是核心思想及原则,另外一部分由一些在相应的工具构成。

精益开发的核心思想是查明和消除浪费。在软件开发过程中,错误(bugs)、没用的功能、等待以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被分析查明,然后设法消除。精益开发的其它原则包括:

◆强调学习。软件开发过程是一个不断学习的过程。每个团队成员都需要从日常的失败、互动、交流以及信息反馈中学习,不断改进所开发的产品和开发效率。

◆在最后时刻做决定。这样可以避免在可能改变的事情上做无谓的努力,从而有效的避免浪费。

◆用最快的速度交付用户。较短的迭代周期能够加速产品的开发及交付,加快交流,提高生产力。

◆给团队自主权。激励团队并让所有团队成员自我管理始终是所有敏捷方法获得成功的基本因素之一。

◆诚信。确保整个系统正常工作,真正满足客户的需求是整个团队需要努力坚持的诚信和和对用户的承诺。

◆全局观。精益开发强调整体优化的系统。无论开发的组织还是被开发的产品, 从整体上考虑优化比从各个局部去优化更高效。

对于上述的每个原则,都有一些相应的实现工具。这些工具包括价值流图(Value Stream Mapping),基于集合的开发(set-based development),拉系统(pull system),排队论(queuing theory)等等。

和其它敏捷方法相比,精益软件更重要的是不断完善开发过程的一种思维方式。因此,将精益模式与其他敏捷开发模式一起使用将会取得很好的效果。

其它敏捷方法

动态系统开发方法(DSDM-Dynamic System Development Methods)是由快速应用程序开发(RAD)方法演变而来的敏捷开发模式。DSDM在普遍的敏捷价值和原则的基础上,定义了更加详细的流程,以涵盖更完整的项目生命周期。它们包括项目前期活动(pre-project activities),项目可行性研究,功能建模,设计和开发,实施或部署,项目后期维护(post-project maintenance)等等。同时,每个过程都定义了诸如如何将每个功能模型转化为实际代码、如何将原型交付最终用户使用并审查、如何处理反馈信息等的详细步骤。因此,DSDM相比于其它敏捷方法在过程上显得比较繁重。

特征驱动开发(FDD- Feature Driven Development)是另一种敏捷开发方式,它将用户的功能需求划分成更小的功能特征,然后逐步地在每个迭代周期中开发实现这些产品特征。与DSDM方式一样,FDD仍然会在项目初期对整个项目做较大的规划和建模,以获得对该系统的全面了解。但是相比DSDM来说,FDD在这些方面简捷了一些。

Crystal Clear是另一种敏捷方法。Crystal Clear更专注于人。相比于其他的敏捷方法,它可使人获得更大的解放。这种方法更适合于较小规模的开发小组(由2-8个人组成)和非关键项目。Crystal Clear定义了七种属性。前3个属性-频繁的交付(frequent delivery)、渗透交流(osmotic communication)、反思提高(reflective improvement)——反映出基本的敏捷开发做法和价值,如周期较短的迭代式开发、自我管理的开发团队和反馈带动增量发展等等。另外的4个属性分别是:个人安全(personal safety)、集中(focus)、容易接触专家用户(easy access to expert users)和技术环境(technical environment)。其中,容易接触专家用户实际就是敏捷方法中提到的客户持续参与,但Crystal Clear对此要求比较宽松。Crystal Clear也提供了一些通用的做法,比如,它提供了三种回顾分析的方法:访谈、问卷调查和工作组。Crystal Clear的过程也是相当简单,其中涉及短的迭代周期,日常会议及持续集成等。

还有其他一些敏捷方法如敏捷统一过程(Agile Unified process)、上下文驱动开发(Context Driven Development)、Getting Real等。这些方法都是增量和迭代开发过程,并且重视人多过于整个过程。而各种敏捷方法的区别在于它们对敏捷的不同阐释和不同侧重。理解这些方法可以帮助我们从多个角度理解敏捷开发,并且了解更多的最佳应用。

5 选择合适的敏捷方法

选择一种合适的方法取决于多种因素。需要充分考虑:

◆方法的复杂度。确保团队或组织能够应付这种复杂度。

◆实用工具。一个良好的软件工具可以帮助团队有效的处理日常工作,促进团队协作,并减少管理成本。

◆目前的开发方式以及团队关于敏捷方法的认识程度。选择一些与当前开发方式比较接近的敏捷方法将有助于推动该方法的实施。

◆团队规模。较小规模的团队最好从简单的方式入手。当团队规模逐渐扩大,再增加相应的细节。

◆不需要只遵从一种方法。选择一个主要的方法(如Scrum),然后从其他方法中借鉴对团队或组织有所帮助的其他方法加以整合。

敏捷总是在不断发展演变,因此,没有一个人能保证目前的敏捷方法都是正确的。每个采用敏捷开发的团队都可以通过发现并形成自己的想法和最佳实践,对敏捷开发做出自己的贡献。

选择合适的敏捷方法需要注意:

1? 超过实际需要的过程是浪费的

2 大的团队、处理重大问题的项目需要重量级方法

轻量级方法更强调理解(understanding),自律(discipline)和技能(skill),重量级方法更强调文档(documentation),过程(process)和正式(formality)

?????? understanding指整个团队关于项目的全部知识,包括讨论的过程,documentation只能记录其中的一部分

?????? discipline是指个人主动的完成工作,process指个人根据指令完成工作

skill指具有良好技能的人可以省略中间的产品,formality指必须按照规定步骤完成工作

6 敏捷开发的原则

1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

2.即使到了开发的后期,也欢迎改变需求。

3.经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。

4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

5.围绕被激励起来的个人来构建项目。

6.在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。

7.工作的软件是首要的进度度量标准。

8.敏捷过程提倡可持续的开发速度。

9.不断地关注优秀的技能和好的设计会增强敏捷能力。

10.简单使未完成的工作最大化。

11.最好的构架、需求和设计出自于自组织的团队。

12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

13.对于瓶颈处的工作应该尽量加快,减少重复。(使用更熟练的人,否则团队的大量时间花费在培训不熟练的人员上面;需要使用更多的人时,应侧重于提高团队的技能而不是扩充团队;使用更好的工具)

作者 牛 国柱

Proudly powered by WordPress | Theme: BusiProf by Webriti