Conceito: Trabalhar em conjunto com equipes
Este Princípio explica como fazer para fomentar colaboração efetiva.
Descrição Principal

Introdução

Este princípio ressalta a importância de fomentar uma comunicação ideal ampla do projeto. Isso é possível através de uma adequada organização de equipe e criação de ambientes de colaboração.

      
Benefícios
  • Produtividade da equipe
  • Melhor acoplamento entre as necessidades comerciais e o desenvolvimento e sistemas de software operacionais.
Padrão
  1. Motivar pessoas a realizarem seu melhor
  2. Criar equipes auto-gerenciadas.
  3. Encorajar colaboração funcional (ex. analistas, desenvolvedores, testadores)
  4. Proporcionar ambientes de colaboração efetiva.
  5. Gerenciar artefatos em desenvolvimento e tarefas para melhorar a colaboração e a percepção de qualidade do progresso com ambientes integrados.
  6. Integrar negócios, software e equipes de operação
Antipadrões
  • Criar desenvolvedores heróicos que desejam trabalhar por horas extremamente longas, inclusive nos finais de semana.
  • Ter pessoas altamente especializadas equipadas com poderosas ferramentas para fazer suas tarefas, com restrita colaboração entre diferentes membros de equipe e integração limitada entre diferentes ferramentas. A hipótese é que, se todos fizessem seus trabalhos, o resultado final seria muito bom.

Discussão 

O software é produzido por pessoas talentosas e motivadas trabalhando em conjunto rigorosamente. Muitos sistemas complexos requerem a colaboração de alguns investidores com habilidades variadas, e os projetos maiores muitàs vezes se expandem geograficamente e ultrapassam os limites temporais, acrescentando ainda mais complexidades ao processo de desenvolvimento. Isso porque envolve pessoas e a colaboração -- que alguns referiram como o elemento "soft" no desenvolvimento de software -- tem sido principal foco em ágeis comunidades de desenvolvimento. Seguir esse princípio requer responder  muitas perguntas, incluindo:

  • Como motivamos as pessoas a realizarem seu melhor?
  • Como colaboramos em equipe co-localizadas versus uma equipe de software distribuída?
  • Como colaboramos com equipes responsáveis pelos negócios, desenvolvimento de software e operações de IT?

A primeira etapa na colaboração efetiva é motivar indivíduos na equipe a realizarem seu melhor. A noção de equipes auto-gerenciadas ganhou popularidade em equipes ágeis (veja Conceito: Práticas Ágeis e RUP); baseia-se em fazer com que a equipe se comprometa com o que deve entregar e se apresente como uma equipe com autoridade para decidir sobre todos os assuntos que influenciam diretamente no resultado. Quando as pessoas sentem são realmente responsáveis pelo resultado final, ficam muito mais motivadas a realizarem um bom trabalho. Como o ditado diz: "Crie projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte que precisam, e confie neles, pois entregarão o trabalho feito.

A segunda etapa é encorajar colaboração funcional. Como Walker Royce diz, "o desenvolvimento de software é um esporte de equipe." Uma abordagem interativa aumenta a necessidade de se trabalhar próximo de uma equipe. Precisamos quebrar as paredes que muitàs vezes existem entre analistas, desenvolvedores e testadores e alargar as responsabilidades dessas funções para garantir efetiva colaboração em um ambiente grande agitação. Cada membro precisa compreender a missão e a visão do projeto.

Na medida em que as equipes crescem, precisamos oferecer-lhes ambiente de efetiva colaboração. Esses ambientes facilitam e automatizam a coleção métrica e o relatório de status, e automatizam o gerenciamento de criação e a escrituração mercantil em torno do gerenciamento de configuração. Isso reduz eficientemente a necessidade de reuniões, o que libera os membros da equipe para gastarem mais tempo em atividades mais produtivas e criativas. Esses ambientes também devem aumentar a colaboração efetiva simplificando a comunicação, reorganizando as brechas e o tempo entre os vários membros da equipe. Exemplos de tais intervalos no ambiente de salas compartilhadas, para soluções em rede ou baseadas na Web, como Wikis ou ambientes de desenvolvimento integrado e configuração e ambientes de gerenciamento de mudanças.

Á medida que o software se torna mais crítico aos processos principais do negócio, a necessidade de colaboração efetiva entre as equipes aumenta. Na maioria das organizações, as equipes responsáveis pela execução do negócio, desenvolvimento de aplicativos e execução dos aplicativos não têm uma boa comunicação.

Nosso objetivo principal sob esses princípios é colaboração integrada com negócios, software e equipes de operação. Na medida em que o software torna-se cada vez mais crítico na forma como realizamos os negócios, precisamos criar íntima colaboração entre 1) as equipes decidindo como executar nossos negócios atuais e futuros, 2) as equipes desenvolvendo os sistemas de software de suporte, e 3) as equipes executando nossas operações de IT. Em muitas empresas, esses três grupos apresentam pouca comunicação.