Jean Albaladejo

Algorithmie

|  Ma défition

L’algorithme est le fait de réaliser un traitement particulier de données afin de répondre à un besoin final. Pour cela, nous créons des algorithmes à partir de code dans un langage de programmation donné. Un algorithme ne doit pas dépendre du langage de programmation utilisé.

En entreprise, les développeurs créent des algorithmes pour développer des logiciels. Le CNRS a publié un article sur son site cnrs.fr ou ils affirment que la définition d’algorithme souvent donnée peut paraître dans certains cas trop vague. Ils proposent de représenter un algorithme par une succession structurée d’étapes et de transformation basé sur un graphe mathématiques.

|  Mes éléments de preuve

Nous allons détailler deux anecdotes ou j’ai eu l’occasion de mettre en œuvre cette compétence lors de mon projet “Standardisation d’un Flow” réalisé en entreprise de 2024 à 2026.

Tout d’abord, j’ai dû mettre en place de nombreux scripts qui répondaient tous à des besoins différents. Par exemple, le premier script que j’ai créé était un algorithme qui faisait une extraction de données à partir d’une base de données pour ensuite créer une succession de blocs dans un fichier .json. Des filtres et des conversions de format de données avaient été mis en place pour répondre au besoin. L’objectif était de créer un fichier .json qui constituait un historique complet de la vie d’un produit. Ce script a été rédigé en Perl et j’ai dû utiliser des librairies internes, par exemple pour se connecter à la base de données. Ce travail m’a demandé de la réflexion et de la méthodologie pour mettre en place un algorithme cohérent et facilement compréhensible par les autres.

Ensuite, j’ai dû mettre en place un algorithme au sein du pipeline de déploiement Jenkins à l’étape “JSON Modification”. En effet, j’ai créé un algorithme qui permet l’arrêt du pipeline et une interaction avec les utilisateurs dans l’interface Jenkins. Premièrement, une box affiche le fichier .json actuel à potentiellement modifier. Ensuite, les utilisateurs ont le choix de le modifier directement dans l’interface ou de sélectionner un chemin de fichier temporaire pour le modifier dans leur espace de travail. Dans le cas du choix de modification dans l’interface, les utilisateurs doivent valider une fois les modifications appliquées. L’algorithme lance alors successivement de nombreux autres scripts de traitements puis affiche une prévisualisation du résultat final. Les utilisateurs peuvent valider et déclencher la suite du pipeline Jenkins ou le choix de remodifier le fichier .json pour refaire le processus jusqu’à un résultat satisfaisant. Dans le cas du choix de modifier via un chemin de fichier temporaire, les utilisateurs ont la possibilité de valider dans Jenkins lorsque toutes les modifications sont appliquées. La suite du processus reste ensuite la même que dans le cas précédent.

Cet algorithme a été rédigé dans le langage de programmation Groovy. Les utilisateurs ont apprécié la mise en place de cet algorithme qui a été essayé d’être conçu de manière intuitif et non contraignant.

|  Mon autocritique

Mettant en application depuis 3-4 années cette compétence à travers des projets scolaires et professionnels, je pense avoir un niveau “Confirmé”. Je considère que cette compétence est au cœur du métier de développeur et on l’utilise pour mettre en application de nombreuses autres compétences techniques.

J’ai appris cette compétence de façon progressive tout au long de mon parcours. Je me rends compte parfois en évoluant dans cette compétence que mes premiers algorithmes pouvaient manquer de logique ou encore d’optimisation. De réaliser mes 5 années en alternance dans la même équipe m’a permis de maintenir mon propre code et d’avoir l’opportunité d’apporter des améliorations au fil du temps. Je pense que pour réaliser un bon algorithme il faut essayer d’avoir une vision fonctionnelle globale du besoin avant de commencer à coder.

|  Mon évolution dans cette compétence

Je souhaiterai continuer à progresser dans cette compétence qui me serait très utile dans le domaine du développement.

Pour cela, je compte m’autoformer en lisant le livre “The Algorithm Design Manual” de Steven S. Skiena qui me permettrait aussi d’apprendre de nouveaux concepts.