Comment les architectes peuvent-ils travailler avec des équipes Scrum auto-organisées?

20

Une organisation avec un certain nombre d'équipes Scrum agiles dispose également d'un petit groupe de personnes nommées «architectes d'entreprise». Le groupe EA agit en tant que contrôle et gardien de la qualité et du respect des décisions. Cela conduit à des chevauchements entre la décision d'équipe et les décisions d'EE.

Par exemple, l'équipe peut vouloir utiliser la bibliothèque X ou utiliser REST au lieu de SOAP, mais l'EA n'approuve pas cela.

Maintenant, cela peut entraîner de la frustration lorsque les décisions de l'équipe sont annulées. Pris assez loin, cela peut potentiellement conduire à une situation où le peuple EA "prend" tout le pouvoir et l'équipe finit par se sentir démotivée et pas très agile du tout.

Les guides Scrum ont ceci à dire à ce sujet:

Auto-organisation: personne (pas même le Scrum Master) ne dit à l'équipe de développement comment transformer le backlog de produit en incréments de fonctionnalités potentiellement libérables.

Est-ce raisonnable? Faut-il dissoudre l'équipe EA? Les équipes doivent-elles refuser ou simplement se conformer?

Martin Wickman
la source

Réponses:

20

Une équipe de développement est composée de 3 à 9 personnes aux compétences transversales qui effectuent le travail réel

Scrum Master devrait inviter "Enterprise Architect" à faire partie de l'équipe de projet. La communication entre l'architecte et les programmeurs serait alors excellente.


la source
2
Bon point; cependant je ne vois pas comment cela peut fonctionner s'il y a plusieurs équipes avec lesquelles les architectes travaillent.
sleske
1
"Hé, EA, maintenant tu es assis ici et tu communiques toujours avec les mêmes personnes. Juste plus souvent." Comment cela aide-t-il exactement à résoudre les conflits entre l'EA et les autres développeurs?
Izkata
@sleske, pourquoi ne pas diviser le groupe "architectes d'entreprise" en équipes? ou employer plus d'architectes? le problème, c'est est-ce que l'entreprise veut SCRUM et des équipes agiles, ou qch scrumish. Izkata, les réunions quotidiennes changent beaucoup dans la communication de l'équipe, sérieusement, quand EA sentira qu'il / elle fait partie du DT et non un groupe d'architecture extraterrestre, il y a de meilleures chances de compromis.
1
@ariwez: "pourquoi ne pas diviser le groupe" architectes d'entreprise "en équipes?" Parce que nous avons plus d'équipes que d'architectes; les architectes travaillent également principalement sur des problèmes qui affectent plusieurs équipes.
sleske
@sleske: "Individus et interactions sur les processus et les outils"
17

Le choix de la technologie utilisée fait partie des exigences du logiciel, ce qui signifie que cela fait partie de la demande de fonctionnalité que vous n'utilisez pas certaines technologies, quelle qu'en soit la raison.

Les architectes parlent pour les systèmes et la base de code parce que les systèmes et la base de code ne peuvent pas parler d'eux-mêmes. Avoir un architecte est généralement dans l'intérêt à long terme d'une entreprise, en particulier celle qui s'appuie sur un logiciel qui est construit en interne.

Les architectes ne disent pas aux développeurs comment transformer l'arriéré en incréments (sprints), ils disent quelles technologies peuvent et ne peuvent pas être utilisées. Vous confondez deux problèmes différents.

La solution est de ne rien changer. Si vos équipes sont frustrées parce que les architectes sont trop restrictifs ou trop autoritaires, c'est un problème de personnel qui n'a rien à voir avec SCRUM et devrait être abordé avec les parties prenantes de l'entreprise comme un problème de satisfaction des employés et, si possible, le résultat net ("Il nous faut x%plus de temps pour développer des fonctionnalités ycar l'architecte zne nous laissera pas utiliser Turbo Pascal.")

Jonathan Rich
la source
Il ne s'agit pas de satisfaction personnelle, mais de productivité, de qualité et de souci de la valeur du produit. Je suppose que les développeurs des équipes peuvent faire cette distinction.
Martin Wickman
2
Quelqu'un, à un moment donné, a décidé qu'il ne pouvait pas. C'est pourquoi les architectes existent.
Jonathan Rich
4
Je travaille actuellement sur une application côté serveur à triple pile mélangeant Rails, Java et .NET qui n'avait vraiment pas besoin d'être très compliquée. Alors oui, les gardiens peuvent être une bonne chose, mais les décisions techniques doivent émaner de développeurs arrivant à un consensus et la direction approuvant ou communiquant des préoccupations, et non des non-développeurs prenant des décisions techniques arbitraires ou faisant basculer les décisions de l'équipe de développement au milieu d'un sprint.
Erik Reppen
4
@erik Et lorsque trois équipes distinctes arrivent à leurs trois décisions de consensus distinctes, vous pouvez obtenir un mélange de Rails, Java et .Net.
MarkJ
@MarkJ si vous avez trois équipes distinctes travaillant isolément pour la même application Web côté serveur, vous méritez ce que vous obtenez.
Erik Reppen
6

Ce genre de chose est nécessaire pour maintenir l'équilibre entre le besoin d'une grande équipe pour mener à bien le projet et la nécessité de garder des équipes agiles petites.

Généralement, la «mêlée de chefs d'équipe» est composée d'un membre élu dans chacune des petites équipes. Cela donne une certaine nature d'auto-organisation, ainsi qu'une certaine forme de représentation afin que les décisions prises par le groupe de haut niveau soient acceptées par le groupe agile.

Pour votre scénario particulier, quelque chose devrait être fait pour arrêter la démotivation de l'équipe agile, mais probablement pas une rébellion ou une simple acceptation. L'équipe doit se rendre compte que vous êtes là pour créer de bons logiciels, pas pour vous plier aux idéaux. Avoir un tas d'équipes différentes utilisant chacune des technologies différentes pour faire des choses similaires dans le même projet va conduire à un pire logiciel. Avoir un tas d'équipes différentes utilisant des normes de codage différentes dans le même projet va conduire à un logiciel pire.

Vous aurez donc besoin d' un moyen de parvenir à un consensus sur la façon dont le projet va fonctionner. La mêlée de chef d'équipe est utilisée à d'autres endroits de manière efficace. Vous devrez peut-être faire quelque chose différemment ou chercher à savoir pourquoi votre groupe ne le fait pas efficacement.

Telastyn
la source
2
Bien sûr, mais inverser la tendance: forcer toutes les équipes à utiliser la même technologie merdique est encore plus méchant (tous suivent le même chemin moche). Alors que la «diversité» est liée à produire au moins quelques solutions qui prospéreront.
Martin Wickman
2
@MartinWickman parfois, il y a des décisions commerciales derrière le choix des technologies de merde. Si 80% des développeurs d'un marché particulier ont une expérience de la technologie merdique, il peut être très judicieux sur le plan commercial d'utiliser cette technologie car elle vous permet de faire appel à des entrepreneurs en cas de besoin. Dans un petit marché, vous ne pourrez peut-être pas trouver de programmeurs Python dignes de ce nom.
Jonathan Rich
@JonathanRich Quand je dis merde, je veux dire merde. Cela inclut de ne pas pouvoir trouver quelqu'un qui le sait.
Martin Wickman
1
@MartinWickman - Bien sûr, je fais l'hypothèse mineure que vos développeurs de haut niveau désignés (assignés ou auto-organisés) ne sont pas des idiots complets.
Telastyn
1
@JonathanRich, une logique métier imparfaite, OMI. Une plus grande quantité ne signifie pas une proportion de qualité plus élevée et il faut beaucoup moins de développeurs Python pour faire le travail s'ils sont au moins compétents.
Erik Reppen
5

La question est: Quelle est la raison pour laquelle cette équipe d'architectes existe? La seule raison pour laquelle je peux penser est d'imposer l'interopérabilité entre les différentes équipes. Ou les équipes travaillent sur différentes parties d'un seul produit et cette équipe d'architectes existe pour que chaque partie fonctionne ensemble.

Je ne pense vraiment pas que ce schéma puisse bien fonctionner dans un environnement agile, pour les raisons exactes que vous dites. Les différentes équipes devraient être autonomes, de même que leurs entrées et sorties. Donc, contraindre leurs sorties ne devrait faire partie que des exigences d'entrée. Mais ces contraintes doivent être raisonnables. Quelque chose comme "Ne pas utiliser la bibliothèque X" n'est pas une bonne exigence, mais dire "Doit limiter le nombre de bibliothèques tierces utilisées au minimum" ou "Ajouter de nouvelles bibliothèques, qui ne sont pas utilisées dans d'autres équipes, devrait être limité." devrait être bien.

Ensuite, je dissolvais l'équipe d'architectes dans toutes les équipes et j'utilisais leur expertise dans les questions d'architecture. En faisant partie de l'équipe, ils seront en mesure de mieux voir les problèmes rencontrés par l'équipe et pourraient avoir de meilleures idées ou des opinions plus éclairées sur la modification des éléments fondamentaux de l'architecture. Il convient également d'encourager les architectes des équipes à communiquer afin de garantir la cohérence de l'architecture entre les équipes.

Euphorique
la source
5

Le groupe de Scaled Agile Framework en parle très bien. La plupart d'entre nous traitons au niveau de l'équipe, mais lors de la mise à l'échelle, nous devons reconnaître qu'il y a également des rôles à jouer au niveau du programme et du portefeuille. Les décisions architecturales doivent être prises dans toute l'organisation, et cela devrait alimenter ce qui se passe aux niveaux inférieurs de l'organisation. Il n'y a rien de mal à avoir des décisions architecturales!

À ce sujet, le récent livre de Dean Leffingwell sur les exigences logicielles agiles est une bonne lecture sur ce sujet, je l'ai lu moi-même.

Jay S
la source
4

Nous avons également plusieurs équipes agiles (certaines font du Kanban, d'autres du Scrum) et des architectes. Les architectes sont responsables de l'infrastructure qui couvre tous nos produits (bibliothèques d'assistance, authentification, infrastructure de construction), etc. Ils prennent des décisions techniques, mais mettent également en œuvre des choses, principalement des composants d'infrastructure.

Cela fonctionne bien et il n'y a généralement pas de conflit. Je crois qu'un point crucial est:

Les architectes n'ont aucune autorité officielle sur les équipes et ne peuvent pas simplement les annuler. Normalement, les architectes prennent des décisions qui s'appliquent à tous les produits et les équipes prennent des décisions pour leur produit. En cas de conflit, l'architecte et l'équipe doivent simplement parvenir à un accord ou passer à la gestion (bien que cela se produise rarement).

Je pense qu'il est vraiment important de faire des architectes et des développeurs des pairs. Les deux travaillent vers un objectif commun, juste dans des domaines différents. Si personne ne peut simplement "passer outre" l'autre, la coopération sera meilleure.

sleske
la source
2
Convenant avec @MartinWickman que la «frontière» est la clé, à plusieurs égards: premièrement, les opinions des architectes doivent être prises en compte dans les limites du logiciel , où les composants de plusieurs équipes se connectent; secondaire, que les architectes connaissent leur propre limite d'autorité , de sorte qu'ils s'abstiennent d'intervenir dans les décisions de l'équipe tant que ces décisions n'ont pas d'impact sur l'interopérabilité.
rwong
3

Je ne vois aucun conflit ici. D'après ce que je comprends, tout ce que EA (comme un titre pompeux je pense que c'est) est censé faire est QA. Tout le monde devrait en être conscient.

Vous devez considérer que dans toute méthodologie de développement (qui mérite d'être considérée comme une), la collecte des exigences est une étape cruciale, qu'elle soit itérative ou initiale.

Certaines de ces exigences sont définies par la politique de l'entreprise. Et ceux-ci établissent les règles de base:

  • L'équipe devra les respecter comme pour toute autre exigence. La contestation de la politique est alors tout simplement en dehors de la portée du projet et doit être traitée séparément.
  • Le travail de l'EA est de faire respecter ces exigences et non d'imposer leur fantaisie personnelle. Ils n'aiment pas X alors c'est leur opinion personnelle. Ni plus ni moins. Traitez-le comme toute autre opinion. Cependant, si l'EA peut montrer que l'utilisation de X viole une exigence existante, alors ils ont tout à fait le droit d'interdire l'utilisation de X et s'ils connaissent une alternative viable et que l'équipe ne le sait pas, alors c'est leur droit de la faire respecter.

Mais de toute façon, une exigence est satisfaite ou non. Si cette détermination est difficile à faire, alors l'exigence fait défaut et vous devez la réitérer pour devenir vraiment testable (dans un sens plus large). Vous devez gérer cela comme toute réitération d'exigence.

back2dos
la source
Ils font clairement plus que l'assurance qualité. Ils prennent des décisions sur l'utilisation des outils.
Erik Reppen
@ErikReppen: J'étais un peu flou. Je voulais dire que l'AQ est ce qu'ils sont censés faire.
back2dos
@ back2dos: Je pense que vous devez changer le contrôle qualité pour la normalisation. Je sais ce que vous dites, mais QA est une équipe complètement différente et prête à confusion.
gbjbaanb
2

Votre architecte ne doit pas annuler les décisions prises par vos équipes agiles. Votre architecte doit les inclure dans les exigences / histoires transmises aux équipes. Ils doivent tenir les équipes à jour lorsque le paysage du projet change et que de nouvelles exigences d'interopérabilité sont introduites.

Les architectes qui donnent des ordres et examinent les décisions techniques sont un défaut culturel. Ils se considèrent comme le «patron» plutôt que de simplement maintenir un objectif / vision partagé et de garder des équipes distinctes sur la même page. Les méthodologies agiles sont basées sur la communication et le contact. Lorsque vos architectes ne s'impliquent qu'après la prise de décisions, ils échouent à l'agilité.

Sean McSomething
la source
"Lorsque vos architectes ne s'impliquent qu'après la prise de décisions, ils échouent à l'agilité." - Si nous inversons cette affirmation: "Lorsque l'équipe n'implique pas les architectes dans la prise de décisions, alors l'équipe échoue à l'agilité." S'il y a des décisions prises par l'équipe qui sont un changement de technologie, des modèles existants, etc ... alors l'équipe doit inclure un architecte pour s'assurer que le produit global reste cohérent.
Metro Smurf du
2

Martin, je pense que vous avez peut-être une idée fausse du fonctionnement d'une équipe auto-organisée dans son environnement.

Vous avez cité le Scrum Guide: "Personne (pas même le Scrum Master) ne dit à l'équipe de développement comment transformer le backlog de produit en incréments de fonctionnalités potentiellement libérables."

Ce n'est pas une licence pour l'équipe Scrum de faire ce qu'elle veut (tant qu'elle livre) sans tenir compte des besoins technologiques et commerciaux de l'entreprise dans son ensemble, et des besoins des autres équipes.

Bien sûr, les parties prenantes peuvent abuser de leur influence. C'est l'un des défis de la collaboration, et ce n'est certainement pas limité à l'EE. Mais la collaboration ne s'arrête pas aux limites de l'équipe.

Bob Lieberman
la source
0

Waterfall ou Scrum (cela ressemble à mélanger deux, ce qui ne fonctionnera pas), cela me semble être une couche de gestion assez inutile en premier lieu. Les gardiens des décisions technologiques devraient être des développeurs principaux, le directeur général du développement dont le travail devrait être d'empêcher les préférences des développeurs de transformer votre application en une hydre de choix technologiques, et quel que soit le budget de payer la facture potentielle.

Rien ne continue de m'abasourdir comme des non-développeurs ayant réellement le culot de prendre des décisions technologiques sans même consulter les personnes réelles qui doivent subir les conséquences de ces décisions.

Erik Reppen
la source
Cela ressemble plus à une diatribe qu'à une réponse.
Bryan Oakley
Quelqu'un doit le faire.
Erik Reppen