Ingénieur développement fullstack pour Signature Code
Stack technique principale en C# .NET - SQL Server - Angular
Angular est un framework open-source basé sur TypeScript maintenu par Google permettant de développer des Single Page Applications (SPA). Une nouvelle version sort tous les 6 mois apportant de nouvelles fonctionnalités et optimisations.
J’ai eu l’occasion de commencer à développer avec Angular lors du développement de Signature Mosaic.
À Signature Code, Angular est le framework web principal. La plupart des projets l’utilise car le moteur d’injection de dépendances présent nativement dans le framework le rend extrêmement modulaire et permet une réutilisation de modules entre différents projets pour accélérer leur développement et faciliter leur maintenance sur le long terme.
De plus, l’évolution rapide du framework permet d’obtenir régulièrement de nouvelles fonctionnalités. Les guides de mise à jour publiés en même temps que les versions associées facilitent la mise à jour des différents modules communs et projets.
Au début, pour un développeur débutant, l’assimilation de certains concepts prend du temps et certaines subtilités peuvent être difficiles à appréhender mais il s’agit d’un investissement de temps nécessaire et très avantageux sur le long terme.
Personnellement, c’est le framework de développement web que je préfère. Ce portfolio est d’ailleurs développé en Angular 9 pour me permettre d’ajouter ou de modifier des articles dynamiquement.
J’ai eu l’occasion de l’utiliser dans de nombreux projets, que ce soit en créant le projet de 0 ou en le mettant à jour depuis des versions plus anciennes.
Il existe également de nombreux framework graphiques complémentaires disponibles pour Angular me permettant en qualité de développeur de me poser moins de questions de design et d’obtenir des résultats visuellement plaisants plus rapidement.
Réalisations associées :
LireC# est un langage de programmation orienté objet open-source développé par Microsoft. Il s’agit d’un langage de haut niveau basé sur le C++ et dont la syntaxe et les principes sont similaires au Java.
.NET Core est le framework principal de C# et est également open-source et développé par Microsoft. Il s’agit du successeur de .NET Framework. Il est cross-platform et supporte Windows, Linux et macOS.
ASP.NET Core quant à lui, est le framework utilisant la plateforme .NET qui permet de construire des applications webs ou des API.
J’ai commencé à utiliser ces technologies à In’Tech dès la 2ème année et elles se trouvent dans tous les projets sur lesquels j’ai travaillé depuis.
À l’école, j’ai notamment eu l’occasion de travailler sur le développement d’un jeu vidéo, une plateforme d’organisation de voyages et une plateforme facilitant l’organisation du Forum des Projets Informatiques de l’école. Toutes ces expériences m’ont permis de me familiariser à la fois avec l’environnement de développement, les concepts de programmation orientée objet et plusieurs design patterns.
Cela m’a permis d’être à l’aise lors de mon arrivée en entreprise et de commencer à me familiariser avec les spécificités internes à l’entreprise immédiatement.
À Signature Code, tous les projets ont un back-end utilisant C# et .NET Core. L’entreprise a une approche de développement par package pour accélérer le développement et faciliter la maintenance des projets.
Signature Code développe des packages pour entre autres : l’authentification, l’envoi de mails et la gestion de base de données. Certains sont open-sources et disponibles sur GitHub.
J’ai eu l’occasion de travailler sur certains de ces packages, ce qui m’a permis de voir une approche de développement différente et d’apprendre à écrire du code agnostique pouvant être utilisé dans différents projets différents.
Dans le futur, j’aimerai travailler sur le développement d’un jeu vidéo de plus grande envergure que mon premier projet étudiant car c’est un domaine qui peut être très exigeant techniquement et je pourrai apprendre beaucoup d’un tel projet.
Avec les mises à jour régulières de ce langage et ces frameworks, il est nécessaire que je m’informe régulièrement de leurs évolutions pour exploiter au mieux les nouvelles fonctionnalités et optimisations.
Réalisations associées :
LireLe SQL (Structured Query Language) est un langage permettant de requêter et gérer les données au sein d’un Système de Gestion de Base de Données (SGBD) relationnelle.
SQL Server est un Système de Gestion de Base de Données relationnelle développé par Microsoft. L’une des principales fonctionnalités de ce SGBD par rapport à ses concurrents est la présence de Procédures Stockées permettant l’insertion, la mise à jour, la manipulation ou la suppression de données.
J’ai commencé à utiliser le SQL avec MySQL en 1ère année à In’Tech lors d’un projet étudiant de commerce en ligne.
SQL Server est aujourd’hui l’une des technologies Microsoft que j’utilise quotidiennement en entreprise.
En 3 ans d’utilisation, j’ai eu la possibilité de concevoir des bases de données et les faire évoluer avec les besoins des projets. Mes différentes expériences m’ont permis de mieux percevoir les bases de données relationnelles et de mieux anticiper les modifications potentielles.
J’ai également appris à faire des requêtes complexes sur des volumes de données où l’optimisation était importante.
En entreprise, j’ai travaillé sur des problématiques de déploiement où il était nécessaire de pouvoir faire cohabiter plusieurs bases de données interagissant entre elles mais pouvant être déplacées sur deux serveurs physiques différents en cas de besoin. J’ai alors dû prendre en compte différentes subtilités et mettre en œuvre une solution modulaire pour répondre au besoin.
La gestion des données d’un projet étant un élément critique, j’ai appris à y être particulièrement attentif et tester et retester toutes les opérations venant modifier la donnée.
Aujourd’hui, dans un monde tournant autour du Big Data, les enjeux des données sont de plus en plus importants. Étant entouré de développeurs séniors partageant leur expérience, je peux continuer apprendre et progresser pour m’y préparer.
Réalisations associées :
LireL’esprit d’équipe est une compétence essentielle ne concernant pas uniquement les membres d’une même équipe. Que l’on soit dans la même équipe ou pas, il est important de partager les informations et les connaissances au sein d’une entreprise afin que tout le monde puisse en profiter et faire de l’entreprise un endroit agréable pour travailler.
En utilisant certaines technologies internes à l’entreprise, j’ai pu me retrouver dans des situations où j’avais l’impression de n’arriver à rien et d’être complètement bloqué dans mon travail. Mais grâce à l’aide de collègues, j’ai pu mieux comprendre ces technologies et avancer plus rapidement. C’était à la fois bénéfique pour les collègues qui m’ont aidé car ils ont pu améliorer leur propre compréhension de ces technologies en me les expliquant, mais aussi pour moi et l’entreprise en elle-même : plusieurs mois plus tard, j’ai pu ensuite moi-même les expliquer à de nouveaux collègues lorsqu’ils ont rejoint l’entreprise.
Cela remonte également le moral de tout le monde car cela permet de nouer des liens entre les aidants et les aidés.
Cet esprit d’équipe se construit à tout moment de la journée, que ce soit lors de discussions techniques où chacun peut transmettre ses connaissances, mais aussi lors des discussions plus informelles autour d’un repas où on peut parler de ses passions et ainsi voir les autres plus comme des personnes que simplement des collègues.
Le risque principal de cet esprit d’équipe est que certains puissent en profiter sans contribuer en retour, que ce soit volontaire ou non. Il est nécessaire que chacun sache travailler seul quand il le faut et ne pas se reposer sur les autres en permanence. L’esprit d’équipe ne remplace pas l’autonomie de travail de chacun, les deux sont complémentaires.
Le travail en équipe a été présent dans tous mes projets jusqu’à aujourd’hui, que ce soit dans les projets étudiants comme Pick'n'Trip ou en entreprise comme Signature Mosaic.
Réalisations associées :
LireLa communication est une compétence élémentaire quel que soit le secteur d’activité. Une bonne communication est la clef pour une bonne collaboration entre les membres d’une même équipe mais également entre les différents services d’une même entreprise ou avec des clients.
Savoir s’adapter à son interlocuteur est l’une des clefs d’une communication claire et efficace. Il est crucial d’adapter son vocabulaire, technique ou non, afin d’éviter tout malentendu qui pourrait provoquer des erreurs pouvant être coûteuses en temps et en énergie.
À Signature Code, j’ai pu travailler avec la même équipe sur plusieurs projets différents. Cela nous a permis d’avoir une communication plus fluide puisqu’en connaissant déjà les forces et les faiblesses de chacun, nous pouvions adapter notre communication à notre interlocuteur.
J’ai également pu assister à plusieurs réunions avec des clients qui n’étaient pas du tout dans le domaine technique. Il a donc été nécessaire pour moi de vulgariser un maximum le travail que j’allais mettre en œuvre pour répondre à leur besoin pour deux raisons :
La première étant de d’exprimer le besoin tel que je l’avais compris. Un besoin mal compris peut mettre en péril tout un projet
La seconde étant de valoriser notre travail. Cela nous permet de « démystifier » notre travail auprès du client pour plus de transparence et de lui permettre de comprendre quelles peuvent être les implications de ses demandes et ainsi prendre des décisions plus éclairées.
Au cours de mes différentes expériences, j’ai donc appris à communiquer efficacement tant avec mon équipe qu’avec des clients permettant ainsi de fluidifier les différents processus de prise de décision.
Réalisations associées :
LireLa transmission de connaissances est une compétence essentielle même pour quelqu’un toujours en apprentissage.
Quel que soit le sujet, donner des explications en détail n’est jamais une chose facile sans préparation.
Je pense qu’en entreprise tout le monde peut faire de la transmission de connaissances du Junior au Sénior. Alors qu’un Sénior aura évidemment un potentiel de transmission bien plus important qu’un Junior, il est important que même un Junior s’y essaye afin de tester ses propres compétences et leurs limites.
« Enseigner c’est apprendre deux fois » - Joseph Joubert, Pensées
Connaitre un sujet en tant que « simple utilisateur » ou « simple développeur » n’est pas suffisant pour l’expliquer correctement. La préparation de la transmission de connaissances est donc une excellente occasion de renforcer ses capacités.
L’un de mes projets étudiants à In’Tech a été l’organisation d’une conférence d’introduction aux cryptomonnaies. Je pensais déjà les connaitre avant de préparer cette conférence, mais au fur et à mesure que je cherchais des moyens de les vulgariser et de les expliquer j’ai découvert des manques dans mes connaissances.
Il faut être capable d’aller beaucoup plus loin dans les détails pour se préparer aux inévitables questions qui viendront.
Réalisations associées :
LireIl s’agit du projet informatique du Semestre 4 à IN’TECH.
L’objectif de ce semestre était de maitriser le MVC avec une stack Vue.JS – .NET Core 2.1 – SQL Server 2017.
Nous avons donc choisi de réaliser un site internet permettant d’organiser intégralement ses vacances avec ses amis. Pick’N’Trip devait gérer la sélection de la destination, le choix des activités, l’hébergement et la gestion du budget du groupe, l’enjeu étant bien sûr d’arriver à livrer le produit à la fin du semestre et de développer nos compétences techniques.
Nous avons réalisé ce projet en suivant les principes Agile, deux de nos professeurs étant Product Owners du projet.
L’équipe a choisi de se répartir le travail par fonctionnalité afin d’aborder à chacun des aspects du développement : le front-end, le back-end et la base de données.
Durant la réalisation du projet, j’ai notamment travaillé sur :
La modélisation de la base de données
L’authentification par email, Google et Facebook
Les invitations d’utilisateurs par email
La recherche d’hébergement via une API externe
Au cours de ce projet, nous avons rencontré de nombreuses difficultés liées aux API externes puisque la majorité du contenu montré à nos utilisateurs provenait de ces sources. Ces API sont en effet assez restrictives et peu accessibles pour des projets étudiants.
L’authentification a également été un défi à relever puisqu’au départ nous n’avions jamais utilisé OAuth et cela a donc été une opportunité de nous documenter sur les bonnes pratiques en sécurité.
Être confrontés à ces difficultés nous a permis de nous former efficacement et de comprendre le fonctionnement des technologies utilisées et de mieux appréhender la façon dont les systèmes d’informations peuvent communiquer.
Le projet a été un succès, l’équipe est arrivée 4ème au Forum des Projets Informatiques qui a été tenu à la fin du semestre.
Il s’agit de la première Single Page Application sur laquelle j’ai travaillé et encore aujourd’hui, je suis fier du travail accompli lors de ce projet.
C’est grâce à ce projet que j’ai commencé à m’intéresser aux différents aspects de sécurité d’une application web et les compétences développées durant ce projet me servent tous les jours.
Compétences associées :
LireSignature Logistique est l’entreprise produisant les outils de prélèvement et d’empaquetage pour la société OPAL qui est le fournisseur principal de lunettes pour enfants au niveau européen. Signature Code développe donc la solution logicielle accompagnant les outils de prélèvement ainsi que le back-office permettant de superviser l’état des commandes et des opérateurs. Le back-office doit également contenir une partie de business intelligence permettant d’évaluer dans le temps les différents indices de performance.
Sur ce projet, j’ai eu un rôle de développeur full-stack et j’ai notamment pu travailler sur une base de données SQL Server, un back-end en C# .NET Core 3.1 et un front-end en Angular mis à jour jusqu’à la version 12.
J’ai commencé à travailler sur le projet en développant le back-office. Sur ce dernier, j’ai participé au développement de nombreuses fonctionnalités comme le calcul de statistiques concernant les opérateurs et le suivi des flux de commandes depuis l’enregistrement des commandes jusqu’à leur empaquetage. Ces statistiques permettent d’optimiser le processus avant l’envoi et donc d’accélérer ou d’augmenter la charge de travail sans nécessiter d’allouer des ressources supplémentaires.
Certaines fonctionnalités de ce back-office étaient également critiques :
Par exemple lorsque leur gestionnaire de commandes provoque des erreurs il est crucial pour OPAL de pouvoir modifier manuellement et rapidement des commandes.
Par la suite, j’ai travaillé sur la solution logicielle principale. J’ai notamment pu travailler sur l’amélioration de la fonctionnalité de colisage permettant à un opérateur d’obtenir des indications sur les produits à placer dans les colis.
Ce projet m’a permis de comprendre la mesure ainsi que l’importance d’un suivi statistique précis lors de l’exploitation d’une entreprise dont le cœur de métier est la logistique. J’ai également pu continuer à développer mes compétences en Angular, C# et SQL Server ainsi que dans les outils internes de Signature Code qui sont compliqués à prendre en main mais qui, une fois maitrisés, permettent d’accélérer et faciliter le développement.
Compétences associées :
LireSignature Mosaic est une solution d’affichage dynamique permettant aux entreprises d’afficher des informations internes ou publiques pour faciliter la communication avec des « Players » branchés derrière les écrans des clients.
Il s’agit du premier projet sur lequel j’ai pu travailler en arrivant à Signature Code lors de mon stage de Bachelor. Avant mon embauche à Signature, je n’avais jamais utilisé Angular et n’avais aucune expérience en entreprise. Lorsque j’ai commencé à travailler sur Mosaic, le projet n’en était qu’à ses balbutiements : il n’y avait que quelques maquettes graphiques et idées techniques.
Le projet commençant de 0, j’ai pu voir le projet naître et évoluer en participant aux décisions d’architecture technique. Afin d’obtenir une démonstration technique, j’ai commencé à développer la partie logicielle du Player. Tournant sur une petite carte électronique, il était nécessaire que le code front soit le plus léger possible. C’est pourquoi je l’ai réalisé en TypeScript, HTML/CSS purs sans aucun framework graphique.
Ce Player utilise un système d’emplacements et de modules pour personnaliser l’affichage.
Le principe est très simple : un emplacement peut contenir un module qui peut lui-même afficher des informations et contenir un ou plusieurs emplacements. Cela permet d’avoir des modules fonctionnants comme des mises en page pouvant être dynamiques, l’objectif étant de pouvoir laisser aux client la possibilité de créer leurs propres modules si les modules originaux proposés ne répondent pas à leurs besoins.
À la suite de la réalisation d’une première version du Player ainsi que de sa démonstration j’ai commencé à travailler sur la plateforme web permettant aux clients d’uploader des médias ainsi que de gérer leurs Players et les plannings d’affichage d’associés.
Pour gérer les médias à diffuser, j’ai mis en place un serveur de fichiers permettant de convertir les fichiers reçus en fichiers multimédias uniformes et compatibles avec le Player en utilisant FFMPEG et Powerpoint.
Le planning d’affichage des Players est paramétré par l’utilisateur à l’aide d’une frise chronologique sur laquelle l’utilisateur peut déposer des médias uploadés préalablement sur la plateforme.
Ce projet étant mon premier projet en entreprise, il m’a permis de me rendre compte que les méthodes de gestion de projet que j’avais utilisées à In’Tech pendant les 2 années précédentes étaient très proches des méthodes utilisées en entreprise et donc mon adaptation a été simple et rapide.
J’ai également pu découvrir le framework Angular grâce à ce projet qui est ensuite devenu mon framework front-end de prédilection.
Compétences associées :
Lire