Je ne suis pas entièrement d'accord avec la réponse de maple_shaft, mais il n'y avait pas assez de place dans le commentaire pour dire tout mon morceau! ;-)
Je suis d'accord que chaque développeur peut et doit être un architecte, mais cela ne signifie pas que chaque développeur doit être responsable de l'architecture d'un produit ou d'un système complet. De plus, je ne pense pas que vous puissiez peindre chaque équipe architecturale avec le même pinceau large, et une fois cela fait, les équipes architecturales appropriées peuvent apporter une grande valeur au processus global de développement de produits. L'idée fausse est que les architectes doivent dicter tous les aspects de la conception du système. Ils devraient plutôt se concentrer sur la conception de niveau supérieur et laisser les détails de la mise en œuvre à leurs équipes de développement. Cela ne veut pas dire cependant que les développeurs ne devraient pas être impliqués dans le processus de planification et de conception dès le départ.
Plus un produit est grand et modulaire et finalement plus complexe, plus vous trouverez probablement différentes parties du produit gérées par différentes équipes de développement. Ces équipes n'ont pas besoin de comprendre le système dans son ensemble, à condition d'avoir une compréhension complète des parties du système dont elles sont responsables. Souvent, ces équipes supplémentaires sont engagées en tant que sous-traitants dans le but spécifique de développer un module dans un domaine technologique particulier dans lequel les architectes ou d'autres équipes peuvent ne pas avoir d'expertise. Mes talents particuliers résident dans le développement d'API, et je n'ai pas encore vu une API bien factorisée qui a été développée entièrement de manière organique sans être un gâchis complet en termes de convivialité, ou qui n'exigeait pas que quelqu'un se démarque comme étant la personne qui avait assuré qu'il y avait un niveau d'uniformité entre les différents aspects de l'API. Je peux continuer à énumérer de nombreux exemples et raisons, mais je ne pense pas que ce genre de situations soit la tour d'ivoire BS que beaucoup pourraient penser qu'elles sont. Malheureusement, il existe de nombreux endroits, en particulier dans les secteurs de la défense, du médical et des finances où la paranoïa des entreprises se traduit par un développement de produits mal spécifié et encore plus mal géré du type qui, j'en suis sûr, était le plus préoccupé par maple_shaft. Ce sont des choses qui, je crois, donnent aux architectes une mauvaise réputation mal méritée (en général). Malheureusement, il existe de nombreux endroits, en particulier dans les secteurs de la défense, du médical et des finances où la paranoïa des entreprises se traduit par un développement de produits mal spécifié et encore plus mal géré du type qui, j'en suis sûr, était le plus préoccupé par maple_shaft. Ce sont des choses qui, je crois, donnent aux architectes une mauvaise réputation mal méritée (en général). Malheureusement, il existe de nombreux endroits, en particulier dans les secteurs de la défense, du médical et des finances où la paranoïa des entreprises se traduit par un développement de produits mal spécifié et encore plus mal géré du type qui, j'en suis sûr, était le plus préoccupé par maple_shaft. Ce sont des choses qui, je crois, donnent aux architectes une mauvaise réputation mal méritée (en général).
Alors, où est le terrain d'entente que le PO recherchait? La réponse est tout à fait d'ouvrir des canaux de communication. Les architectes doivent remettre des spécifications qui décrivent leurs conceptions avec suffisamment de détails afin de s'assurer que les équipes de développement comprendront où se trouvent les limites. Histoires et scénarios de fonctionnalités au sens large, où tout est considéré comme une boîte noire. Les architectes doivent ensuite s'assurer que les équipes ont accès au temps de l'architecte pour confirmer toutes les hypothèses et obtenir des réponses aux questions sur les spécifications qui semblent trop larges ou peu claires. Après cela, il s'agit vraiment de s'assurer que les équipes individuelles sont informées de ce sur quoi les autres équipes travaillent et qu'elles savent avec qui communiquer avec les autres équipes pour s'assurer que chaque partie du système jouera bien avec les autres parties. Ces équipes se rencontrent directement. Une fois que le système a été conçu au niveau le plus large, les architectes ne devraient être que les personnes vers lesquelles les équipes se tournent lorsqu'elles ont besoin d'un bilan de santé et pour s'assurer que la «vision» du produit est maintenue. Ils devraient également prendre en compte tout processus d'intégration requis et fournir une «couverture aérienne» aux équipes de développement des gestionnaires, des clients et de toutes les autres parties prenantes, tout en veillant à ce que ces différentes personnes puissent toutes se réunir pour s'entraîner entre leur expliquer comment les choses devraient fonctionner.
Les architectes à mon humble avis devraient avant tout être des facilitateurs et des communicateurs, et les concepteurs ensuite. Quant à quel niveau de spécification? Je pense que les meilleurs architectes sont ceux qui interrogent leurs équipes sur le niveau de détail souhaité par une équipe et trouvent entre eux un équilibre qui fonctionne. Différentes équipes peuvent avoir des exigences différentes en termes de quantité de documentation ou de directives requises. Les équipes seniors peuvent trouver un schéma grossièrement dessiné et une discussion rapide peut être suffisante pour commencer, tandis que les équipes remplies de développeurs relativement juniors peuvent avoir besoin d'un peu plus pour les faire avancer. Par-dessus tout, l'architecte doit encourager les développeurs à exercer leurs propres talents de conception afin d'obtenir le meilleur résultat final de chaque équipe.