Concept: Collaborer entre équipes
Ce principe explique la manière de favoriser la collaboration.
Description principale

Introduction

Ce principe met l'accent sur l'importance d'une communication optimale concernant l'ensemble du projet. La mise en place d'une organisation d'équipe appropriée et d'environnements collaboratifs efficaces peut permettre d'atteindre cet objectif.

      
Avantages
  • Productivité d'équipe
  • Meilleure association des besoins métier, du développement et du fonctionnement des systèmes logiciels.
Pattern
  1. Motiver les personnes pour qu'elles soient performantes
  2. Créer des équipes autonomes.
  3. Encourager une collaboration fonctionnelle transversale (analystes, développeurs, testeurs)
  4. Offrir des environnements collaboratifs efficaces
  5. Gérer l'évolution des artefacts et des tâches afin d'améliorer la collaboration, les progrès et la perception de la qualité au sein des environnements intégrés.
  6. Intégrer les équipes opérationnelles, logicielles et métier
Anti-Patterns
  • Encourager les développeurs héroïques prêts à faire des heures supplémentaires et à travailler les week-ends.
  • Recourir à des personnes extrêmement spécialisées et équipées d'outils puissants, avec une collaboration limitée entre les différents membres de l'équipe et une intégration limitée entre les différents outils. En partant du principe que si chacun fait son travail, le résultat final sera bon.

Discussion 

Les logiciels sont développés par des personnes talentueuses et motivées travaillant en étroite collaboration. De nombreux systèmes complexes nécessitent une collaboration entre des parties prenantes aux compétences variées et les projets de grande envergure se caractérisent souvent par des frontières géographiques et temporelles étendues, ce qui accroît la complexité du processus de développement. C'est pourquoi les questions relatives aux ressources humaines et à la collaboration -- ce que certains ont appelé l'élément "soft" du développement logiciel -- ont été au centre des préoccupations de la communauté de développement agile. Sur ce principe, il est nécessaire de répondre aux questions suivantes :

  • Comment motiver les personnes pour qu'elles soient performantes ?
  • Comment collaborer au sein d'une équipe logicielle distribuée ou partageant un même emplacement ?
  • Comment établir une collaboration entre des équipes commerciales, informatiques et de développement logiciel ?

La première étape permettant d'obtenir une collaboration efficace est de motiver les personnes au sein de l'équipe afin qu'elles soient performantes. La notion d'équipes autonomes a gagné en popularité au sein de la communauté agile (voir Concept: Pratiques agiles et RUP); cette notion se fonde sur la capacité d'une équipe à tenir ses engagements et à donner ensuite à cette équipe un pouvoir de décision sur les questions influençant le résultat. Lorsque les personnes sentent qu'elles sont pleinement responsables du résultat final, elles sont beaucoup plus motivées pour travailler. Comme la déclaration de principes agile le stipule : "Construisez des projets avec des personnes motivées. Apportez leur l'environnement et le soutien nécessaires et faites leur confiance pour que le travail soit fait."

La deuxième étape consiste à encourager une collaboration fonctionnelle transversale. Comme le dit Walker Royce, "le développement logiciel est un sport d'équipe." Une approche itérative accentue le besoin d'une équipe à travailler en étroite collaboration. Il faut briser les barrières qui existent souvent entre les analystes, les développeurs et les testeurs et élargir leurs responsabilités afin de garantir une collaboration efficace dans un environnement changeant. Chaque membre doit connaître la mission et la vision du projet.

Au fur et à mesure que les équipes grandissent, il est nécessaire de fournir des environnements collaboratifs efficaces. Ces environnements facilitent et automatisent le regroupement des métriques et la génération de rapports d'état ainsi que la gestion de la construction et la tenue des enregistrements en matière de gestion de configuration. Cette efficacité minimise le besoin de réunions, ce qui libère les membres de l'équipe et leur permet de passer plus de temps sur des activités plus créatives et plus productives. Ces environnements doivent également permettre une collaboration plus efficace en simplifiant la communication, en établissant des passerelles dans l'espace et dans le temps entre les différents membres de l'équipe. Des exemples d'un tel environnement vont des salles de projet, aux solutions basées sur le Web ou en réseau comme Wikis ou les environnements de développement intégrés et les environnements de gestion des changements et de configuration.

A mesure que le logiciel devient plus important pour les processus métier de base, le besoin d'une collaboration efficace entre les équipes se fait sentir. Dans la plupart des organisations, les équipes qui dirigent le métier, qui développent les applications et qui exécutent les applications ne communiquent pas assez.

L'objectif ultime est donc d'obtenir une collaboration intégrée entre les équipes commerciales, logicielles et opérationnelles. Dans la mesure où les logiciels deviennent de plus en plus importants pour le fonctionnement d'une entreprise, il est nécessaire d'établir une collaboration entre 1) les équipes décidant de la manière de conduire les activités en cours et futures, 2) les équipes développant et prenant en charge les systèmes logiciels, et 3) les équipes exécutant les opérations informatiques. Dans de nombreuses entreprises, ces trois groupes communiquent peu entre eux.