Mes compétences
Le BUT Informatique s'articule autour de six compétences. Chacune est détaillée ci-dessous composante par composante (AC), accompagnée de preuves concrètes issues de mes cours, projets et de mon alternance.
Le pourcentage indiqué pour chaque composante correspond à mon auto-évaluation de mon niveau de maîtrise.
Réaliser un développement d'application
Développer — c'est-à-dire concevoir, coder, tester et intégrer — une solution informatique pour un client.
Sur le projet EventSpot, j'ai développé le back-end d'une application qui répond à un besoin concret : aider un organisateur à choisir où et quand monter son événement. J'ai traduit ce besoin en fonctionnalités — recherche par région, type d'événement et période, puis recommandation des meilleures villes et dates. En alternance chez TGI Maritime Software, je pars de la même façon des besoins métier décrits par l'entreprise pour faire évoluer une application de gestion interne.
Le formulaire de recherche traduit directement le besoin : type, lieu, région, mois, durée et nombre de participants.
J'ai implémenté plusieurs algorithmes non triviaux. Le Jeu de la Vie (automate cellulaire) m'a fait manipuler une grille et des règles de voisinage avec une mise à jour synchrone de l'état à chaque génération. Sur le projet Astro, j'ai mis en œuvre des algorithmes de traitement d'image — détection d'étoiles, érosion morphologique, lissage de masque — pour nettoyer des photographies de galaxies.
Jeu de la Vie — automate cellulaire codé en C++, avec gestion du voisinage et des générations.
Réduction d'étoiles — détection, érosion et lissage de masque sur des images astronomiques (Python / PyQt).
La qualité n'est pas une option. En PHP, j'applique les normes PSR-1 / PSR-12 et je documente avec PHPDoc. En ressource Qualité de développement, j'ai mis en place une véritable chaîne d'outils pour garantir un code propre, lisible et maintenable, du formatage automatique jusqu'à l'intégration continue.
- PSR-1 / PSR-12 — normes de codage PHP
- PHPDoc — documentation générée du code
- ESLint / Prettier — analyse et formatage
- Husky — hooks bloquant un commit non conforme
- CI/CD — tests et vérifications automatisés
- Git — versionnage et travail par branches
Chaque projet appelle ses propres outils, et je choisis la techno selon le besoin plutôt que de forcer un seul langage. Une API REST pour un jeu de cartes Pokémon ? Node.js, documentée sous Swagger. Une application mobile de messagerie ? Flutter. Un site web de gestion ? PHP. De la programmation système et des sockets ? Le langage C. Cette polyvalence me permet de prendre la ressource la plus adaptée à chaque contexte.
API Pokémon Cards — endpoints REST (GET / POST / PATCH / DELETE) documentés avec Swagger / OpenAPI.
Application de messagerie — échange de messages, couleur et position GPS, développée en Flutter.
Optimiser des applications
Proposer des applications informatiques optimisées en fonction de critères spécifiques : temps d'exécution, précision, consommation de ressources.
Optimiser commence par bien modéliser le problème. Sur EventSpot, j'ai transformé une question floue — « où et quand organiser un événement ? » — en un modèle calculable : chaque ville et chaque date reçoivent un score, calculé à partir de critères météo croisés avec la région et la période choisies. C'est cette formalisation qui permet ensuite de recommander automatiquement les meilleures options.
Villes recommandées — chaque destination affiche un score calculé à partir des moyennes météo du mois choisi.
En ressource Développement efficace, j'ai travaillé les structures de données usuelles — tableaux, collections, dictionnaires, arbres — et appris à choisir la bonne pour chaque besoin. Le Jeu de la Vie repose ainsi sur une grille (matrice) d'états : c'est cette structure qui conditionne la simplicité du parcours du voisinage et de la mise à jour de chaque cellule à chaque génération.
Jeu de la Vie — la grille de cellules est la structure de données centrale du programme.
Face à un traitement complexe, je décompose le problème en étapes claires plutôt que de tout résoudre d'un bloc. Le pipeline de réduction d'étoiles du projet Astro illustre ce raisonnement : chaque étape a un rôle précis et alimente la suivante.
Repérage des étoiles selon leur taille et un seuil de luminosité.
Génération d'un masque isolant les étoiles à traiter.
Réduction morphologique des étoiles sur le masque.
Adoucissement du masque pour une fusion naturelle.
Comparaison visuelle de l'image d'origine et du résultat.
Une application optimisée ne se décrète pas, elle se mesure. Sur Astro, j'ai exposé les paramètres de traitement sous forme de réglages (taille des étoiles, seuil de détection, érosion, lissage) et je compare en permanence l'image d'origine et le résultat final pour valider visuellement — l'outil affiche le nombre d'étoiles détectées. Sur EventSpot, le classement des villes et des régions matérialise et justifie les recommandations issues du score.
Réglages & comparaison — paramètres ajustables et image « Originale » vs « Finale » pour valider le résultat.
Classement des destinations — les villes sont ordonnées par score, ce qui justifie la recommandation.
Administrer des systèmes informatiques communicants complexes
Installer, configurer, mettre à disposition, maintenir en conditions opérationnelles des infrastructures, des services et des réseaux, et optimiser le système informatique d'une organisation.
La sécurité guide mes choix d'administration. Sur mon homelab auto-hébergé, je n'expose aucun service directement sur Internet : l'accès distant passe par Tailscale, un réseau privé chiffré. Un Pi-hole filtre le trafic DNS (blocage des traceurs et publicités) à l'échelle du réseau. Côté bases de données, j'applique le principe du moindre privilège — un utilisateur dédié par projet, restreint à sa seule base, sans droits globaux.
- Tailscale — accès distant chiffré, zéro port ouvert
- Pi-hole — filtrage DNS à l'échelle du réseau
- Conteneurs Docker — isolation des services
- Moindre privilège — un utilisateur SQL par base
J'organise mes services selon de bonnes pratiques d'architecture. Sur le homelab, chaque service tourne dans son propre conteneur Docker (isolation), ce qui simplifie le déploiement et limite la surface d'attaque. En ressource Réseau, j'ai conçu et configuré des réseaux d'entreprise sous Cisco Packet Tracer (routeurs, switchs, sous-réseaux).
Offrir une bonne qualité de service, c'est aussi comprendre comment les ressources sont partagées. En ressource Système, j'ai étudié l'ordonnancement des processus (FIFO, SJF, tourniquet, priorités) pour minimiser le temps d'attente et de réponse. Cette logique de service se retrouve dans le serveur du Pendu : un processus serveur gère la partie et dialogue avec plusieurs clients via des sockets.
Ordonnancement — comparaison des politiques et calcul des temps moyens d'attente et de réponse.
Pendu en réseau — un serveur en C dialogue avec deux clients (Maître / Devineur) via des sockets.
La continuité d'activité, c'est garantir qu'un service reste disponible même en cas de panne. Lors de la SAÉ Virtualisation, nous avons déployé un Docker Swarm réparti sur plusieurs VM hébergées sur différents serveurs. Lorsqu'une VM est coupée ou qu'un serveur tombe, Swarm relance automatiquement les services concernés sur un autre nœud, sans interruption pour l'utilisateur.
Gérer des données de l'information
Concevoir, gérer, administrer et exploiter les données de l'entreprise, et mettre à disposition toutes les informations nécessaires à un bon pilotage de l'organisation.
Manipuler des données, c'est aussi les protéger. Dans mes applications, les données personnelles (e-mail, identifiants) sont traitées avec précaution : les mots de passe ne sont jamais stockés en clair mais hachés, et l'accès aux données est protégé par authentification. Le modèle d'EventSpot isole clairement les utilisateurs et leurs contributions, dans l'esprit du RGPD (minimisation, finalité).
- Hachage des mots de passe (jamais en clair)
- Authentification requise pour l'accès aux données
- Minimisation — seules les données utiles sont collectées
- Accès restreint par utilisateur et par finalité
Le choix d'une infrastructure de stockage n'est jamais neutre. J'ai manipulé différents types de bases de données et compris leurs usages respectifs, et mon homelab auto-hébergé m'a fait mesurer concrètement les arbitrages entre cloud, serveurs locaux et consommation de ressources.
Données structurées et fortement cohérentes, idéales pour la gestion métier.
Souplesse du schéma et montée en charge, exploré en ressource NoSQL avec Compass.
Arbitrage cloud vs auto-hébergement, coût et empreinte des ressources.
Derrière chaque requête se cache un socle mathématique. Le langage SQL repose sur l'algèbre relationnelle (sélection, projection, jointure) et la théorie des ensembles. La conception d'un schéma s'appuie sur les dépendances fonctionnelles pour aboutir à un modèle normalisé. Et l'exploitation des données passe par l'agrégation statistique — moyennes, comptages — comme les moyennes météo qui alimentent le score d'EventSpot.
- Algèbre relationnelle — sélection, projection, jointure
- Théorie des ensembles — opérations sur les données
- Dépendances fonctionnelles — normalisation du schéma
- Agrégation statistique — moyennes et comptages
Des données fiables passent par une conception rigoureuse et des garde-fous automatiques. On a conçu le modèle relationnel d'EventSpot (entités, relations, cardinalités) pour garantir l'intégrité des données. Surtout, on a mis en place des triggers PL/pgSQL : à chaque insertion d'avis ou d'événement, le trigger crée un log et recalcule automatiquement les classements des villes, régions et événements — la donnée reste cohérente sans aucune intervention manuelle.
Modèle conceptuel de données — entités, relations et cardinalités pensées pour l'intégrité.
Classements automatiques — un trigger recalcule le classement à chaque nouvelle note.
Conduire un projet
Satisfaire les besoins des utilisateurs au regard de la chaîne de valeur du client, organiser et piloter un projet informatique avec des méthodes classiques ou agiles.
Conduire un projet, c'est savoir analyser et décider. Lors de la SAÉ Entreprise, nous devions piloter une société fictive en faisant les choix les plus rentables — une démarche critique, tournée vers la chaîne de valeur. En management des SI, j'ai modélisé des processus métier en BPMN (Bizagi) pour les analyser et identifier points de décision et axes d'amélioration.
Modélisation BPMN — un processus de demande de remboursement analysé étape par étape (Bizagi).
Un projet informatique s'inscrit dans un cadre légal. En ressource Droit des contrats numériques, j'ai étudié les règles encadrant les contrats du numérique (formation du contrat, obligations des parties, responsabilités) ainsi que les enjeux de licences et de protection des données. Des notions qui guident des choix concrets sur un projet.
- Contrats numériques — formation, obligations, responsabilités
- Licences logicielles — choix et implications
- RGPD — protection des données personnelles
- CGU — conditions d'utilisation d'un service
Un projet réussi repose sur une communication claire entre client, utilisateurs et équipe. En ressource Analyse, nous avons conduit un projet d'application de réservation de salles pour l'IUT selon la méthode Agile Scrum : recueil du besoin sous forme de user stories (le langage de l'utilisateur), modélisation (MCD), puis suivi des tâches sur un Kanban Jira pour coordonner l'équipe sprint après sprint.
Tableau Jira — les user stories sont suivies en colonnes (À faire, En cours, En revue, Terminé).
Je reste attentif à l'impact et au contexte de mes projets, sur trois plans complémentaires.
Sobriété numérique : green code, choix techniques mesurés et auto-hébergement maîtrisé.
Exploitation d'un ERP de bout en bout : fournisseurs, clients, stocks et commandes.
Communication et travail en équipe dans un contexte multilingue.
Collaborer au sein d'une équipe informatique
Acquérir, développer et exploiter les aptitudes nécessaires pour travailler efficacement dans une équipe informatique.
Je sais m'intégrer dans une équipe et m'aligner sur une démarche commune. Sur la SAÉ Web API, nous avons tout démarré ensemble dès le premier jour — conception du MCD, rédaction du contrat d'API et répartition des tâches — pour que chacun parte avec une vision claire. Cette base partagée permet ensuite de coder sa partie en autonomie sans se bloquer mutuellement.
Développement en autonomie, sans blocage : tout le monde sait quoi faire.
Faciliter les évolutions d'un projet, c'est écrire du code que les autres peuvent reprendre et faire grandir. En qualité de code, j'ai appris à appliquer des design patterns (en Java) pour structurer un code maintenable et extensible. En qualité de développement, j'ai mis en place une chaîne d'outils qui sécurise chaque évolution apportée par l'équipe.
Des solutions éprouvées pour un code structuré, maintenable et facile à faire évoluer.
Formatage, analyse statique et automatisation pour fiabiliser chaque évolution.
Travailler en équipe et en open source impose de respecter un cadre juridique : choix et compatibilité des licences logicielles, respect de la propriété intellectuelle du code, et conformité RGPD pour les données manipulées. Des réflexes abordés en droit des contrats numériques qui guident nos choix collectifs.
- Licences — choix et compatibilité (open source)
- Propriété intellectuelle — respect du code d'autrui
- RGPD — conformité des données manipulées
- Attribution — crédit des contributions de l'équipe
La communication est le ciment d'une équipe. Au quotidien sur les SAÉ, nous échangeons sur Discord et coordonnons notre travail avec Git & GitHub : branches dédiées, commits clairs et fusions relues. Chacun voit ce que font les autres, et l'historique du dépôt garde une trace de chaque décision technique.
main — l'équipe avance en parallèle sans se gêner.