Quelles sont les compétences requises pour être un bon architecte logiciel ?


Comme l'autre réponse décrit les côtés non techniques des choses, ce post tente de fournir un complément.

Etre architecte n'est qu'une option de ce vers quoi un ingénieur logiciel peut évoluer. Les architectes sont larges. Ce sont des généralistes. Les scientifiques et les algorithmistes vont en profondeur. Ils sont des spécialistes. D'autres encore vont non-techniques.


En travaillant et en interagissant avec plusieurs architectes logiciels au cours de ma carrière, et grâce à mon expérience de conception de systèmes (avec mon expérience limitée), voici ma prise :

  • Un architecte conçoit des systèmes logiciels en fonction des exigences des parties prenantes, des exigences techniques, commerciales et opérationnelles, généralement pour un horizon temporel assez long (par opposition au piratage de quelques centaines de lignes de code pour créer une app en une semaine)

  • Un architecte doit avoir la capacité de penser et de travailler dans différents niveaux d'abstractions (du plus haut niveau aux détails parfois cruciaux), différentes perspectives (code, exécution, déploiement, exploitation) et vues de qualité (évolutivité, fiabilité, sécurité, etc.) du système. Un architecte dispose généralement d'un très bon répertoire de modèles mentaux pour mettre le système dans la tête de quelqu'un's pas simultanément, mais un aspect pertinent à la fois

  • Un architecte peut anticiper les exigences matérielles et logicielles actuelles et futures du système. Pour ce faire, un architecte doit avoir vu et expérimenté de nombreuses choses sur la construction de systèmes, avoir expérimenté différentes approches et modèles et comprendre leurs propriétés et compromis. Des matériaux suffisants sont les ingrédients nécessaires à la sagesse pratique. Trop peu de pâte ne fera pas une bonne pâte à tartiner.

  • Un architecte traite des problèmes d'ingénierie du monde réel, pas des problèmes théoriques, donc les grands scientifiques (résolveurs de problèmes théoriques) ne sont pas nécessairement de grands architectes, et vice versa (il n'est pas nécessaire pour un architecte d'avoir une profondeur rigoureuse dans certains domaines spéciaux, sauf si cela est nécessaire). Ainsi, un architecte doit être ancré dans la réalité.

Les architectes que j'admire satisfont généralement aux caractéristiques ci-dessus.