Chapter 5. Collaborate Across Teams


Benefits

  • Team productivity.

  • Better coupling between business needs and the development and operations of software systems.

Patterns

  1. Motivate people to perform at their best.

  2. Encourage cross-functional collaboration (e.g., analysts, developers, testers).

  3. Provide effective collaborative environments.

  4. Integrate business, software, and operation teams.

Anti-Patterns

  • Nurture heroic developers willing to work extremely long hours, including weekends.

  • Have highly specialized people equipped with powerful tools for doing their jobs, with limited collaboration among different team members and limited integration of different tools. The assumption is that if everybody just does his or her job, the end result will be good.


The principle of collaboration across teams stresses the importance of fostering optimal communication. This goal is achieved through proper people management and the setting up of effective collaborative environments.

Software is produced by talented and motivated people collaborating closely. Many complex systems require the collaboration of a number of stakeholders with varying skills, and the largest projects often span geographical and temporal boundaries, further adding complexity to the development process. This is why people issues and collaborationwhat some have referred to as the "soft" element of software developmenthave been a primary focus in the agile development community. Following this principle requires answering many questions, such as the following:

  • How do we motivate people to perform at their best?

  • How do we collaborate within a collocated versus a distributed software team?

  • How do we collaborate across teams responsible for the business, software development, and IT operations?

The first imperative in effective collaboration is to motivate individuals on the team to perform at their best. The notion of self-managed teams, which has gained popularity in the agile community, is based on making a team commit to what they should deliver and then providing that team with the authority to decide on all the issues that directly influence the result.[1] When people feel that they are truly responsible for the end result, they are much more motivated to do a good job. As one of the principles behind the agile manifesto states, "Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done."

[1] Schwaber 2002.

The second imperative is to encourage cross-functional collaboration. As Walker Royce says, "software development is a team sport."[2] An iterative approach increases the need for working closely as a team. We need to break down the walls that often exist between analysts, developers, and testers and broaden the responsibilities of these roles to ensure effective collaboration in an environment with fast churn. Each team member must understand the mission and vision of the project.

[2] Royce 1998.

As teams grow, we need to provide them with effective collaborative environments. These environments facilitate and automate metrics collection, status reporting, and build management, as well as bookkeeping around configuration management. This efficiency reduces the need for meetings, which frees up team members to spend more time on more productive and creative activities. These environments should also enable more effective collaboration by simplifying communication, bridging gaps in place and time between various team members. Examples of such environments range from shared project rooms and whiteboards to networked or Web-based solutions such as Wikis, or integrated development environments and configuration and change management environments.

Our fourth imperative under this principle is integration across business, software, and operation teams. As software becomes increasingly critical to how we run our business, we need to create close collaboration among (1) the teams deciding how to run our current and future business, (2) the teams developing the supporting software systems, and (3) the teams running our IT operations. In most companies, these three groups have poor communication (see Figure 5.1).

Figure 5.1. Collaborate Across Business, Development, and Operations Teams.

As software becomes more critical to how we run our business, we need to collaborate more closely around teams responsible for how to run the business, how to develop applications, and how to run the applications. In most companies these three groups have poor communication.


The anti-pattern to following this principle would be to nurture heroic developers who are willing to work extremely long hours, including weekends. Another anti-pattern would be to have highly specialized people equipped with power tools for doing their jobs, with limited collaboration among different team members and limited integration of different tools. The assumption is that if everybody just does his or her job, the end result will be good.

Let's have a look at some of the practices that will help you achieve the above goals:

  • Practice 12: Build High-Performance Teams discusses what characterizes a high-performing team and how you can build a culture that breeds high-performance teams.

  • Practice 13: Organize Around the Architecture explains how you can organize your team to minimize stepping on each other's toes.

  • Practice 14: Manage Versions offers guidance on how to effectively manage changes to the hundreds, if not thousands, of artifacts a project will have.



Agility and Discipline Made Easy(c) Practices from OpenUP and RUP
Agility and Discipline Made Easy: Practices from OpenUP and RUP
ISBN: 0321321308
EAN: 2147483647
Year: 2006
Pages: 98

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net