web-dev-qa-db-fra.com

Dans un environnement agile, responsable de l'architecture logicielle

Dans une équipe agile, responsable de la fabrication de décisions d'architecture et de conception de haut niveau qui affectent l'ensemble du système, pas seulement le travail effectué dans le sprint actuel?

Peut-être propriétaire du produit, Scrum Master, l'équipe Scrum ou quelqu'un d'autre?

enter image description here

19
DWD

"L'architecture logicielle est effectuée par toute l'équipe. Cette pratique ne supprime pas la nécessité d'un architecte logiciel, cela signifie simplement que l'architecte contribue à la discussion avec une perspective plus large et probablement plus expérimentée, néanmoins tous les membres de l'équipe contribuent vers l'architecture du logiciel. "

24
Alexander Hunt

Les architectes, bien sûr, mais peut-être pas les types traditionnels d'architectes.

Je ne veux pas dire le type d'architecte du chirurgien principal qui fait toute la pensée et laisse ensuite les singes pour faire tout le taper. Je veux dire un programmeur dirige expérimenté qui comprend les compromis de coûts/avantages de décisions difficiles à inverser et de conseiller les équipes sur quoi faire.

Les architectes efficaces sont difficiles à trouver, mais cela peut être une position fantastique, et vous avez donc probablement au moins un programmeur expérimenté et réfléchi qui pourrait bien le faire. Une telle personne doit

  • Faire de bonnes décisions d'architecture, bien sûr, mais aussi
  • Savoir comment donner des conseils efficacement, de sorte que d'autres se sentent à l'aise de le prendre, et aussi
  • Déléguer lentement les décisions d'architecture aux équipes

Ce dernier point fait partie de beaucoup de gens. Quand des agières bien significtaires disent que "l'équipe possède l'architecture", ils ont ce "droit", mais je trouve que le conseil n'a presque pas complètement de sens dans son application. Si vous avez confiance en équipes pour assumer la responsabilité de leur propre architecture, , vous ne poserez pas la question en premier lieu, désormais-tu ?! i Supposons donc que vous posez la question parce qu'il y a une inquiétude soit que

  • Personne ne prendra la responsabilité et nous aurons une mauvaise architecture, ou
  • Les mauvaises personnes vont assumer la responsabilité et nous aurons une architecture pauvre, ou
  • Quiconque prend la responsabilité deviendra un bouc émissaire et vous espérez éviter cela

Si vous avez besoin Quelqu'un Pour assumer la responsabilité, alors donnez-le à quiconque veut l'accepter. Sérieusement. Cette personne au moins se soucie. Donnez cette personne les ressources dont ils ont besoin pour faire le travail et les aider quand ils en ont besoin. Cela n'a probablement pas d'importance à quel point la personne est compétente, car s'ils se soucient, ils essaieront d'apprendre ce dont ils ont besoin d'apprendre. Naturellement, Une telle personne a besoin d'un soutien sous la forme de bons livres à lire et à une communauté de pairs et de mentors qu'ils peuvent demander de l'aide et des conseils.

Si vous craignez que la mauvaise personne soit à propos de la responsabilité, j'espère que vous savez qui "la bonne personne" est et vous luttera pour les installer comme architecte. Un livre comme la nouvelle vente stratégique vous aidera à apprendre les techniques de vente pour que cela se produise.

Si vous avez juste besoin d'un bouc émissaire, coupez-vous tranquillement les autres pour donner la responsabilité de la carrière de Whomever que vous aimeriez le plus détruire ou altérer. Au moins soyez honnête à ce sujet.

Revenir à un travail d'architecte efficace, ils peuvent penser à leur travail de poste de gestion, plutôt que de simplement une position décisionnelle. S'ils ne déléguent pas au moins les décisions les plus courantes des équipes, ils deviendront un goulot d'étranglement et ralentir l'ensemble de l'organisation . Ajout d'autres architectes au sommet ne font pas que cela va plus vite. Cultiver de meilleures décisions d'architecture de la masse Le Commission de la délégation Technique aidera votre architecte à devenir plus à l'aise avec le temps déléguer de plus en plus de décisions envers les équipes que ces équipes gagnent la confiance en montrant la compétence.

Je pense à un grand architecte comme quelqu'un qui m'aide à comprendre comment concevoir mes systèmes mieux, qui me conseillera patiemment lorsque je le demande, et qui m'empêchera parfois de faire une très mauvaise décision. Un tel architecte agit comme un leader du vrai sens du mot: une personne que d'autres suivent volontairement .

Je sais que c'était beaucoup.

Les références

Miller, la nouvelle vente stratégique . Ce livre comprend un modèle pour comprendre pourquoi vous avez échoué à fermer une vente spécifique. Je trouve cela inestimable pour comprendre pourquoi les collègues ne feront pas la chose bien merveilleuse que je suggère.

Weinberg, Devenir un leader technique . Ce livre m'a aidé à apprendre à faire la partie non architecte du travail de l'architecte effectif.

Appelo, Conseils de délégation et Délégation poker . Ne sous-estimez pas à quel point la délégation est une délégation dure et combien nous sucons-nous. Apprendre le faire plus efficacement et plus confortablement.

19
J. B. Rainsberger

Les meilleures architectures , exigences et conceptions émergent d'équipes auto-organisées

- Manifesto agile

Donc, l'équipe s'auto-organise pour faire des décisions architecturales de la manière dont il voit l'ajustement. Il n'y a pas de règle difficile et rapide, cela peut aller du consensus à un "conseil" des membres les plus âgés de la plupart des membres supérieurs, de désigner un membre particulier en tant qu'autorité de l'architecture, de laisser l'architecte choisir s'il y a un membre d'un tel titre. .

10
guillaume31

Je pense que la réponse à "" qui est responsable de la prise de décisions d'architecture et de conception de haut niveau? "Dépend de la taille et du nombre d'équipes.

Pour une ou deux équipes avec 3-7 sur chaque équipe, l'équipe auto-organisée peut faire avec la tête des membres seniors.

Pour 3 équipes ou plus, la complexité accrue conduit à la nécessité d'une équipe d'architecture pouvant constater si les différentes sous-équipes font du travail qui s'interfacera avec les autres équipes. Dans mon expérience, le point est atteint quand il y a environ 8 équipes ou à environ 50 personnes.

3
Michael Durrant

Je pense que la plupart des autres réponses pensent à cela de la perspective d'être dans un projet.

Si tel est le seul niveau d'architecture dans une organisation, le résultat sera franchement du chaos. J'ai été témoin de ce chaos de première main, malheureusement, cela se produit.

Selon TOGAF, le département d'architecture d'entreprise effectue des plans de haut niveau et avec l'entreprise de créer et de remplacer l'environnement informatique. L'architecte d'entreprise aura des principes architecturaux définis et les a amenés à être signés aux plus hauts niveaux de l'organisation et contribuera à créer l'architecture et les exigences de haut niveau pour chaque projet. Chaque projet est initié pour fournir un bloc de construction architecturale dans cette architecture de haut niveau.

Ainsi, au niveau du projet, l'architecte de la solution créera l'architecture de projet (éventuellement itérative) et obtiendra la signature de l'architecte d'entreprise.

Maintenant, pour se concentrer sur un projet agile. Un projet agile a des exigences. Ils ne sont pas sous la forme d'un "document d'exigences" massif mais sont plutôt épiques et histoires. Ces épopées nécessitent encore une planification. Vous n'envoyez pas une équipe de développeurs sur quelques sprints dans l'inconnu. Vous savez à un niveau élevé ce que le système doit faire, quels autres systèmes il doit interagir avec et quels matériels/systèmes d'exploitation/contraintes de langue de l'organisation ont et ces guides et contraintes les choix architecturaux ouverts à l'architecte de la solution. Par exemple, si vous êtes déterminé à Server .NET et SQL Server, vous devrez faire une affaire extrêmement afin d'implémenter un site de commerce électronique basé sur Magento à l'aide de PHP = et MySQL en raison des coûts liés à la prise en charge de deux DBS, de deux langues, de deux serveurs Web, etc. Sinon, un projet pourrait choisir d'utiliser une bibliothèque complètement différente ou un aspect et une impact différent, ce qui pourrait avoir des conséquences sur tous les autres projets en vol. . Il est essentiel d'avoir la supervision d'un architecte d'entreprise pour empêcher ce type de "dette architecturale" de se produire.

1
mcottle

Il existe de superbes ressources à partir de l'équipe Cadre Agile Agile (Safe) sur leur site.

Cela vous aide essentiellement à élaborer agile à travers votre organisation, en passant au-dessus d'une seule version et en planification de portefeuille et de programme. Leur documentation montre des suggestions sur la manière d'impliquer vos architectes d'entreprise et de votre système dans le processus pour introduire des épopées architecturales dans le train de sortie.

Modifier la clarté Pour résoudre la question plus directement:

Dans un environnement agile mis à l'échelle, il existe plusieurs niveaux de propriété sur l'architecture. L'équipe de mise en œuvre agile possédera l'architecture émergente de niveau de bas niveau en refactorisant au besoin pour poursuivre leur mise en œuvre de leurs arriérés. Les décisions architecturales de plus haut niveau (systèmes d'exploitation soutenus, navigateurs, plates-formes, bibliothèques) sont sous la responsabilité de votre système et de vos architectes d'entreprise. Ils apporteront les affaires de travail lorsque ces changements doivent avoir lieu et recommanderont pour ces modifications architecturales être ajoutées au train de publication pour les équipes de mise en œuvre.

Ainsi, en ce qui concerne les décisions d'architecture de haut niveau qui vont au-delà du sprint, vous aurez généralement ces produits à un niveau supérieur à l'équipe. Ces professionnels ont traditionnellement un rôle "architecte" au sein de l'entreprise déjà.

1
Jay S

Je pense que la plupart des réponses soulignent déjà que l'équipe et non une personne ne devrait prendre ces décisions.

Ce qu'ils ne touchent pas, c'est un autre principe agile:

Simplicité - L'art de maximiser la quantité de travail non effectué - est essentiel.

En pensant à des architectures de haut niveau et des décisions de conception ne sont souvent pas prises avec la simplicité à l'esprit, susceptibles de perdre beaucoup d'efforts et d'ajouter une complexité inutile qui pourrait rendre les choses plus difficiles à étendre.

Pensez "jardiner" sur l'architecture "- créer une culture de la vie vivante et de la conception croissante

Au cours de votre itération actuelle, vous devez faire des décisions d'architecture et de conception pour vos besoins actuels. Au lieu de regarder l'avenir à un avenir qui pourrait ne jamais devenir, concentrez-vous simplement sur ce dont vous avez besoin maintenant. Probablement (( [~ # ~] yagni [~ # ~] une architecture bien pensée maintenant, laissez l'équipe le gérer petit à petit.

Autres lectures:

0
Niels van Reijmersdal

Dépend de la conception organisationnelle de l'organisation et si le produit est dans un portefeuille. Des organisations plus grandes et axées sur le rôle peuvent nommer des architectes de haut niveau pour diriger ce type d'activités.

En règle générale, un architecte principal facilitera et guidera les décisions de conception car elles ne concernent pas seulement un arriéré de produit, ils peuvent affecter plusieurs produits dans un portefeuille de produits.

Les sociétés agiles plus petites peuvent s'appuyer sur les développeurs experts du système pour diriger l'équipe de développement pour aligner sur la conception architecturale.

En fin de compte, les décisions architecturales doivent être convenues par l'équipe de livraison qui fonctionne sur le produit. Les architectes expérimentés et les prospects techniques seront plus concentrés sur la facilitation de la discussion autour de ce que la conception devrait ressembler, plutôt que de dicter la conception.

0
WBW