J'ai récemment rejoint une entreprise où je travaille comme Master Scrum sur un projet de développement agile construisant une application Web.
L'équipe est sur le point d'être la taille maximale d'une équipe agile (en attente de 9 la semaine prochaine). Nous avons également parlé de séparer potentiellement l'équipe en deux équipes, pas tellement à raccourcir les pleins debout (qui ne sont pas excessifs pour le moment) mais d'empêcher les gens d'être complètement ennuyés dans des sessions de planification de sprint (qui ne sont à nouveau excessivement long).
Il existe deux couches très distinctes au projet - un développement de backend technique élevé (comme sérieusement complexe) et des conceptions/bâtiments d'interface utilisateur. Il semble que lorsque le backend gars parle technique, la zone des gars de l'UI, et vice versa. Il semble que le moyen logique de diviser l'équipe si seulement pour être plus efficace, mais j'ai une réserve massive en ce que je pouvais vraiment faire est de réduire la collaboration et le partage des connaissances. Les deux équipes n'auront tout simplement pas vraiment une bonne idée de ce que le reste de l'équipe construit.
Est-ce que quelqu'un a une expérience dans le traitement de quelque chose comme ça?
C'est malheureux que les gars de l'interface utilisateur ne se soucient pas du détail du travail complexe. Cela ressemble plus à un sujet de discussion pour une rétrospective. Séparlant l'équipe le long de la discipline fixerait un précédent dangereux, à quelle heure serait-il avant que les conditions requises commencent à zoner et ne se soucient pas de ce que les gars de l'UI font et demandent leur propre équipe.
J'ai toujours été en faveur des tranches verticales pour mes équipes. L'interface utilisateur devrait écouter ce que les gens techniques doivent dire, comme ce sont les personnes qui pourraient aider à faciliter leur travail (OH, ce widget va vous faire faire cela, et si nous utilisions ce widget).
Personnellement, je me concentrerais sur la question des gars de l'interface utilisateur zonant en premier, puis une fois que cette dysfonctionnement a été résolue, discutez de la meilleure façon de scinder les équipes. Je n'essaie pas de vilier les gars de l'interface utilisateur, peut-être que les gens techniques pourraient également faire plus pour rendre leurs discussions plus relativables pour les gars de l'UI.
Comme d'autres l'ont dit, l'équipe doit être autorisée à s'organiser pour déterminer la nouvelle structure. Les expériences passées ont appris que l'auto-organisation ne peut vraiment travailler que lorsque tout le monde est préoccupé par l'équipe, plutôt que leur propre discipline ou leurs intérêts.
À votre santé!
C'est en effet une bonne idée de diviser les parties indépendantes de l'équipe en nouvelles équipes. Dans un projet plus important, il est presque impossible pour les développeurs d'être de près le projet entier, de sorte que la fractionnement est toujours présente formelle ou informelle.
Chacune des nouvelles équipes devrait avoir un chef d'équipe/directeur technique, qui a une connaissance solide sur la portée de leur équipe et qui connaît également les autres équipes.
Après que chaque équipe puisse avoir des réunions de Scrum distinctes et les dirigeants des autres équipes peuvent être présents. De cette façon, vous réduirez le nombre de personnes "ennuyées", mais les équipes sauront toujours ce que les autres travaillent et seront en mesure de collaborer avec succès.
La collaboration devient plus importante si les champs des équipes se croisent ou une équipe dépend de l'autre. Mais encore une fois, l'ensemble de l'équipe n'est pas nécessaire _ Le chef d'équipe peut coordonner la collaboration.
Un aspect clé de Scrum est auto-organisant.
Je vous suggère de discuter de la question avec l'équipe et de les laisser résoudre.
Vos préoccupations sont toutes bien fondées, mais rappelez-vous que comme le maître de Scrum, votre travail consiste à entraîner et à faciliter. Alors demandez-leur comment ils résoudront ces problèmes. Ils posséderont les solutions et make ça marche.
J'ajouterais: En général, les équipes interfonctionnelles sont la voie à suivre.
Lors de la division des équipes, j'essaie toujours de garder à l'esprit le fait qu'une équipe a besoin de pouvoir offrir de la valeur au client. Dans votre cas, il s'agirait des développeurs de backend et de renversement de l'équipe.
Jusqu'où est le front-end du backend? De manière prévisible, la scission est un bon conseil que si la distance est trop loin.
Si le backend se propose du schéma de base de données, ceci est pas trop loin. Front-end et backend a besoin d'écouter des discussions sur le schéma de la base de données.
Si le backend discute de la latence du disque, de la latence de disque, etc., cela est un peu trop loin (lorsque le backend se concentre sur la sympathie et l'optimisation mécaniques, tandis que l'orientation frontale sur l'esthétique humaine).
Y a-t-il une interface de programmation stable et sans ambiguïté entre le front-end et le backend?
Stable et sans ambiguïté, cela signifie que les utilisateurs de cette interface de programmation (les développeurs frontaux) ne seront pas enlisés avec des modifications et ne devront pas lire les murs de texte afin d'apprendre à l'utiliser correctement.
L'équipe de Backend doit fournir une bonne API et une implémentation simulée tôt, et seulement après cela, commencez le développement réel.
Cela ne veut pas dire que l'API devrait être placée en pierre. Ceci est juste une atténuation de la conséquence pour scinder une équipe en deux.
Pourquoi tant d'articles agiles recommandent-ils d'avoir des tranches verticales? Voici quelques informations de base:
La plupart des articles agiles recommandent effectivement éviter le travail du backend, à partir d'une perspective de coûts.
N'oubliez pas non plus qu'une fraction d'articles agiles a eu le biais implicite des entreprises de démarrage.
Et n'oubliez pas la dure réalité du marketing - la plupart des clients ne paient que pour les fronts.
Le travail du bilan a tendance à être coûteux et avait ralenti. Sauf si une entreprise est déjà établie à long terme et génère un profit décent, il est préférable de "sous-traiter" de backend en collant à la technologie hors tension et aux bibliothèques open source.
La plupart des articles agiles recommandent également de mettre en œuvre le front-extrémité de manière à survivre à un commutateur de backend. Ce conseil va de pair avec le précédent: si la technologie hors tension ne répond pas à toutes les exigences, en essayez-en une autre.
Pratiques qui peuvent atténuer les mauvaises conséquences contre la scission d'une équipe
Comme d'autres, je suggérerais certainement d'aller avec des tranches verticales. Celles-ci sont parfois appelées "équipes de fonctionnalités". Je recommanderais de lire sur les avantages/inconvénients sur le site-cadre Agile échelonné: http://scaledagileframework.com/scaled-agile-framework/team/features-Components/
Au début, lorsque vous vous séparez, votre propriétaire de produit et votre maître SDF peuvent être capables de gérer l'arriéré de la libération pour les deux équipes ainsi que des arriérés individuels pour chaque équipe de fonctionnalités. Au fur et à mesure que vous grandissez, cependant, vous devrez probablement mettre en œuvre un arriéré de fonctionnalités de produit qui est ensuite introduit dans de multiples équipes agiles. Une fois que vous avez échoué à ce niveau, vous aurez probablement besoin d'une équipe distincte qui gère le carnet de fonctionnalités, puis apporté aux équipes individuelles pour la mise en œuvre. Dans cette structure, vous pouvez avoir quelque chose comme ceci:
Le Safe Site Web a beaucoup de choses cool pour organiser des équipes plus grandes, et certaines pourraient vous être utiles à mesure que vous passez à une plus grande échelle d'équipes d'équipes.