Je n’étais pas DU TOUT prédestiné à devenir un développeur Shiny.
Et pourtant… me voilà. Ça fait quelques mois maintenant que je fais partie de l’équipe de Data Champ’ et que Shiny fait partie de mon quotidien.
En fait, à l’origine, je bossais dans l’océanographie. En gros, je passais mes journées à étudier les poissons. Je faisais des analyses de la qualité des eaux, je bossais sur des projets d’écologie aquatique, etc. Je n’écrivais pas une seule ligne de code.
Jusqu’au jour où…
J’ai découvert R.
D’abord, pour mes analyses de données classiques. C’était fou comme R me permettait de faire tellement plus !
Mais c’est surtout Shiny qui m’a donné une claque.
En fait, là j’ai commencé à transformer mes analyses plan-plan en outils interactifs carrément stylés. Je me suis pris de passion pour la techno, et j’ai enchaîné les projets avec plusieurs institutions, comme le CNRS, l’Ifremer, le CHU de Toulouse, puis Toulouse Métropole.
Je faisais mes petites applications Shiny ici et là, et puis.. j’ai vu que Data Champ’ recrutait.
J’ai foncé.
Je me suis dit : « C’est bon, t’es prêt pour jouer dans la cour des grands, il faut te lancer. »
Pour moi, rejoindre Data Champ’, ça voulait dire arrêter de faire mes petites applis dans mon coin et rejoindre des vrais pros du R et de Shiny, apprendre d’eux, et progresser à fond.
C’était exactement ce qu’il me fallait.
Le début de la galère
Sauf que rejoindre Data Champ’ n’était pas facile DU TOUT.
J’ai passé plusieurs entretiens, je suis allé jusqu’au bout du processus et… je n’ai pas été pris. Quand j’ai appris la nouvelle, j’étais évidemment déçu, et j’étais bien loin de m’imaginer que la personne qui avait été embauchée serait mon collègue seulement quelques mois plus tard.
Bon, tant pis. J’avais essayé au moins.
J’ai finalement rejoint une boîte en tant qu’analyste-développeur.
J’étais content : Le domaine m’intéressait, c’était un CDI, j’allais enfin pouvoir passer mes journées à coder en R, et en plus c’était près de chez moi !
Et LÀ, je viens de démarrer dans ce nouveau job, et Charles me recontacte. Il me dit que Data Champ’ a besoin de continuer de s’agrandir et qu’il veut me prendre dans son équipe.
🙄
Je suis évidemment dégouté, mais bon, là je viens juste de démarrer dans ma nouvelle entreprise donc c’est un peu chaud de tout lâcher comme ça. Je veux donner sa chance à celui qui m’a donné ma chance, c’est normal. Donc bref, Charles, merci mais non merci.
Sauf que… il y avait un petit problème.
Les semaines passent, et je ne touche pas à une seule ligne de code de R. Toute la journée on me demandait de faire des extractions de données avec PowerBI et d’envoyer des fichiers Excel.
Le job rompiche par excellence.
Alors c’était tranquille, mais qu’est-ce que c’était chiant ! Et surtout, c’était pas du tout ce qu’on m’avait promis.
Et ça dure…
Tout l’été…
Et là j’en peux plus. Je craque. Je suis encore plus dégouté d’avoir dit non à Charles en fait. C’est l’enfer ce timing. J’ai rien à perdre, donc je prends mon courage à deux mains, je le recontacte et là…
… IL ME DIT OUI !
En fait il s’est rien passé pendant l’été, donc son offre est toujours valable, et c’est bon. J’ai du mal à y croire mais je suis trop content. On se revoit une petite fois pour discuter des détails et fixer une date de démarrage. De mon côté, je mets fin à ma période d’essai, et il ne me reste plus qu’à attendre le 7 octobre.
Le plus dur était fait.
Enfin.. c’est ce que je croyais.
La galère c’était pas fini en fait
Les premiers jours ont été sacrément difficile.
J’arrivais en pensant avoir un bon niveau (après tout, j’avais été sélectionné), j’allais pouvoir arriver tranquille.
Nope.
Bon, la première semaine ça allait. Je reçois mon petit livret d’accueil, je teste mes accès, je découvre les outils internes, le fonctionnement de l’entreprise. Jusque là, ça va.
Et puis après on me présente les projets en cours.
Et là…
Je m’attendais pas à ça. Je découvre des projets énormes comme j’en avais jamais vu en Shiny. D’un côté un outil de planning pour le BTP, de l’autre une appli de pilotage RH avec des tonnes de subtilités à prendre en compte.
En fait j’avais à peine effleuré le champ du possible en Shiny.
Fini les tableaux de bord tout pourris avec une section où on filtre nos variables et un écran où on observe nos données.
Je me rends compte aussi que Shiny, c’est pas que du R. Ouhlà non. C’est un mélange de plusieurs technologies (HTML, CSS, JS, etc.) qui permettent de créer des outils vraiment complets.
Là je commence à comprendre.
Je comprends ce que c’est Data Champ’, je comprends ce que c’est Shiny.
Ici on propose des vrais outils complexes pour répondre à des besoins clients très précis.
Sauf que moi, j’étais pas sûr de savoir faire ça…
Mais pas le temps de réfléchir, il faut prendre le train en marche. Et là c’est rude.
Semaine 2 : Pour me familiariser avec un projet, Charles me demande de créer des tests unitaires.
😲
Mais j’ai jamais écrit de tests unitaires moi.
Pas grave. Charles m’a filé deux-trois conseils, des liens à lire, fait quelques petites démos, et puis, bah…
Fallait se lancer, quoi.
Alors j’ai galéré. J’ai passé des heures à tâtonner, à bidouiller du testthat
et du shinytest2
, à fouiller dans le DOM comme un archéologue…
Et au final, bah, ça a plutôt bien marché.
C’était pas si compliqué en fait. Une fois que j’avais compris la méthode, et quelqu’un pour m’épauler.
Et ça, franchement, ça a fait la différence. Dans les semaines qui ont suivi, j’en ai eu d’autres des galères. Mais à chaque fois, j’avais quelqu’un qui était là pour m’expliquer, me guider, et répondre à mes questions si besoin.
Quelques semaines plus tard, je me souviens particulièrement d’un lundi HORRIBLE. Pile quand Charles était en vacances.
J’avais récupéré un ticket sur un projet un peu tordu. Objectif : Mettre en place un système de cache pour accélérer l’affichage de l’appli.
Sur le principe, c’était simple, d’ailleurs Charles m’avait expliqué comment le mettre en place dans les grandes lignes avant de partir.
Sauf que dans la réalité, je me suis mangé un sacré mur…
Déjà, intervenir sur un code qu’on n’a pas écrit soi-même, c’est pas facile. Mais là, c’était pire : Je croisais des fonctions que j’avais jamais vues avant, la logique de l’appli était bizarre, d’ailleurs j’étais même pas sûr de bien comprendre à quoi servait l’appli.
Toute la journée, j’ai bidouillé des trucs, ça plantait tout le temps, j’écrivais du code puis je l’effaçais. Y’a rien qui marchait.
Je comprenais rien à ce que je faisais.
À la fin de la journée, j’étais lessivé.
Et surtout, là j’ai commencé à avoir un sérieux doute. Est-ce que vraiment j’avais ma place à Data Champ’ ? Est-ce que vraiment j’étais à la hauteur ?
Ma femme l’a vu direct quand elle est rentrée, j’étais au bout du rouleau. Ça m’a bien travaillé toute la nuit. Et puis le lendemain, c’était reparti.
J’étais pas découragé. J’étais déterminé. Je voulais montrer que j’étais CAPABLE.
Et au final… j’ai fini par trouver.
Un tout petit bout de code qui a tout débloqué. Regardez-moi ce ridicule bout de code qui m’a causé tant de peine :
filepath <- file.path(Sys.getenv("CACHE_DIR"), paste0(current_id_with_ns, ".rds"))
if (file.exists(filepath)) {
ui <- readRDS(filepath)
} else {
ui <- synthese_section_ui(
id = current_id_with_ns,
data = data
)
saveRDS(ui, file = filepath)
}
Mais j’étais tellement content d’y être arrivé.
Du coup j'ai fini ma journée à 15h parce que je l'avais bien mérité.
Les premières semaines, c’était que ça. Les montagnes russes.
Des challenges, des frustrations, des petites victoires. Rien n’a été simple. Mais à chaque petite victoire, d’abord j’étais trop content, mais en plus je m’apercevais que j’apprenais énormément.
Et surtout…
La galère mais pas tout seul
J’étais pas tout seul.
Franchement, quand t’es tout seul face à ton écran, bloqué sur un bug qui te rend fou, que visiblement personne d’autre sur l’internet n’a le même bug que toi… c’est dur.
Et là, le fait qu’il y ait une équipe, ça change tout.
D’un côté c’est Charles qui sort des explications limpides.
De l’autre c’est Marc-Aurèle qui te balance une astuce en mode « Tiens, ça va te changer la vie ».
Il y a toujours quelqu’un pour filer un coup de main.
On a eu un projet où il fallait calculer des indicateurs de mobilité, et là l’équipe était occupée sur des données de transports en commun. En gros, il fallait rassembler des fichiers de plusieurs centaines sources différentes, supposément respectant un format standard (mais en fait pas du tout).
Normalement c’était le job de Marc-Aurèle, sauf qu’il était sous l’eau avec plusieurs autres projets.
Donc je l’ai épaulé.
Mais dans quelle galère je me suis fourré…
J’ai passé des heures dessus, je voyais pas comment j’allais m’en sortir.
À un moment j’ai appelé Marc-Aurèle, même pas pour avoir de l’aide, j’avais juste besoin de souffler, de me plaindre, que c’était l’enfer.
Et lui, tranquille, d’un calme olympien il me dit : « Ah non mais t’inquiète, on va trouver une solution. Viens on organise une session de brainstorming avec toute l’équipe »
😲
Alors ça je m’y attendais pas.
Bim boum, le lendemain on se retrouve tous ensemble, et tout le monde s’y met, balance des idées, pose des questions, propose des solutions.
C’était plus juste mon problème, c’était le problème de toute l’équipe.
Et d’un coup, on trouve LA solution.
Les données sont harmonisées, le traitement fonctionne nickel, et modulo deux-trois ajustements, on peut sortir nos indicateurs.
Trop bien.
C’est quoi la suite ?
Alors oui, ça a pas été facile. D’ailleurs c’est toujours pas facile. Mais ça va mieux. Bien mieux.
Maintenante je jongle entre plusieurs projets. Rien de gigantesque pour l’instant, je n’ai pas encore eu à gérer un projet de A à Z.
Mais je m’adapte à la réalité de Data Champ’. Je m’adapte aux attentes, aux exigences de qualité, aux petits détails qui font toute la différence.
Et surtout, j’apprends tellement.
Chaque ticket qu’on me file, c’est pas juste une tâche que je coche et basta.
Non.
À chaque fois c’est une nouvelle occasion de découvrir des bonnes pratiques, d’améliorer mon code, de monter en compétences.
C’est limite une mini-formation à chaque fois.
Maintenant, j’ai envie d’aller plus loin.
Mon prochain challenge : Mettre un peu d’ordre dans la gestion des projets.
Pas un truc trop martial. Juste qu’on soit plus fluides, qu’on sache qui fait quoi à tout moment, où on en est, et surtout qu’on ne perde pas de temps à chercher des infos.
J’ai déjà mis en plus quelques systèmes et process simples, mais efficaces, qui aident déjà l’équipe : meilleure coordination, un suivi simplifié avec les clients, et des livrables encore plus propres.
Maintenant que j’ai passé la galère du début, je me sens prêt à apporter quelque chose de neuf à l’équipe.
Pour moi, c’est une manière de m’assurer que j’apporte une vraie valeur ajoutée à l’équipe, aux projets…
Et surtout…
aux clients !
Commentaires
Charles Taieb
Léo !
J’ai été ravi de t’avoir comme interlocuteur , ton énergie crée de la confiance !
Continue de relever tes défis avec autant de cœur, tu as clairement ta place parmi les pros …et Charles en est un !
Bravo pour tout ce chemin parcouru, et hâte de voir la suite !
charles