Question

Il y a eu beaucoup de questions avec de bonnes réponses sur le rôle d'un architecte logiciel (SA) sur StackOverflow et programmation SE . Je suis en train de poser une question un peu plus concentré que ceux-ci. La définition même d'une SA est large pour le bien de cette question Définissons une SA comme suit:

Un architecte logiciel guide le conception globale d'un projet, obtient impliqué dans les efforts de codage, conduites revues de code, et sélectionne les technologies à utiliser.

En d'autres termes, je ne parle pas de repos et de gestion sont acquises à la crête (encore des mots qui riment élidés) types de SAs. Si je devais poursuivre tout type de poste SA Je ne veux pas être loin de codage. Je pourrais sacrifier un peu de temps pour l'interface avec les clients et les analystes d'affaires, etc., mais je suis toujours techniquement en jeu et je ne suis pas au courant de tout ce qui se passe à travers des réunions.

Avec ces points à l'esprit, que doit SA apporter à la table? Au cas où ils viennent avec une mentalité de « faire la loi » (pour ainsi dire) et de faire respecter l'utilisation de certains outils pour adapter « leur chemin », à savoir, les lignes directrices de codage, le contrôle des sources, schémas, documentation UML, etc.? Ou doivent-ils indiquer la direction initiale et stratégie alors recul et saut au besoin pour corriger la direction du navire?

Selon l'organisation cela pourrait ne pas fonctionner. Une SA qui repose sur TFS pour appliquer tout peut lutter pour mettre en œuvre leur plan à un employeur qui utilise uniquement StarTeam. De même, une SA doit être flexible en fonction de l'étape du projet. Si c'est un nouveau projet, ils ont plus de choix, alors qu'ils pourraient avoir moins pour les projets existants.

Voici quelques histoires SA que j'ai vécu comme un moyen de partager une certaine expérience dans l'espoir que les réponses à mes questions pourraient jeter aussi un peu de lumière sur ces questions:

  • J'ai travaillé avec un SA qui a examiné le code littéralement chaque ligne de code de l'équipe. La SA ferait cela pour non seulement notre projet, mais d'autres projets dans l'organisation (imaginez le temps consacré à ce sujet). Au début, il était utile de faire respecter certaines normes, mais plus tard il est devenu paralysant. FxCop était de savoir comment la SA trouverait des questions. Ne vous méprenez pas, ce fut une bonne façon d'enseigner aux développeurs juniors et les forcer à penser aux conséquences de leur approche choisie, mais pour les développeurs supérieurs, il a été considéré comme quelque peu draconienne.

  • Un particulier SA était contre l'utilisation d'une certaine bibliothèque, affirmant qu'il était lent. Cela nous a obligé à écrire des tonnes de code pour réaliser des choses différemment tandis que l'autre bibliothèque aurait permis d'économiser beaucoup de temps. Avance rapide au dernier mois du projet et les clients se plaignaient de la performance. La seule solution était de changer certaines fonctionnalités à utiliser l'approche ne tient pas à l'origine en dépit des alertes précoces des devs. En ce moment-là beaucoup de code a été jeté et non réutilisable, conduisant à des heures supplémentaires et le stress. Malheureusement, les estimations utilisées pour le projet reposaient sur l'ancienne approche que mon projet était interdit d'utiliser de sorte qu'il n'a pas été un indicateur approprié pour l'estimation. J'entendais le dire PM « nous avons fait cela avant », alors qu'en réalité ils n'avaient pas depuis que nous utilisions une nouvelle bibliothèque et les développeurs qui travaillent sur ce ne sont pas les mêmes devs utilisés sur l'ancien projet.

  • La SA qui ferait respecter l'utilisation de DTO, DoS, couches de services BOs et ainsi de suite pour tous les projets. Les nouveaux développeurs ont dû apprendre cette architecture et les directives d'utilisation SA inflexiblement appliquées. Des exceptions aux règles d'utilisation ont été faites quand il était tout à fait difficile de suivre les directives. La SA a été fondée sur leur approche. Classes de DTO et toutes les opérations CLMS ont été générés via CodeSmith et des schémas de base de données sont une autre balle similaire de cire. Cependant, ayantutilisé cette configuration partout, la SA n'a pas été ouvert aux nouvelles technologies telles que LINQ to SQL ou Entity Framework.

Je ne suis pas d'utiliser ce poste comme une plate-forme pour la ventilation. Il y avait des aspects positifs et négatifs à mes expériences avec les histoires SA mentionnées ci-dessus. Mes questions se résument à:

  1. Que doit faire un SA apporter à la table?
  2. Comment peuvent-ils trouver un équilibre dans leur prise de décision?
  3. Si l'une approche d'un emploi SA (tel que défini précédemment) avec la mentalité qu'ils doivent respecter certaines règles de base?
  4. Tout le reste à considérer?

Merci! Je suis sûr que ces tâches sont facilement étendu aux personnes qui sont devs supérieurs ou responsables techniques, donc ne hésitez pas à répondre à cette capacité ainsi.

Était-ce utile?

La solution

A Systems Architect doit:

  1. Spécifier l'architecture de haut niveau
  2. Participer aux revues de code
  3. Approuver les technologies utilisées
  4. Aider les développeurs dans leur effort de codage
  5. Maintenir et surveiller le calendrier de développement
  6. Produire des artefacts SA, tels que les diagrammes UML, des diagrammes de Gantt et autres.

SA doit de savoir comment le code, et devrait participer à une partie des travaux de codage, se mouiller les mains, pour ainsi dire. Cela leur permet de rester en contact avec la Gestalt de l'effort de développement. Comme l'oncle Bob Martin a dit , l'architecte doit faire partie de lui-même de codage, de sorte qu'il peut voir la douleur qu'il infligeait autres ses modèles.

La SA devrait avoir le dernier mot sur toute la conception, la technologie et les décisions de style de codage. Mais, comme tous les gestionnaires, le travail de la SA est de dégager la voie pour son peuple afin qu'ils puissent être productifs. Cela signifie que, pour la plupart, que les développeurs se décider, à leur niveau, comment les problèmes doivent être résolus. Cela signifie que la SA conserve les patrons-cheveux pointus sur des cabines des développeurs. Et cela signifie que les emplacements SA pour aider, au besoin.

Comme tous les êtres humains, la boîte de SA et faire faire des erreurs. Les bons apprendre de ces erreurs et deviennent mieux. SA de

Autres conseils

1 Que doit faire un SA apporter à la table?

  • Une peau épaisse
  • Bonnes aptitudes de négociation
  • Une bonne compréhension des différents niveaux de logiciels (de la bonté whizzy AJAX à faible niveau d'E / S réseau). Vous ne soyez pas nécessairement une main sur l'expert, mais vous allez avoir à prendre des décisions importantes au sujet de ce logiciel doit être exécuté au cours de laquelle couche (s).
  • La volonté de se salir les mains dans le code, le livre blanc ne conçoit simplement pas le couper.
  • Encouragement de l'artisanat du logiciel - être la pom-pom girl pour faire les choses de la bonne manière chaque fois que possible et la meilleure façon étant donné les limites dans d'autres cas. Donc, des choses comme le contrôle des sources, TDD, construire et CI, codage dojos, revues de code, un bon système de suivi des problèmes, etc

2 Comment peuvent-ils trouver un équilibre dans leur prise de décision?

  • Une grande partie de cela dépend de votre équipe (s) et comment ils sont capables.
  • Votre environnement (vous pourriez être obligé d'utiliser un par exemple le produit du fournisseur particulier)
  • Dans l'ensemble, il est préférable de ne pas être un architecte de la tour d'ivoire, être sur les mains, faire partie de l'équipe -. Les gens comprendront vos décisions de cette façon

3 Si une approche d'un emploi SA (tel que défini précédemment) avec la mentalité qu'ils doivent respecter certaines règles de base?

  • Oui, des choses comme le contrôle de version et un système de construction sont sacrément importants et les développeurs ont besoin d'utiliser ces derniers. Cependant aways de le mieux leur faire partie de la solution.

Il y a beaucoup plus, je pense qu'il va y avoir des réponses vraiment bons pour venir à travers celui-ci.

Je ne l'ai jamais courir dans un architecte qui était utile, surtout parce qu'ils ne sont pas pratiques.

Pour moi, les plus grands problèmes que j'ai vu sont:

  • adhésion aveugle au processus au nom du processus
  • biais aveugle à la technologie avant de connaître le problème
  • la création et l'application des règles sans une bonne justification
  • mentalité rewrite from scratch

Le meilleur « Architectes » J'ai travaillé avec apporté à la table:

  • Les questions qui ont poussé à une meilleure compréhension du problème et les solutions possibles.
  • Options de conception / technologies et de leurs compromis.
  • Effacer et explications rationnelles pour les condamnations et avals des conceptions et technologies.

Le problème pour moi est le meilleur « Architectes » J'ai travaillé avec ne pas « architecte dans leur titre. Ils étaient le plus souvent des ingénieurs logiciels qui reposent sur le problème spécifique et des projets. Ils ont compris que, dans la plupart des entreprises il est pas pratique de réécrire Ils codebase travailler à partir de zéro. prendre la décision de conception ou de fournir des options et leurs raisons ou justifications. Ils tracent comment itérer le code de base à une nouvelle architecture au fil du temps et garder encore tout fonctionnel. Ils donnent des recommandations conservatrices au lieu de recommander tout ce qui est Dejour ou familier. ils communiqueraient une vision cohérente de la façon dont les choses devraient fonctionner et pourquoi, et plus important encore, ils tracerait comment s'y rendre et coût.

1.Quels si une SA apporter à la table?

« si elles entrent avec une mentalité de « faire la loi » ... Ou doivent-ils indiquer la direction initiale et stratégie alors recul et saut au besoin pour corriger la direction du navire? »

Une combinaison des deux, je dirais. Au moment de décider des technologies et des processus, être ouvert aux opinions et suggestions peuvent donner de précieux commentaires / commentaires sur les décisions et vous amener à apprendre des autres. Votre équipe est (je l'espère) à puce; tirer profit de cela. Mais une fois une décision (votre décision) est faite, a été mis à la loi. Identifier ceux qui se plaindra de tout ce qui était pas leur choix, et ceux qui simplement choisir quoi que ce soit et ne se soucient pas -. Puis les ignorer

En ce qui concerne les technologies: le travail avec ce que vous avez, si la société utilise StarTeam alors que ce que vous utilisez. vous mariant à un produit particulier / technologie / processus ne va rien faire pour vous.

2.How peuvent-ils trouver un équilibre dans leur prise de décision?

À l'écoute de l'équipe et de savoir quand ils ont raison et mal est important, et avoir les cojones pour leur dire qu'ils ont tort et bâton à votre décision. Ne pas écouter apportera un manque de respect, comme ballottent autour de vos décisions.

une approche un 3. Au cas où l'emploi SA (tel que défini précédemment) avec la mentalité qu'ils doivent respecter certaines règles de base?

Toujours. Sinon, les détenus finissent par courir l'asile, ouvertement ou non. Décider de ces règles de base cependant, peut être par parler avec l'équipe. Rappelez-vous que toute l'équipe ne peut pas avoir toujours les mêmes membres qu'il a maintenant à faire des concessions pour un petit groupe d'entre eux peut faire obstacle à l'équipe à l'avenir, une fois qu'ils sont partis. Cela inclut la SA.

4.Anything autre à considérer?

  • En ce qui concerne votre deuxième exemple: Il semble que l'équipe du projet a formé une dépendance couplée étroitement sur un sous-système en interne. Librement façades couplées ne sont pas seulement pour le code tiers. Création d'une abstraction pour ce sous-système aurait pu permettre une transition plus facile d'utiliser cette bibliothèque si la solution interne a échoué. Ceci est une solution logique pour un architecte logiciel seul, mais être aussi une forme de chef de projet avec les préoccupations d'expression de l'équipe, il aurait été doublement une solution évidente.
  • En ce qui concerne votre troisième exemple: Ce n'est pas une mauvaise idée d'avoir une architecture ou un procédé connu pour la production de logiciels (même si, il est vrai, vous avez dit « tous les projets »). Ceci est coller à ce qui fonctionne. Cela dit, il faut avoir des occasions où de nouvelles techniques peuvent être tentées pour voir si elles apportent une valeur supplémentaire. En interne uniquement des logiciels ou des projets de moindre envergure où ces technologies peuvent être tentées sont des endroits idéaux. Gardez à l'esprit cependant, qu'il incombe également aux développeurs (s) de fournir des recherches et des démonstrations / arguments pour l'adoption de technologies convaincantes. Et SA ne peut attendre de connaître tous les ORM en compétition et ses forces et ses faiblesses par rapport aux autres.
Licencié sous: CC-BY-SA avec attribution
scroll top