3ème étape : montée en compétences au sein de Wedge Digital
La montée en compétences s’est matérialisée par une première partie de pure formation et une seconde partie de participation à un projet concret pour un client.
Formation
Lorsque je suis arrivé chez Wedge Digital, j’ai eu l’agréable surprise de découvrir que mon programme de formation était déjà défini et que plusieurs stories mêlant théorie et pratique avaient été créées pour chaque étape importante. On a même réalisé ensemble un grooming afin d’évaluer la complexité de chaque tâche.
Au menu de cette formation :
Comme support à la découverte du framework Django, l’idée était d’utiliser la formation en ligne découvrez-le-framework-django ayant comme exemple pratique la création d’une plateforme de réservation de disques.
Ensuite, en mettant en pratique les notions vues dans cette formation, l’objectif était de réaliser une application “from scratch” de gestion d’une base de données automobile. C’est à travers cette réalisation que l’introduction au TDD, aux bonnes pratiques au sein de Wedge Digital et à la création d’API Rest s’est faite.
Enfin, pour monter en compétences sur le framework Vue.js, il fallait créer une application from scratch qui devait utiliser l’API créée dans l’étape précédente. Faute de temps, cette dernière étape n’a pas pu être réalisée.
Au menu de cette formation :
- Le framework Django
- La méthode de développement TDD (Test-Driven Development)
- Les API Rest et serializers, notamment Django Rest Framework
- Le framework Vue.js
- Les bonnes pratiques propres à Wedge Digital
Comme support à la découverte du framework Django, l’idée était d’utiliser la formation en ligne découvrez-le-framework-django ayant comme exemple pratique la création d’une plateforme de réservation de disques.
Ensuite, en mettant en pratique les notions vues dans cette formation, l’objectif était de réaliser une application “from scratch” de gestion d’une base de données automobile. C’est à travers cette réalisation que l’introduction au TDD, aux bonnes pratiques au sein de Wedge Digital et à la création d’API Rest s’est faite.
Enfin, pour monter en compétences sur le framework Vue.js, il fallait créer une application from scratch qui devait utiliser l’API créée dans l’étape précédente. Faute de temps, cette dernière étape n’a pas pu être réalisée.
Projet concret
A la fin de cette période de formation, il a fallu entrer dans le vif du sujet en participant à un projet concret, c'est-à-dire pour un vrai client. Cela sous-entend d’arriver à une certaine productivité afin de respecter les engagements envers ce client.
Le projet en question était basé sur un backend Django/Python et un frontend Vue.js/JavaScript et consistait à développer des outils numériques pour une société d’assurance affinitaire automobile.
Lorsqu’il s’agit d’un projet concret, il y a une autre part importante du travail qui consiste à comprendre le domaine dans lequel évolue le client, l’objectif du produit qu’on est amené à réaliser, les spécificités et les termes associés.
N’ayant jusque-là évolué que dans le domaine aéronautique, cela m’a permis de découvrir un nouveau secteur d’activité.
Le projet en question était basé sur un backend Django/Python et un frontend Vue.js/JavaScript et consistait à développer des outils numériques pour une société d’assurance affinitaire automobile.
Lorsqu’il s’agit d’un projet concret, il y a une autre part importante du travail qui consiste à comprendre le domaine dans lequel évolue le client, l’objectif du produit qu’on est amené à réaliser, les spécificités et les termes associés.
N’ayant jusque-là évolué que dans le domaine aéronautique, cela m’a permis de découvrir un nouveau secteur d’activité.
Réalisations
Ces premiers mois dans le domaine du web m’ont permis de réaliser les tâches suivantes :
- Utiliser le framework Django et notamment :
- Appliquer la méthode de développement TDD, que ce soit côté back ou côté front
- Utiliser le framework Vue.js et notamment :
- Coder en Python et JavaScript
- Manipuler HTML et CSS
- Utiliser l’outil Cypress pour tester la partie frontend
- Comprendre des notions telles que le local storage, les tokens, l’authentification, la sécurité
- Etablir un schéma de structure de base de données
- Tirer le meilleur de l’IDE PyCharm pour améliorer son “workflow”
- Utiliser le framework Django et notamment :
- Comprendre l’architecture dite MVT (Model View Template)
- Elaborer des modèles pour structurer une base de données
- Manipuler l’ORM (Object Relationnal Mapping) pour interagir avec la base de données
- Créer des API RESTful
- Gérer une requête HTTP, élaborer des réponses HTTP
- Créer un formulaire et gérer les données qui en sont issues
- Gérer les sessions et l’authentification
- Appliquer la méthode de développement TDD, que ce soit côté back ou côté front
- Utiliser le framework Vue.js et notamment :
- Elaborer des composants pour tout ce qui peut être réutilisable
- Partager des données entre différents composants/vues donc gérer des données dans une zone de stockage (store) via Vue.x
- Comprendre la notion de réactivité
- Gérer des formulaires
- Créer des fenêtres modales
- Coder en Python et JavaScript
- Manipuler HTML et CSS
- Utiliser l’outil Cypress pour tester la partie frontend
- Comprendre des notions telles que le local storage, les tokens, l’authentification, la sécurité
- Etablir un schéma de structure de base de données
- Tirer le meilleur de l’IDE PyCharm pour améliorer son “workflow”
Retour d’expérience
Nouveaux langages de programmation
Le fait d’avoir suivi une formation sur le langage Python avant de commencer ma mission chez Wedge Digital a été bénéfique : bien que je ne maîtrisais pas ce langage, j’en avais suffisamment vu pour ne pas être totalement perdu. Cela a été plus difficile avec le JavaScript. N’ayant pu véritablement pratiquer ce langage avant, j’en ai un peu plus bavé pour monter en compétences sur ce sujet. Et puis il m’est arrivé plusieurs fois de me mélanger entre la syntaxe Python et la syntaxe JavaScript !
Frameworks de développement
Grande première dans ma carrière : j’ai dû apprendre à apprivoiser un véritable framework de développement. Une expérience agréable dans laquelle il a fallu s’accrocher au début pour en comprendre les principaux concepts. Cela dit, la documentation (que ce soit celle de Django ou celle de Vue.js), les explications et conseils de François et la pratique m’ont permis de monter efficacement en compétences.
TDD
Venant d’un domaine dans lequel les développements logiciels ont longtemps été organisés selon le modèle du cycle en V, commencer une tâche par l’écriture d’un test est assez déroutant au début. Même avec l’introduction de l’agilité ces dernières années, j’ai toujours eu l’habitude de réaliser mes développements logiciels en suivant cette progression : conception, implémentation, tests.
Quand on est habitué à d’abord réfléchir à la conception de ce que l’on s’apprête à coder, en essayant dès le départ d’anticiper les autres tâches, se limiter uniquement aux besoins exprimés par la tâche courante, en partant directement des tests, requiert un changement de mentalité profond. Changer ses habitudes n’est pas chose facile ! Néanmoins, plus je pratique cette méthode plus je prends conscience de ses avantages et je pense que bientôt je me demanderai même : “mais comment j’ai pu travailler ainsi pendant toutes ces années ?”.
Base de données
N’ayant jamais eu l’occasion de créer une structure de base de données “from scratch”, j’ai senti un réel manque dans mon bagage technique quand j’ai dû élaborer ou repenser l’architecture d’une base de données. Bien comprendre les relations que l’on peut créer entre différentes tables est notamment une compétence clé. De mémoire, ce sujet n’est jamais réellement mis en avant lorsqu’on recherche une formation pour faire du développement web. Pourtant, même avec le peu de recul que j’ai aujourd’hui, il m’apparait clair qu’une organisation des données bien pensée facilite le développement et la maintenance du code.
Gestion de projet
Pour gérer les projets, la méthode Agile Scrum est appliquée, avec certaines adaptations. L’ayant déjà appliqué ces dernières années, je ne me suis pas retrouvé perdu sur ce point-là.
Néanmoins, j’ai pu noter une certaine différence de mentalité quant au respect des engagements envers le client. Cela n’est peut-être pas le cas pour toutes les sociétés évoluant dans le domaine du web, mais au sein de Wedge Digital j’ai l’impression qu’on y attache une importance beaucoup plus forte : on met tout en œuvre pour que le périmètre d’une livraison ne soit pas réduit, même si du retard a été pris dans la réalisation des tâches pour ce périmètre. On essaye de prendre des actions au plut tôt dès que l’on détecte que la prochaine livraison est menacée.
Etrangement, cela n’a pas toujours été le cas des projets auxquels j’ai pu participer dans l’aéronautique. Il est arrivé plusieurs fois que le périmètre d’une livraison soit réduit ou que la date de livraison soit tout simplement décalée. Peut-être y a-t-il plus de flexibilité sur ce point-là dans le domaine industriel par rapport au numérique ? L’avenir me le dira, mais j’aurais parié le contraire !
En tout cas, cette différence de mentalité implique un engagement très fort de la part de tous les membres de l’équipe et rend le travail encore plus “challengeant”.
Le fait d’avoir suivi une formation sur le langage Python avant de commencer ma mission chez Wedge Digital a été bénéfique : bien que je ne maîtrisais pas ce langage, j’en avais suffisamment vu pour ne pas être totalement perdu. Cela a été plus difficile avec le JavaScript. N’ayant pu véritablement pratiquer ce langage avant, j’en ai un peu plus bavé pour monter en compétences sur ce sujet. Et puis il m’est arrivé plusieurs fois de me mélanger entre la syntaxe Python et la syntaxe JavaScript !
Frameworks de développement
Grande première dans ma carrière : j’ai dû apprendre à apprivoiser un véritable framework de développement. Une expérience agréable dans laquelle il a fallu s’accrocher au début pour en comprendre les principaux concepts. Cela dit, la documentation (que ce soit celle de Django ou celle de Vue.js), les explications et conseils de François et la pratique m’ont permis de monter efficacement en compétences.
TDD
Venant d’un domaine dans lequel les développements logiciels ont longtemps été organisés selon le modèle du cycle en V, commencer une tâche par l’écriture d’un test est assez déroutant au début. Même avec l’introduction de l’agilité ces dernières années, j’ai toujours eu l’habitude de réaliser mes développements logiciels en suivant cette progression : conception, implémentation, tests.
Quand on est habitué à d’abord réfléchir à la conception de ce que l’on s’apprête à coder, en essayant dès le départ d’anticiper les autres tâches, se limiter uniquement aux besoins exprimés par la tâche courante, en partant directement des tests, requiert un changement de mentalité profond. Changer ses habitudes n’est pas chose facile ! Néanmoins, plus je pratique cette méthode plus je prends conscience de ses avantages et je pense que bientôt je me demanderai même : “mais comment j’ai pu travailler ainsi pendant toutes ces années ?”.
Base de données
N’ayant jamais eu l’occasion de créer une structure de base de données “from scratch”, j’ai senti un réel manque dans mon bagage technique quand j’ai dû élaborer ou repenser l’architecture d’une base de données. Bien comprendre les relations que l’on peut créer entre différentes tables est notamment une compétence clé. De mémoire, ce sujet n’est jamais réellement mis en avant lorsqu’on recherche une formation pour faire du développement web. Pourtant, même avec le peu de recul que j’ai aujourd’hui, il m’apparait clair qu’une organisation des données bien pensée facilite le développement et la maintenance du code.
Gestion de projet
Pour gérer les projets, la méthode Agile Scrum est appliquée, avec certaines adaptations. L’ayant déjà appliqué ces dernières années, je ne me suis pas retrouvé perdu sur ce point-là.
Néanmoins, j’ai pu noter une certaine différence de mentalité quant au respect des engagements envers le client. Cela n’est peut-être pas le cas pour toutes les sociétés évoluant dans le domaine du web, mais au sein de Wedge Digital j’ai l’impression qu’on y attache une importance beaucoup plus forte : on met tout en œuvre pour que le périmètre d’une livraison ne soit pas réduit, même si du retard a été pris dans la réalisation des tâches pour ce périmètre. On essaye de prendre des actions au plut tôt dès que l’on détecte que la prochaine livraison est menacée.
Etrangement, cela n’a pas toujours été le cas des projets auxquels j’ai pu participer dans l’aéronautique. Il est arrivé plusieurs fois que le périmètre d’une livraison soit réduit ou que la date de livraison soit tout simplement décalée. Peut-être y a-t-il plus de flexibilité sur ce point-là dans le domaine industriel par rapport au numérique ? L’avenir me le dira, mais j’aurais parié le contraire !
En tout cas, cette différence de mentalité implique un engagement très fort de la part de tous les membres de l’équipe et rend le travail encore plus “challengeant”.
Conclusion
L’écriture de cet article m’a permis de faire un premier bilan de ces derniers mois et d’évaluer le chemin parcouru jusqu’ici. En listant les compétences acquises ou en cours d’acquisition, je me rends compte que cela représente finalement pas mal de notions en assez peu de temps, et honnêtement bien plus que ce que j’avais espéré.
Il faut tout de même reconnaître que cela a demandé un fort engagement et représente une grosse charge de travail. Que ce soit durant la phase d’autoformation ou durant cette première mission dans le domaine, j’ai souvent pris sur mes soirées et/ou week-ends pour approfondir certains sujets ou revenir sur des notions qui m’étaient plus difficiles à comprendre. Il ne faut surtout pas sous-estimer ce point et je pense que si l’on n’est pas prêt à s’engager totalement et à consentir certains sacrifices sur sa vie personnelle, il est probablement impossible d’y arriver.
Apprendre à gérer les moments difficiles qui peuvent accompagner la réalisation de ce défi est aussi une réalité. Pour ma part, j’ai connu des moments de doute (sur ma capacité à franchir les paliers de la montée en compétences suffisamment rapidement), de stress (concernant ma productivité et son impact sur le bon déroulement du projet), et même de sentiment d’overdose (l’impression d’avoir la tête complètement pleine et de ne plus pouvoir y stocker quoi que ce soit). Mais j’ai pris le parti que ces moments sont des étapes logiques et attendues dans une réorientation professionnelle de ce type et que l’important est de ne pas lâcher et continuer avec autant d’engagement pour qu’au final ce challenge soit un succès. Réponse dans un prochain article ?
Il faut tout de même reconnaître que cela a demandé un fort engagement et représente une grosse charge de travail. Que ce soit durant la phase d’autoformation ou durant cette première mission dans le domaine, j’ai souvent pris sur mes soirées et/ou week-ends pour approfondir certains sujets ou revenir sur des notions qui m’étaient plus difficiles à comprendre. Il ne faut surtout pas sous-estimer ce point et je pense que si l’on n’est pas prêt à s’engager totalement et à consentir certains sacrifices sur sa vie personnelle, il est probablement impossible d’y arriver.
Apprendre à gérer les moments difficiles qui peuvent accompagner la réalisation de ce défi est aussi une réalité. Pour ma part, j’ai connu des moments de doute (sur ma capacité à franchir les paliers de la montée en compétences suffisamment rapidement), de stress (concernant ma productivité et son impact sur le bon déroulement du projet), et même de sentiment d’overdose (l’impression d’avoir la tête complètement pleine et de ne plus pouvoir y stocker quoi que ce soit). Mais j’ai pris le parti que ces moments sont des étapes logiques et attendues dans une réorientation professionnelle de ce type et que l’important est de ne pas lâcher et continuer avec autant d’engagement pour qu’au final ce challenge soit un succès. Réponse dans un prochain article ?