Ma définition
En développement, l’algorithmie est le procédé visant à mettre en relation différents éléments de programmation (des fonctions, des variables, des constantes, des modules, etc.) de manière logique pour répondre à un besoin final de manière cohérente.
L’algorithme est donc un procédé, un concept, une méthode de réflexion. Le besoin final (un script, une application, une API ou un site web) sera réalisé grâce à la mise en œuvre d’un algorithme dans un langage de programmation donné.
En entreprise, l’algorithmie a une place importante. Cette méthode de réflexion permet le développement de programmes informatiques cohérents, préparés, maintenables et évolutifs. Dans un contexte professionnel, réfléchir avant d’agir est primordial. C’est encore plus important pour la sécurité et l’évolutivité des programmes réalisés. La démarche algorithmique est similaire dans n’importe quelle entreprise, mais elle peut être mise en œuvre dans différents langages de programmation selon les différents contextes techniques rencontrés. Bien qu’en informatique un besoin peut-être résolu de différentes manières, si un algorithme est respecté, peu importe le langage choisi, le résultat attendu sera le même.
L’article du site “hotwireglobal.fr” intitulé “L’intelligence artificielle nous empêche-t-elle de réfléchir ?”, a pour objectif de déterminer si l’intelligence artificielle altère la capacité à réfléchir de ses utilisateurs. Cet article évoque le fait qu’un algorithme est incapable de réfléchir, d’avoir une opinion ou de raisonner comme un humain. Nous avons récemment vécu une révolution en matière d’intelligence artificielle accessible au grand public et cela engendre beaucoup d’inquiétudes. Il me paraît important de rappeler qu’un algorithme informatique ne pourra jamais dépasser l’homme en matière de réflexion, car un ordinateur ne peut pas raisonner.
Mes éléments de preuve
J’ai débuté l’algorithmie dès l’âge de treize ans en réalisant des projets avec Scratch et RobotProg. J’ai par la suite appris à développer et donc, à réfléchir à différents algorithmes pour répondre à divers besoins.
Deux réalisations me viennent à l’esprit en rédigeant cette compétence. La première est en lien avec la réalisation Projet CMDB effectuée dans le cadre d’un stage chez SEA TPI à La Ciotat pendant mon année de licence professionnelle ASR à l’université de Toulon. La seconde s’est déroulée durant la réalisation “DevOps & RUN MCO” effectuée pendant mon alternance de 2 ans en master Expert des systèmes d’information chez ITRUST.
Durant le projet CMDB, j’ai été chargé de réaliser une expression de besoin pour le service d’industrialisation de SEA TPI. Ce document devait contenir tous les algorithmes permettant au service industrialisation de développer l’ensemble des scripts permettant l’automatisation de la cohérence des machines virtuelles dans l’entreprise. Pour réaliser tous ces algorithmes, j’ai dû interagir avec le chef du projet et l’ensemble des services de l’entreprise pour définir les besoins. J’ai pour cela conduit des réunions avec un expert du logiciel EasyVista accueillant la CMDB pour confirmer la faisabilité de l’inventaire de certains éléments (contrats, fournisseurs, hiérarchie entre les CI, etc.). Grâce à tous ces échanges, j’ai pu définir l’ensemble des algorithmes que le service d’industrialisation devait techniquement respecter pour répondre aux besoins. J’ai schématisé chaque algorithme grâce à un schéma fonctionnel. Il fallait que je livre deux lots avant la fin de mon stage et j’ai réussi à respecter le délai imparti.
En tant que DevOps chez ITRUST, j’ai été amené à réaliser différents scripts intégrés au logiciel Reveelium. J’ai choisi de vous parler de cette réalisation, car elle comporte une algorithmie différente de celles que j’ai toujours utilisées. Normalement, un script comporte des fonctions. Ces fonctions sont des blocs de code qui peuvent être appelés une ou plusieurs fois dans un programme. Chez ITRUST, nous utilisons un langage de programmation (dont le nom n’est pas renseigné ici pour des raisons de confidentialité) avec un fonctionnement différent qui emploie ce que l’on appelle des playbooks. Un playbook est en quelque sorte l’image d’un besoin voulu. Nous ne demandons pas à un playbook de créer un dossier sur un serveur, mais nous indiquons que le dossier doit-être présent. Le logiciel exécute lui-même les actions à réaliser sur le serveur pour que le dossier soit créé. Un playbook ne comporte pas de fonction à proprement parler, il a seulement la possibilité d’appeler un rôle en précisant des variables ce qui est un type de développement beaucoup plus complexe. Si nous voulons réaliser une action complexe deux fois, nous devons l’écrire au complet, deux fois. Voyant que le logiciel final ne se comportait pas d’une façon classique, j’ai dû apprendre à adapter ma réflexion algorithmique pour répondre aux différents besoins. J’ai notamment mis en œuvre un script permettant de réaliser la configuration du logiciel Alpha (nom fictif pour préserver la confidentialité). Suite aux contraintes précédemment évoquées, j’ai dû réfléchir à différents algorithmes pour répondre à la nécessité de mettre en conformité la configuration du logiciel Alpha. Mon premier algorithme ne correspondait pas aux attentes de mon responsable technique. Ce script (complexe) étant mon tout premier avec ce changement algorithmique radical, je n’avais pas utilisé toutes les capacités du playbook. Par conséquent, j’ai réalisé un second algorithme qui lui a été validé. Il a été intégré dans Reveelium 11.1. Dans le cadre de mon travail de DevOps, j’ai réalisé de nombreux scripts en Python avec une méthode algorithmique classique. N’étant pas développeur, les scripts que j’ai réalisés concernaient uniquement des tâches d’automatisation. J’ai rempli avec succès les différents objectifs d’automatisation attendus.
Mon autocritique
Grâce à mon parcours, je suis apte à concevoir différents algorithmes. J’ai un niveau confirmé dans le domaine.
En tant que DevOps, j’ai encore beaucoup à apprendre en algorithmie. Je pense notamment aux méthodes algorithmiques des playbooks qui sont réellement différentes de ce que j’ai toujours rencontré dans mon parcours scolaire.
Savoir concevoir des algorithmes fait partie des compétences nécessaires pour être expert des systèmes d’information. Bien que je ne sois pas un développeur, je dois comprendre le fonctionnement des applications et des programmes pour être pleinement capable d’intégrer en production des applications ou bien de réaliser leurs débogages.
J’ai mis du temps à comprendre réellement l’algorithmie employée par le logiciel d’automatisation d’ITRUST, car elle est complexe. J’ai rencontré des difficultés dès qu’il a fallu coder l’automatisation de certaines tâches complexes pour le logiciel Reveelium. C’est grâce à différents projets scolaires et personnels, que j’ai fini par être à l’aise pour concevoir ce type d’algorithmes et ainsi pouvoir développer avec aisance des rôles d’une technicité avancée.
Avec l’expérience que j’ai aujourd’hui, je recommande aux informaticiens qui souhaitent se spécialiser dans le réseau, de persévérer dans l’apprentissage de l’algorithmie pour qu’ils deviennent capables de réaliser de nombreuses tâches réseau de manière automatisée.
Mon évolution dans cette compétence
Dans les prochaines années, je souhaite persévérer dans mon apprentissage de l’algorithmie liée au métier de DevOps. J’ai pu formuler précédemment les difficultés que j’ai rencontrées lors de l’écriture de mes premiers Playbooks dues au fonctionnement algorithmique qui différait de l’usage classique ; c’est pourquoi, je compte réaliser des auto-formations sur le sujet en réalisant différents playbooks avec le logiciel Ansible. Je souhaite lire le livre “Ansible for DevOps: Server and configuration management for humans” écrit par Jeff Geerling afin de mieux comprendre les fonctionnements algorithmiques de ce logiciel.