Mr Jean Auquier, Architecte logiciel
Interview réalisée en mai 2009 |
Quel est l'intitulé exact de votre fonction ?
Je me définis comme "Software Architect" (architecte logiciel) mais il existe parfois d'autres terminologies, par exemple "Solution architect" ou "Project architect".
Pouvez-vous nous décrire votre métier d'architecte logiciel ?
Il est en réalité assez similaire au métier dont il tire son nom, celui d'architecte dans le secteur du bâtiment. Il s'agit donc d'apporter une réponse sous la forme d'un produit logiciel à un besoin exprimé par le client. Le passage de l'un à l'autre (projet) nécessite un travail de compréhension du besoin, de sélection des solutions possibles et même, le plus souvent, de création pour adapter voire carrément construire le produit délivrable.
Quel a été votre parcours scolaire ?
J'ai effectué mes études secondaires dans l'option maths-sciences avant de m'attaquer à des études universitaires d'ingénieur civil en informatique.
Quels types de logiciels avez-vous déjà créés ?
Au début de ma carrière, en milieu bancaire et assurance, le modèle dominant était le client/serveur. Je contribuais à la mise en place de solutions logicielles développées en interne et déployées sur les stations de travail de la banque en connexion avec les systèmes centraux. J'ai ainsi travaillé sur des applications de placement, ensuite d'assurance vie, et finalement sur la plateforme guichet pour les agences. Ensuite, je suis passé au modèle "tree-tier" avec des applications Web, modèle qui reste encore probablement le plus répandu à l'heure actuelle. Dans le secteur pharmaceutique, j'ai travaillé plusieurs années principalement dans le marketing. Actuellement, je m'occupe, entre autres, de la mise en place d'une nouvelle plateforme de validation des factures "tiers payant" pour le compte d'une mutualité, projet de grande importance étalé sur plusieurs années.
Quelles sont les différentes étapes pour créer un logiciel ?
Chaque situation est différente, il faut avant tout savoir s'adapter et ne pas se fier aveuglément à une recette de cuisine. Cependant, des méthodologies et le respect des bonnes pratiques sont indispensables. On considère généralement les grandes étapes suivantes :
- capturer les besoins des utilisateurs ("Requirements") ;
- modéliser fonctionnellement son fonctionnement ("Use-case analysis") ;
- modéliser techniquement sa structure ("Technical design") ;
- implémenter ("Coding") ;
- tester et valider le fonctionnement ("Testing") ;
- déployer et former les utilisateurs ("Transition") ;
- assurer la maintenance ("Maintenance").
Suivant les méthodes, on décompose en plus ou moins d'étapes, avec l'un ou l'autre nom, que l'on réalisera en séquence, en parallèle, en boucles, etc. De nos jours, on considère le plus généralement que ces étapes ne doivent pas se succéder au sens strict mais se recouvrent, au moins partiellement, pour donner plus de souplesse au processus, et permettre au demandeur de mieux interagir avec l'équipe au cours du travail.
Quels types de difficultés rencontrez-vous lorsque vous créez un logiciel ?
Comme dans tous les métiers je suppose, les difficultés ne manquent pas. En gestion de projet, on les qualifiera plutôt de "risques". Quelques exemples :
- une certaine instabilité dans les attentes des utilisateurs, qui changent parfois (souvent?) leurs attentes, les complétant ou les modifiant au cours du temps. Si le projet dure longtemps, bien souvent il ne correspond plus, à la fin, au besoin initial du début. C'est pourquoi on a tendance à raccourcir au maximum la durée des projets pour minimiser ce risque ;
- les technologies avancent à un rythme effréné. Cela crée des risques sur la maîtrise, la formation, le bon usage, l'intégration, les performances, la maintenance, le support ;
- l'environnement change également de plus en plus, que ce soient la législation ou le contexte de l'entreprise (restructuration, fusion, acquisitions) mais aussi le marché et la concurrence. Les applications (qui sont les outils de gestion de l'information) sont souvent les premières impactées par ces changements.
D'autres risques existent également, y compris ceux non spécifiques à notre activité, tels les risques humains, budgétaires, "politiques", contractuels, etc.
Quel est le profil idéal pour exercer votre fonction ? Quelles connaissances techniques faut-il avoir ?
Je pense personnellement qu'un architecte logiciel se définit surtout par l'étendue (la largeur) de ses connaissances et de son expérience, plus que par le niveau d'expertise (la profondeur) dans l'un ou l'autre domaine. Pour plaisanter, je me dis parfois que je suis "spécialiste en généralisme" ou "généraliste en spécialités". Attention, le danger d'un généraliste, c'est parfois d'ignorer la difficulté d'une situation particulière, de nier l'importance des détails, de se couper peu à peu de la réalité concrète, bref de "planer" un peu. Pour éviter de tomber dans ce piège, j'aime assez la formation d'ingénieur que j'ai reçue. Je me sens à la fois hyper spécialisé dans un domaine (dans mon cas historiquement comme développeur) et aussi généraliste dans plusieurs domaines. En ce qui concerne les domaines dont il faut accumuler des connaissances, on peut en énumérer quelques uns : méthodologie de développement, gestion de projet, analyse et modélisation, technique de développement, infrastructure (hardware et software), testing et qualité, bases de données, etc.
Quels sont les points positifs et négatifs de votre profession ?
Comme points positifs, je relèverais :
- les opportunités de travailler avec des gens de profils et spécialités différentes ;
- les contacts humains ;
- les aspects créatifs, peu de routine mais plutôt le sentiment de "construire" quelque chose ;
- l'immersion dans des mondes "métiers" très différents (dans mon cas: banque et assurance, pharmaceutique, sécurité sociale) ;
- le travail à long terme permettant de progresser grâce aux projets et de faire progresser des projets.
Comme points négatifs :
- le stress ;
- la prise de responsabilités dans la solution délivrée qui "pèse" parfois sur les épaules ;
- la fatigue intellectuelle (créativité, nécessité de se tenir à jour dans beaucoup de domaines en même temps).
Suivez-vous encore aujourd'hui des formations de perfectionnement ?
C'est indispensable ! Il faut lire et se tenir informé constamment. Cela doit devenir une activité permanente, un réflexe, une seconde nature. Pour la petite histoire, je suis également enseignant en "Analyse et conduite de projets" en troisième année du bachelier en informatique de gestion et je m'occupe également des projets de fin d'études.
Quels conseils donneriez-vous à une personne qui souhaiterait se lancer dans ce métier ?
De progresser dans son domaine premièrement afin de se doter d'un solide bagage et d'accumuler des succès, donc une expérience positive, et de profiter (voire de créer) des opportunités pour apprendre des autres disciplines afin d'acquérir une vue globale du génie logiciel.
Quelle filière de formation vous semble plus indiquée pour exercer ce métier ?
J'ai déjà évoqué mes études mais ce n'est pas la seule porte d'entrée, même si j'ai la faiblesse de penser que c'est la plus indiquée. Toute formation qui délivre une bonne assise technique et intelectuelle sera un bon point de départ également. Et même si on ne fait finalement que peu de technique pure au quotidien, la technique reste notre métier de base, notre matière première. C'est pourquoi je pense qu'une formation technique est idéale, le reste (relations humaines, communication, langues, aspects budgétaires, planification, connaissances business., etc) viendra probablement facilement après si ça ne fait pas partie du cursus de base. Pour les autres types de formations par contre, apprendre la technique par après en cours de carrière reste possible mais est plus difficile et donc plus exceptionnel.