Une équipe de scrum a augmenté sur la taille dezitée, ce qui rend difficile l'organisation et la planification de travaux. L'équipe fonctionne sur un composant utilisé sur plusieurs projets, qui nécessitent de temps en temps des personnalisations basées sur le produit de base. La croissance de la croissance de l'équipe est qu'il y avait une augmentation de la charge de travail (de nouveaux projets ont été lancés et donc de nouveaux travaux de personnalisation étaient nécessaires) et, par conséquent, de nouveaux membres ont été ajoutés à l'équipe. Les projets sont durables et fonctionnent souvent en parallèle. L'équipe travaille donc essentiellement sur plusieurs projets à la fois. La portée des travaux est toujours la même, ce qui signifie que les équipes ne peuvent pas être divisées par une portée (par exemple, Side de service UI VS).
Quelle serait une bonne approche pour diviser l'équipe en deux équipes?
Comment sera maintenu l'arriéré?
Devrait-il y avoir deux propriétaires de produits en raison de la taille de l'arriéré?
Si oui, quelles seraient de bonnes pratiques pour synchroniser les équipes?
Tout d'abord, méfiez-vous la loi de Brooks: Ajout de la main-d'œuvre à un projet de logiciel tardif le fait plus tard. Ceci est juste une règle de base, mais il a tendance à être vrai, donc si vous ne jetez que plus de personnes dans un projet afin de l'accélérer, sans pouvoir diviser le travail différemment, vous risquez de faire en sorte que le contraire se produise.
Fondamentalement, si les équipes doivent être capables de travailler sans interférence et sans beaucoup de coordination entre eux, vous devez être capable d'être en quelque sorte diviser le travail par portée. Sinon, malgré la répartition théorique en deux équipes, elles fonctionnent toujours comme une seule équipe importante avec toutes les questions que cela apporte. En essayant de travailler sur un seul arriéré et d'attribuer simplement des tâches à une équipe ou à une autre introduira une quantité de surcharge de communication qui mangera toute votre capacité accrue, voire pire, vous évitez la communication, ce qui entraînera une étape de marche des équipes. Les orteils des autres et causent beaucoup de travaux inutiles, de conflits et de moraux réduits.
Je crains donc de trouver une ligne de division. Peut-être que ce ne sera pas aussi clairement coupé que Backend VS UI. Peut-être qu'une équipe peut se concentrer davantage sur les algorithmes et l'autre sur tout le reste? Peut-être que certains composants se trouvent dans la demande qui pourrait être développée de manière plus ou moins indépendante? Peut-être que certains des travaux sont liés au réglage des performances et sont localisés de sorte qu'il n'affecte pas l'application entière et peut être faite de manière indépendante? Il existe peut-être des mécanismes de haut niveau qui utilisent des composants plus bas de niveau? Ensuite, une équipe pourrait programmer contre l'interface des composants de bas niveau et que l'autre équipe pourrait les mettre en œuvre. Une fois que les interfaces sont convenues, de telles équipes pouvaient fonctionner de manière largement indépendante.
Malheureusement, il est difficile de suggérer quelque chose de plus détaillé sans connaître le domaine de votre application et sa structure. Par exemple, vous suggérez que Backend VS UI n'est pas une option, mais vous n'expliquez pas pourquoi.
ÉDITER : Si le travail consiste en des personnalisations qui sont principalement indépendantes les unes des autres et qui ne modifient pas le produit de base (ce qui pourrait affecter les travaux de l'autre équipe), Je pense que vous pourriez essayer de travailler en tant que deux équipes distinctes avec des arriérés séparés en divisant les travaux basés sur le client.
Je suppose qu'il y a plusieurs clients et chacun d'entre eux commande de nombreuses personnalisations au fil du temps. Comme il est connu à l'avance qui a ordonné à quelles personnalisations, il devrait être facile de dire à quel archon arrière à placer chaque article.
CAVEAT: Ce n'est toujours vraiment qu'un seul produit, vous devez donc vous assurer que les équipes savent ce que l'autre est en cours afin d'éviter de faire dule du travail et d'échanger des connaissances. Attraîner des démos de sprint devrait probablement être suffisant et s'assurer que les dirigeants des deux équipes se parlent plus fréquemment.
Contexte: Travailler dans une grande équipe de 17 ans, passant dans une approche agile. Nous avions le même dilemna, nous avons eu de grandes plombs et de grands arriérés.
Ce que nous avons fait: Notre travail s'est facilement divisé entre 2 divisions comme suggéré par Michal. Nous avons maintenant une équipe de datastore (principalement SQL/SSIS/SSRS) et une équipe des services publics (C # .NET UI Stuff). Nous avons 2 arriérées, 2 maîtres de Scrum, mais notre responsable de ligne examine les priorités des deux sources de Scrum (en tant que propriétaire de produit). Les maîtres de Scrum Scrum fonctionnent des dépendances entre les 2 équipes.
Problèmes: Nous avons un certain nombre de développeurs qui basculent entre les 2 en raison de la charge de travail. La même chose que vous, nous avons des projets qui exigent que certains travaux soient effectués, donc parfois une équipe agile "utilise" les membres de l'autre. Comme nous l'avons tous déjà travaillé ensemble, cela n'a pas été trop mauvais, mais vous ne voulez pas que les développeurs passent entre les 2 trop souvent imo. Nous disons que des commutateurs ne se produisent qu'entre les sprints. Une fois que quelqu'un est dans un sprint, ils y restent jusqu'à la prochaine réunion de planification.
J'espère que cela vous aide d'une certaine manière.