是软件产品不可能是小作坊式的开发方式能完成的,是否具备完善有效的控制能力,规避由其所带来的质量与可靠性方面引起的风险是关系到团队生存的大事。
团队模型的完善:
团队模型是软件开发队伍建设的基础,一个结构合理的团队,虽然不能保证项目一定成功,但却是保障产品长期稳定的保持高质量、高可靠性的基础。
这里所建议的团队模型,参考了敏捷开发和CMM、MSF等重要模型,并在实践中应用了两年以上,应该说是一个有效的中小团队模型;这个模型本身不是固定不变的,它应结合不同时期,不同团队的特点,加以完善,提高其可行性与有效性。
团队模型中的重要概念:
团队的基本构思:
为了弥补传统项目小组自上而下的层次结构的一些不足,研发团队应是小型、跨学科的小组,在这样的小组中成员们共同承担各项职责,权衡彼此间能力差异,以便将主要精力集中到手头上的工作中。他们拥有共同的项目前景,以部署产品为中心,坚持高标准的质量和沟通,保持乐意学习的心态。本文描述了小组中的各种角色群,以及他们的目标和职能领域。同时提供了指导,以便根据产品规模和复杂性来保障一个高效的团队。
清晰的责任,共同的职责:
将工作进行中需要共同承担的职责和确保工作如期完成需明确的工作责任结合起来。
团队模型基于这样一个前提,即小组里的每个角色都代表了对项目的一种独一无二的观点,但是没有哪个个人能够完全代表所有的不同质量目标。为了解决这一问题,把对各种利益相关人的清晰角色职责与实现这个项目成功的整个小组的责任结合起来了。
在小组内部,每个角色通过对小组本身负责(也对他们各自所属的组织负责)实现该角色的质量目标。在这种意义上,每个角色都对最终解决方案质量的一部分负责。小组成员之间共同承担职责(根据不同小组角色指派)。角色之间是相互依赖的,有以下两个原因:首先,就其必要性而言,因为把每个角色的工作分隔开来是不可能的;其次,出于优先的原因,如果每个角色都了解全局情况,那么小组的效率会更高。这种相互的依赖性会鼓励小组成员对由他们负责的直接区域以外的工作做出评论和贡献,以确保小组所有的知识、能力和经验能够被应用到产品的构造里。项目的成功属于所有的小组成员;他们共同分享一个成功的项目所带来的荣誉和回报,他们也同时希望,即使是一项不太成功的项目,也能做到全心投入并从中吸取教训以完善他们的专长。
赋予小组成员权力:
在一个高效的小组里,所有的成员都被赋予权力以便根据他们自己的承诺交付任务,并且充分信任小组的其他成员也能实现各自的承诺。类似的,未来客户也能够认为小组将会兑现其承诺,并进行相应的规划。在最坏的情况下,小组也应该尽快地告知客户项目出现了哪些延迟和变化。
赋予小组成员权力,让其承担指派的承诺。这种授权包括向小组成员提供进行工作所需的各种资源;负责制定决策以有效影响队员的工作;理解队员的权力界限,并不断增加各种可用途径来处理越权问题。
准备好向其他成员允诺。这些准备包含了心态(进行面谈并乐意采取行动)、就绪,并理解承诺的内在含义以及它对当前工作量和资源的影响。这样做的结果就是,不到小组成员清楚承诺的内在含义,就不要作出承诺。相反,小组成员要提出一个更小的、他们能够理解的承诺,例如对这些承诺的内在含义进行研究,然后再迅速坚定地作出承诺。对较小承诺的成功交付将建立小组的信任。
清晰定义自己担负的承诺。这样可以避免一些可能会导致小组成员间信任危机的误会。
做出一切合理的努力来交付承诺的工作。如果一个小组有来自不同组织的成员,那么合理的期望也将因人而异。例如,某些小组成员可能认为在周末工作是合理的;而其他人则可