Présentation de mon projet de stage “Proof Of Concept”
Voilà quelques mois que j’ai terminé mon stage en entreprise, au cours duquel j’ai eu l’opportunité de réaliser un projet fullstack en totale autonomie avec la stack technologique MERN. En effet, ma première mission durant ce stage de quatre mois chez Isotoner a été d’apprendre, en autonomie, les technologies de la stack MERN et de les appliquer sur un sujet imposé. Le but était de fournir une preuve de concept afin de valider les technologies qui pourraient être utilisées dans les prochains projets en production.

Ma première appréhension
Il est important de savoir que je suis principalement formé à créer des API en programmation orientée objet, que ce soit en Java ou en C#, deux langages que j’adore. D’ailleurs, je ne pourrais même pas dire lequel je préfère. Certes, leur syntaxe est un peu différente, mais j’aime leur côté structuré et méthodique. Je pourrais facilement coder quotidiennement dans l’un ou l’autre et me sentir comblé ! En revanche, j’avais de forts a priori sur le langage JavaScript, influencé par des développeurs backend qui aiment se moquer de ce langage. J’avoue avoir souffert un peu lors de certaines leçons avancées de JavaScript. Je n’étais donc pas très enthousiaste à l’idée de recevoir un sujet de stage qui m’obligerait à sortir complètement de ma zone de confort. Toutefois, cela allait devenir une véritable opportunité et une chance.
MERM | Mais qu’est ce que c’est ça !
Pour ceux qui ne sont pas familiers, MERN est une stack techno ou, en bon français, une pile technologique. En gros, cela représente plusieurs technologies que l’on associe pour réaliser un type de projet. Ici, il s’agit de créer une application web avec son serveur et sa base de données. Pourquoi ai-je autant parlé de JavaScript dans la partie précédente ? Eh bien, parce que la partie frontend est réalisée avec le framework React, qui utilise JS, et la partie serveur utilise Node.js, qui est également en JS. Cela fait donc déjà beaucoup de JS. La partie base de données est assurée par MongoDB, qui est en NoSQL, avec de nombreuses particularités que j’aborderai plus tard.
Recueille des besoins
En entreprise, le sujet de projet ne se présente pas sous forme d’instructions semblables à un exercice d’évaluation sur un banal fichier PDF. Non, cela passe par un entretien avec mon supérieur qui m’explique, autour d’un tableau blanc, les besoins du projet : “je voudrais une page comme ci, il faudrait pouvoir faire cela, etc.”. Prise de notes, questions, photos gribouillis dessinés le tableau… Suite à cela, je me suis mis au travail sur le cahier des charges et les diagrammes (Merise et autres UML) pour m’assurer que j’avais bien compris les besoins de mon ‘client’. Mon chef a été très content et impressionné par les documents que j’avais produits.
Mais première leçon de la vie réelle par rapport au scolaire : on a beau faire des documents très détaillés pour s’assurer que tout est bon, en réalité, ces documents sont souvent lus en diagonale et leur utilité, censée prévenir toute mauvaise compréhension, s’avère limitée. Rien ne vaut la communication directe, même au risque de déranger des personnes au planning déjà chargé. Cela en vaut la peine, car tout le monde y gagne du temps au final, plutôt que de partir dans des tunnels de travail qui peuvent finir à la poubelle suite à une mauvaise compréhension des besoins.

Apprendre MERN en autonomie
L’entreprise n’ayant jamais utilisé la stack MERN jusqu’à présent, je n’avais que peu de ressources humaines à disposition pour m’accompagner dans cet apprentissage. Il y avait bien un alternant qui travaillait sur une mission similaire, mais étant peu présent à cause de son alternance, son soutien a été ponctuel. Cela dit, en attendant de collaborer avec lui, je devais rapidement me mettre à niveau.
Ma première étape a été de trouver des sources d’apprentissage adéquates. Mon chef m’a suggéré un tutoriel, mais d’après mon collègue alternant, il contenait quelques bugs et imprécisions. J’ai donc demandé à mon formateur référent de me recommander d’autres ressources, car il faut rappeler que React et l’ensemble de la stack MERN ne faisaient pas partie des technologies abordées dans ma formation de Concepteur Développeur d’Applications (CDA), si ce n’est quelques notions basiques de JavaScript.
J’ai également mené mes propres recherches, et voici les ressources que j’ai finalement choisies :
- OpenClassrooms : J’ai suivi deux cours, l’un sur le développement frontend et l’autre sur le backend.
- MongoDB : J’ai utilisé le tutoriel du site officiel pour comprendre la création et la gestion d’une base de données NoSQL et le stockage de fichiers dans celle-ci.
- Sécurité et Authentification : Pour ces aspects, j’ai suivi une série de vidéos sur la chaîne YouTube “Faisons Le Point”, qui m’ont permis de mieux appréhender ces sujets essentiels.
Ces ressources ont constitué la base de mon apprentissage de la stack MERN, et m’ont permis de progresser rapidement pour répondre aux exigences du projet.
Réalisation du projet
Les travaux pratiques réalisés pendant mon apprentissage de la stack MERN m’ont permis de poser les fondations et de bâtir l’architecture nécessaires à mon projet. J’ai alors enfilé ma casquette de concepteur d’application pour réfléchir, adapter, et assembler le code. Mais, contrairement à ce que l’on pourrait penser, ce ne fut pas aussi simple !
JavaScript et React m’ont donné du fil à retordre, et cela m’a pris plusieurs semaines d’implémentation et de débogage. Toutefois, mes efforts ont payé. J’ai finalement pu présenter une application web fonctionnelle, élégante et sécurisée, qui a fait bonne impression auprès de l’équipe.
Tout n’était pas parfait, bien sûr : certaines parties nécessitaient encore des ajustements ou des améliorations, mais l’essentiel était là pour démontrer le potentiel de la stack MERN. C’est aussi important de savoir quand laisser un projet tel quel, avec ses imperfections, et passer à autre chose.
Succès et difficultés
Difficultés :
- Conceptualisation d’une base de données NoSQL : Je ne connaissais que la théorie, et j’ai dû m’adapter à ce nouveau modèle.
- Syntaxe JavaScript : Très différente de Java ou C#, sans la structure de la programmation orientée objet à laquelle j’étais habitué.
- Gestion des packages : Chaque tutoriel proposait son lot de packages, ce qui entraînait des problèmes de compatibilité, de dépréciation, ou de redondance. Trouver un équilibre dans l’utilisation des packages a été un véritable défi.
Succès :
- Mon premier serveur Node.js avec Express.js : J’ai pu créer un serveur performant et fonctionnel.
- Création de ma première base de données NoSQL : Elle est capable de recevoir des données ainsi que des fichiers, ce qui a été une belle réussite.
- Réalisation de ma première application web avec React : Voir l’application prendre forme et fonctionner correctement a été une grande satisfaction.
