【导语】上一期咱们谈了敏捷方法与大型互联网系统开发,以及目前的行业现状。点此查看上期文章,今天咱们来谈谈互联网学习型敏捷研发组织的构建及策略。
大型互联网系统的竞争环境和本身的特征,决定了互联网系统的开发组织必须具备与之相适应的特征。“人”和“组织”方面的因素,是软件开发冰山处于水面下的底层部分,经常不被察觉和重视。
传统的基于瀑布模型理念而设计的软件开发过程,通常是基于文档传递和命令控制型的一大堆流程,其相应的开发组织结构,一般呈现的是层次型的官僚结构。这种过程和组织结构设计,脱离具体的现实因素,过分看重流程的作用,典型的思维方式是把软件开发作为工厂生产产品的角度来类比,企图把“人”作为生产流水线上的“机器”看待,企图以一种设计“精密”的流程来消除“人件”方面的因素。这种不顾现实、没有认识到“人件”因素的错误观念曾经一时盛行,后遭到了软件工程领域思想领袖们的尖锐批判。
高效的互联网敏捷开发,需要抛弃“封闭、重重阶层”的官僚组织文化,努力构建一种与之截然不同的、强调“开放、简单、扁平”的组织结构,抛弃“命令-控制”型的开发组织文化,而代之以一种与之截然不同的“领导-协作”型的敏捷开发文化。
成功进行大型互联网系统开发要求的技术技能大体上可以概括为以下四个方面:优秀互联网产品的设计能力、进行快速软件开发的生产能力、复杂软件系统的运维能力、活跃用户社区的运营能力。完备的拥有上述四种技术能力,才能够构建出一个高保真、高效率的良性反馈回路。一个互联网系统开发组织,在这四方面的技能越强,就越有可能取得竞争胜利。
上述的“技术技能”,一个开发组织并不可能在一开始便就绪,也不可能一蹴而就。要获得和不断提升这些技术技能,更为底层的能力是“组织学习能力”,相对于“技术能力”这种“硬”能力,可以把“组织学习能力”称为“软”能力,大体上可以概括为以下四个方面:学习掌握新知识的能力、反思和持续完善的能力、快速调整和演化的能力、团队协作能力。
互联网软件开发本身兴起的时间不长,很多从业人员,尤其是某些互联网开发组织中的管理者和流程制定者,本身来自于传统软件开发行业,受传统方法中的瀑布式模型和机械的“软件工厂”式软件工程隐喻影响很深。他们认为,流程才是最主要的,“人”只是“软件生产流水线”上可以替换的“资源”。
流程主义支持者主张,好的流程将弥补人员能力不足的问题,因而,对于成功,找到适当的人员并不如找到正确的流程那么关键。这种错误的软件工程观点,将会导致对软件开发中“人和组织”因素的忽视,具备较大的误导作用,对于本身业务复杂和环境高度动态的互联网领域,这种误导带来的毒害尤其巨大。
敏捷方法的兴起,试图扭转这一错误观点。敏捷软件工程实践者认为,流程可以为人们的高效率工作提供共同框架,但它不能代替能力和技能;产品是由能干、技术熟练的个人制造的,而不是流程制造的。
在敏捷方法中,重点依次为:人、产品和流程。没有适当的人员,将不能建造任何东西;不将精力放在产品上,其他无关系的活动就会渗入;没有一个最低限度的流程框架,就会出现无效率,乃至混乱。
人、产品和流程所构成的敏捷开发组织层次模型中,更为底层的是开发组织能够具备不断学习的能力。开发组织必须能够在产品开发的过程中,不断行动,不断获取反馈信息,不断实施调整和改善,这其实就是一种学习的过程,是通过已知知识认识未知知识,从而扩大已知知识,不断建立和完善最佳机制和产生最佳产品的自适应过程。
要理解传统瀑布式流程模型下工作的组织弊端,并将之转换为基于跨功能交叉的敏捷组织模式。传统的团队组织基于瀑布模型和严格角色分工,各个个体的角色都是基于其工作职务指派的。有些开发文化把事情搞的更为极端,实施严格的责任划分,有些组织通过让不同的子团队沿不同的管理链进行报告,对问题进行隔离。在这种管理范式下,认为项目的各种活动-分析、设计、编码、测试-之间是孤立发生,这是一个错误的观念。人为的分割他们带来了许多麻烦。这种分割将无法确保团队做出有见识的明智决策,因为它割断了开发组织内有益的交流和学习。敏捷的团队则根据功能划分团队。把大型系统的大型开发组织划分为小团队,分别负责最终系统的特定方面的功能。这些小团队内部具备跨越多种专业技能领域的专业人士。
适应能力强和自组织的学习型团队,是大型互联网敏捷开发和项目活动的核心主体。要让各团队按照各人的能力,在内部自行进行组织。每个团队都按照约定的承诺,对项目中的其他团队承担责任。要着力寻求内聚的、在很大程度上自足的团队。这种组织将有助于使团队作为整体与变化的各种效应隔离开来。他们在给出承诺的同时,获得了一种自我管理的能力,这种自管理,能够极大的增强团队的责任感,并提升他们的学习能力。敏捷团队的成员共同解决项目中所有方面的问题。每一个成员都具有项目中所有方面的参与权力。不存在单一的团队成员对系统架构、需求或者测试负责的情况。整个团队共同承担责任,每一个团队成员都能够影响系统的架构、需求或者测试。
敏捷团队会不断的对团队组织方式、规则、关系等进行调整。敏捷团队知道团队的环境在不断的发生变化,并且知道为了保持团队的敏捷性,就必须要随环境一起变化。
并且,高效率的敏捷团队是高度自律的。团队成员接受责任、接受开发架构、认可一定的行为责任,他们在一个开放灵活的环境下工作,具有高度的决定权。这种组织模式结合了自由和责任、灵活性和结构。面对矛盾和模糊性,团队的目标是始终如一的在项目范围内和产品构想基础上交付客户价值。有自组织的结构和自律的团队成员,将能够保障这种平衡。
在为大型互联网开发构建学习型组织的过程中,确定敏捷管理的风格是至关重要的策略。开发组织的领导者,以及产品与项目的管理者,清楚了解敏捷管理的风格和特征,发挥自身在这个过程中能够起到的领导作用,将能极大促进朝向学习型组织的转变和最终形成。
原文转自:http://blogread.cn/it/article/6611?f=wb