分享

最高效的团队结构

 **77 2010-08-20

 

敏捷认为小团队的人数规模应该是在魔法数字7上加减2。敏捷也推荐完整团队概念,就是说团队内部要有足够的技能以完成工作。因此,开发团队除了具备核心的开发技能,还要具有测试技能、数据库技能、用户界面技能。然而,很多组织仍然纠结于最佳的团队规模和有效的团队构成。

Scott-Ambler建议:根据项目需要,可以有敏捷小团队敏捷大团队。小团队有标准的Scrum角色,比如scrum-master、开发团队和产品负责人。小团队还可以使用支持队伍,包括DBA、领域专家和测试人员这样的技术专家。大型团队需要“团队的团队(team of teams)”这样的方式。Scott认为:

典型策略是:把多个相关小团队组织起来,形成更大规模的团队,最有效的方式是围绕着系统架构的方式组织。每个子团队应该负责一个或几个子系统,让他们可以像小敏捷团队那样,负责按时交付可工作的软件。这个策略常被称为“Conway法则”,因为是Melvin Conway在二十世纪六十年代后期提出来的,也是精益开发管理策略之一。

Steve Miller认为:除了Scrum推荐的角色之外,要想让团队做好质量保证和文档相关工作并不现实。他们改进了团队构成,增加了两个角色。软件质量工程师负责一个sprint的产出的质量,文档专家负责创建用户指南、管理员指南和培训材料。

同样地,Michael F. Dwyer在回应Scrum Development讨论组中一个有关团队大小的讨论时指出:

趁着Ron Jeffries还没说,我先借用他那个著名的话“2+2=5,因为这两个粗略的‘2’要比数字2更大一点。”团队规模可以是1个人这么小,也可以是500人这么大,完全基于你对团队的定义和成员的投入程度。

因此有一个共识:团队的规模和构成要根据各个项目具体情况调整。然而,我们应该如何评价我们的团队结构是否最高效呢?

Mike Cohn建议回答下列9个问题,而且都能得到肯定回答,那就是一个结构优秀的团队。问题列表包括:

  1. 团队的结构是否强调自身的长处,支撑短处,而且支持、激励团队成员?团队某个成员的弱点应该可以被其他成员的优势所补足。
  2. 团队结构是否将必须同时属于两个团队的人员数目降到最低(而且避免有人同时属于三个团队)?试图同时着手多个并行项目、或是多个任务,都会损害进度。
  3. 团队结构是否能将团队保持在一起的时间延至最长?应该更倾向于让成员能够在长期内保持在一起的团队设计,这能让团队的感觉和联系保持长久。
  4. 组件团队的结构是不是只在有限而且易于处理的情况下使用?团队应该是功能团队,围绕着端到端交付可工作功能的方式构建。
  5. 是不是两个pizza这样的食物数量足够多数团队食用?大多数设计良好的团队应该有7±2个人。
  6. 团队结构能够将团队之间的沟通路径数目最小化?如果在待开发应用中做一个小更改,就会带来大量团队之间的沟通,那么就得好好看看团队结构了。
  7. 现有结构是否鼓励团队沟通?如果换个结构,团队就不愿意这么做?高效的团队设计鼓励团队或个人之间的沟通,可能他们本来不想这么做。
  8. 团队设计是否支持对于责任的明确理解?结构应该推进共享所有权和共同成功的理念。
  9. 团队成员是否可以对团队设计提出建议?他们应该感到这是他们构建起来的团队。
在回答完上述问题后,您是否相信您有高效的团队架构?为了让敏捷的做法帮您实现高效团队架构,您过去采取了哪些必要措施?
 

Agile talks about small team sizes with the magic numbers of 7 plus minus 2. Agile also recommends whole teams. Whole team is a concept that recommends having sufficient skills within the team itself to get the job done. This implies that the development team has the requisite testing skills, database skills, user interface skills, apart from the core development skills. However, many organizations still struggle with questions related to the optimal team size and an efficient team composition.

Scott Ambler suggested that depending on the project needs there could be small Agile teams or large Agile teams. Small teams generally have the standard roles of Scrum i.e. A scrum master, development team and a product owner. The small team could also use a supporting cast consisting of technical experts like DBAs, domain experts and testers. A large team needs a 'team of teams' approach. According to Scott,

The typical strategy is to organize your larger team into a collection of smaller teams, and the most effective way to do so is around the architecture of your system. Each subteam should be responsible for one or more subsystems, enabling them to work as a small agile team responsible for delivering working software on a timely basis. This strategy is often referred to as Conway’s Law after Melvin Conway who introduced it in the late 1960s, and is one of several lean development governance strategies.

Steve Miller suggested that along with the Scrum recommended roles, he found it unrealistic for the team to handle quality assurance and documentation well. They improved the team composition to have 2 more roles. Software quality engineer to be responsible for the quality of a sprint and a Documentation specialist for creating user guides, administrative guides and training material.

Likewise, responding to a discussion on the Scrum Development group about team sizes, Michael F. Dwyer commented that

As Ron Jeffries may be otherwise occupied I will borrow his famous tag "2 + 2 = 5 with sufficiently large enough quantities of 2". Team size can be as small a 1 and as large as 500, it all depends on your definition of team and member involvement.

Thus there is a general consensus around the need to tweak the team sizes and composition as per the project needs. However, how do you validate that you have the most efficient team structure?

Mike Cohn suggested that answering the following nine questions and getting an affirmative response to each suggests a well structured team. His list of questions include

  1. Does the structure accentuate the strengths, shore up the weaknesses, and support the motivations of the team members? A team where weakness of a team member is overshadowed by strength of others.
  2. Does the structure minimize the number of people required to be on two teams (and avoid having anyone on three)? Attempting to do too many concurrent projects or multitasking is detrimental to progress.
  3. Does the structure maximize the amount of time that teams will remain together? Favor a design that allows team membership to persist over a longer period to let that team feeling and bonding persist.
  4. Are component teams used only in limited and easily justifiable cases? Teams should be feature teams created around the end-to-end delivery of working features.
  5. Will you be able to feed most teams with two pizzas? Majority of teams in a good design should have 7 plus minus 2 members.
  6. Does the structure minimize the number of communication paths between teams? If, for making a minor change in the application, the interteam communication is high then revisit the structure.
  7. Does the structure encourage teams to communicate who wouldn’t otherwise do so? An effective team design encourages communication among teams or individuals who should communicate but may not do so on their own accord.
  8. Does the design support a clear understanding of accountability? The structure should enforce the concept of shared ownership and collective success.
  9. Did team members have input into the design of the team? Team members should feel that it is the team that they built.

After answering the questions do you believe that you have an efficient team structure? What tweaks did you have to make to the Agile recommendations to arrive at your efficient team structure?

  • This article is part of a featured topic series on Scrum

1 comment

Watch Thread Reply

Team structure by Dave Hitchman Posted Mar 18, 2010 10:04 AM
  1. Back to top

    Team structure

    Mar 18, 2010 10:04 AM by Dave Hitchman

    It is certainly complex to create a well functioning team. There are several dimensions to this:
    a) Many companies view QA as separate to development, and seem to think that you can't put the two 'types of people' together. The worry is that the 'sloppy developers' will 'corrupt' the QA people and the quality will be lower. Few seem to appreciate that the QA people are just as likely to influence the developers to better standards.
    b) For large products it is often tricky to create suitably 'sand boxed' parts of the product to split it between teams and still maintain a global 'look and feel'. This is actually just as true with 'prince' or similar techniques as it is for scrum, but somehow we forget to remind people of this. In many ways scrum can be an advantage here, the product owners should get together to ensure a suitable global feel to the user stories - and to include sufficient detail in the user stories to ensure the API's and GUI across the system is reasonably consistent. In fact, I have seen a failure to ensure this cause masses of problems for Symbian and its customers - there is no consistency at all between different API's. They are not the only ones with the problem.
    c)Many companies have developed a 'matrix management' structure, this does actually have its uses, but what it does lead to is a tendancy to move people from project to project to make best use of their current skills and avoid developing any new ones. Thus to keep a team together for the duration of one project, let alone to develop a scrum team over a number of years, is an uphill battle. Sure 'Fred' is needed for his architectural skills today, but surely you will have designed the architecture by Friday and I can have him for Joes project? We clearly understand that the architecture may change, that those skills, along with all the experience Fred had that led to him being considered an architect, are valuable throughout the project, it is especially valuable to the team to keep Fred involved as the project progresses so he can learn how well the architecture is implemented, and what its problems are

 
 
 
 
 
 
 
 
 
 
 
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多