Maxime Vasse est un des fondateurs de Oâclock. Un dĂ©veloppeur que l’on savait passionnĂ© par le Web au point de s’engager dans la transmission de cette passion auprĂšs de la relĂšve.
Il s’est distinguĂ© en prenant le Top1 sur le QCM React Champion de WeLoveDevs. Pour ce faire, il a Ă©tabli le score Ă©ternel de 2798 points. Je dis Ă©ternel parce que ce score risque d’ĂȘtre invaincu pendant trĂšs longtemps !
Il n’a pas bachotĂ© pour prĂ©parer ce QCM React et le score montre qu’il Ă©tait particuliĂšrement passionnĂ© par la technologie pour en dĂ©velopper une expertise aussi exhaustive et prĂ©cise.
Je suis donc allĂ© Ă sa rencontre, un cafĂ© Ă la main, pour lui poser quelques questions et dĂ©couvrir la face cachĂ©e du mythe.Â
Q : Bonjour Maxime ! Merci de prendre le temps avec moi.
Est-ce que tu veux un thé ou un café ?
Un coca bien frais. On a tous des vices, et câest le mien : je ne mâhydrate presque uniquement de cette boisson, tout particuliĂšrement quand je code. Coca zĂ©ro hein, jâai quelques kilos en trop đ
Q : Alors dĂ©jĂ fĂ©licitation pour ton titre de React Champion đ ! C’est vraiment impressionnant de faire ce score. Est-ce que tu avais prĂ©parĂ© cette performance ? Quel Ă©tait ton Ă©tat d’esprit au moment oĂč tu as cliquĂ© sur « DĂ©marrer le test ? »
Jâavoue que je ne mâattendais pas Ă terminer premier, car les conditions nâĂ©taient pas vraiment optimales. Ma petite enfin paisiblement endormie, jâĂ©tais avec Madame dans le canapĂ© devant le replay du Meilleur PĂątissier, lâordi sur les genoux Ă discuter avec des amis et Ă me balader sur Twitter. Et je suis tombĂ© sur le tweet de @WeLoveDevs Ă propos du concours React. Jâavais envie de tenter pour voir !
Q : La question brĂ»le les lĂšvres de tout le monde : est-ce que ton rĂŽle chez O’clock a une relation avec cette performance ?
Oui, assurĂ©ment. Jâai commencĂ© Ă utiliser React avant Oâclock, notamment lorsque jâĂ©tais dĂ©veloppeur freelance. Mais en crĂ©ant lâĂ©cole, jâai dĂ» m’y plonger bien plus en dĂ©tail, afin de crĂ©er les cours et dâĂȘtre certain dâĂȘtre Ă lâaise devant les Ă©tudiants. Ăa paraĂźt paradoxal, et pourtant câest on-ne-peut-plus vrai : enseigner, câest lâune des maniĂšres les plus efficaces dâapprendre !
Mais cela vient aussi du fait que jâapprĂ©cie vraiment cette techno. Câest vraiment mon coup de cĆur de ces derniĂšres annĂ©es niveau dev. Je trouve que la philosophie quâil y a autour est trĂšs fĂ©conde, et la React Core Team fait du trĂšs bon boulot. Je suis un fan inconditionnel de la pĂ©dagogie et de lâhumilitĂ© de Dan Abramov !
Q : Quel est ton premier contact avec la technologie ? Qu’est-ce que tu as construit avec la premiĂšre fois ?
La premiĂšre fois que jâai appris lâexistence de React, jâai dĂ©testĂ© ! Jâai fait un rejet bĂȘte et mĂ©chant, « du html en plein milieu du javascript, quelle hĂ©rĂ©sie ! », trop embourbĂ© dans mes certitudes de la sacro-sainte bonne pratique de la âseparation of concernsâ. JâĂ©tais Ă lâaise avec mes outils de lâĂ©poque, principalement jQuery et CoffeeScript, et je ne voyais pas lâintĂ©rĂȘt.
Cela dit, jâai commencĂ© Ă coder aux dĂ©buts des annĂ©es 2000, jâai souvent vu les technos Ă©voluer et les bonnes pratiques se transformer. TrĂšs tĂŽt, j’ai pris une habitude que je recommande Ă de nombreux dĂ©veloppeurs : quand je commence Ă avoir des certitudes, câest quâil est temps de sortir de ma zone de confort.
Sans ĂȘtre convaincu mais ouvert Ă lâidĂ©e, jâai donc dĂ©cidĂ© de tenter le coup. Sur le moment, jâai trouvĂ© ça sympathique mais un peu lourd. C’est le mĂȘme ressenti que les autres frameworks que jâavais testĂ© Ă lâĂ©poque, Angular et Backbone. Puis jâai eu le tilt. Ce nâest pas du HTML, câest du JSX, câest performant et ça ouvre le champ des possibles. Et surtout, jâai compris le grand pouvoir quâapporte la composition et la programmation dĂ©clarative.
Je lâai utilisĂ© pour la premiĂšre fois pour un projet dâe-commerce, pour gĂ©rer lâaffichage dynamique dâun panier : quantitĂ©, prix, tva⊠CâĂ©tait tellement plus simple en React !
Q : Comment as-tu dĂ©veloppĂ© ta connaissance de la techno ? Quels conseils donnerais-tu Ă nos pairs (jeunes et moins jeunes) qui veulent s’amĂ©liorer sur le sujet ?
LâintĂ©rĂȘt du dĂ©claratif par rapport Ă de lâimpĂ©ratif, câest quâon ne peut pas se retrouver avec un affichage incohĂ©rent. Lâaffichage que lâon voit dans le navigateur dĂ©coule des donnĂ©es ; si les donnĂ©es changent, lâaffichage change sans avoir Ă dire explicitement âenlĂšve cette classe et rajoute celle-ciâ. Ăa simplifie Ă©normĂ©ment le boulot dĂšs quâil y a pas mal de donnĂ©es Ă gĂ©rer.
Du coup, je me suis mis Ă utiliser React dĂšs quâil y avait des donnĂ©es Ă manipuler dans un projet. MĂȘme quand il nây avait pas beaucoup de donnĂ©es Ă gĂ©rer Ă vrai dire ! CâĂ©tait aussi le moment oĂč ES6 a pris son envol, donc jâavais lâimpression dâapprendre Ă chaque nouveau projet.
Pour sâamĂ©liorer sur React, comme sur toute techno, le mieux ça reste justement de pratiquer, pratiquer, pratiquer. La documentation est une mine dâor, câest assez facile de progresser seul. Bien sĂ»r, en suivant une formation câest encore plus facile, car tout est dĂ©jĂ triĂ© et dĂ©cortiquĂ©, puis prĂ©sentĂ© dans le bon ordre pour optimiser lâapprentissage.
Q : Ah tu fais la différence entre Compétence et Connaissance ?
Si on considĂšre quâĂȘtre compĂ©tent, câest ĂȘtre bon dans son mĂ©tier, faire du bon boulot, alors il faut bien plus que des connaissances. A mon sens, on peut dĂ©composer la compĂ©tence en 3 morceaux :
- Les connaissances, câest-Ă -dire le savoir quâon accumule. Câest le plus facile Ă obtenir, il suffit de lire du code, regarder des exemples, lire la docâŠ
- Le savoir-faire, câest-Ă -dire le savoir quâon met en pratique. Câest bien beau de connaĂźtre la thĂ©orie, mais une fois quâon passe sur du concret, il y a tout un tas de petites choses, des bonnes pratiques, des rĂ©flexes quâon acquiert et qui sont indispensables.
- Enfin, le savoir-ĂȘtre. En gros, la capacitĂ© Ă mobiliser son savoir et son savoir-faire pour rĂ©pondre Ă un problĂšme concret. Pour ça, rien de mieux que des projets rĂ©els !
Q : Comment tu as trouvĂ© le QCM ? Qu’est-ce que tu as pensĂ© des questions ?
Il y avait des questions un peu tordues, il faut avouer ! Le genre de question oĂč tu te dis « mais ça, ça arrive jamais dans la vraie vie ». Ceci dit, câest intĂ©ressant parfois de torturer une techno dans tous les sens, pour sâassurer de bien comprendre ce quâil y a sous le capot. Ce nâest jamais bon dâutiliser une couche dâabstraction sans comprendre comment elle fonctionne, et câest trĂšs vrai pour React.
AprĂšs, pour ĂȘtre honnĂȘte, les questions tournaient beaucoup autour des class components, alors que je nâutilise presque plus de class dans mon code dĂ©sormais, grĂące aux hooks. Heureusement pour mon score, jâai une plutĂŽt bonne mĂ©moire. Enfin, une bonne mĂ©moire⊠Je ne sais jamais oĂč jâai paumĂ© mon tĂ©lĂ©phone dans la maison, mais le code, je retiens facilement đ
Q : Les dĂ©veloppeurs veulent savoir quel est l’avis du champion. Quel est le futur de React ? Est-ce que la techno va Ă©voluer, prendre de nouveaux virages ? Ou est-ce que le futur de React c’est VueJS ?
Jâai jamais Ă©tĂ© attirĂ© par Vue.js. Du coup, comme Ă mon habitude, jâai voulu sortir de ma zone de confort et me suis poussĂ© Ă lâutiliser lâannĂ©e derniĂšre sur un projet perso. Et jâai compris pourquoi tant de monde aime Vue ! Il y a un cĂŽtĂ© magique et facile qui est trĂšs agrĂ©able, quand React pouvait parfois paraĂźtre bas niveau ou nĂ©cessiter beaucoup de boilerplate. Mais cet avantage a un inconvĂ©nient : plus câest magique, plus câest galĂšre quand on veut sortir des sentiers battus. Au final, entre React et Vue, câest une question de goĂ»t, de choix. Ce qui est sĂ»r, câest que cette saine concurrence des technologies permet une Ă©mulation vertueuse dans lâĂ©cosystĂšme.
Cela dit, avec les hooks, je pense que React a repris une petite longueur dâavance. Mais en fait, React, câest bien plus quâune library, câest une philosophie. La programmation fonctionnelle, la composition, les effets algĂ©briques, etc. ConcrĂštement, les hooks ne sont que la partie Ă©mergĂ©e de lâiceberg : le concurrent mode ou le data fetching avec Suspense sont des choses qui vont continuer Ă faire Ă©voluer React dans cette voie. Je suis trĂšs enthousiaste sur le futur de React !
Q : Du coup, React est un outil dans quel contexte ? Sur quels projets, c’est un no-brainer d’utiliser React ?
DĂšs quâil y a de la donnĂ©e ou des interactions utilisateurs, ça vaut vite le coup dâutiliser un outil tel que React, Vue, Svelte etc. Par exemple, React Ă©tait un choix Ă©vident quand jâai codĂ© la classe virtuelle de Oâclock, qui gĂšre de lâaudio, de la vidĂ©o, des messages, des rĂ©actions, des sondages, des statistiques⊠Pour une telle interface, il est beaucoup plus simple de se concentrer sur la manipulation des donnĂ©es et laisser React gĂ©rer le rendu.
Dans ce genre de cas dâutilisation, React est intĂ©ressant niveau performance, mais surtout niveau developer experience. On lâoublie souvent, mais une appli performante, ce nâest pas seulement une appli rapide, câest aussi une appli dont la base de code est maintenable. Une base de code dont la DX est assez agrĂ©able pour que lâĂ©quipe puisse itĂ©rer, que ce soit modifier ou ajouter des fonctionnalitĂ©s, sans perdre un temps fou et sans accumuler de la dette technique.
En revanche, jâai tellement pris de plaisir Ă utiliser React que je mâen sers aussi beaucoup, mĂȘme en dehors des use cases typiques. Pour du template dâemail par exemple ! Le systĂšme de composant est tellement pratique, JSX est tout aussi agrĂ©able â voire davantage, selon mon avis personnel â quâun moteur de template comme Twig, Pug ou Jinja pour faire du rendu serveur.
Q : Quelles sont les derniĂšres nouveautĂ©s de l’Ă©cosystĂšme React que tu as n’as pas encore eu le temps de tester, mais qui t’excitent vraiment ?
Le concurrent mode et autres features expĂ©rimentales, je suis lâactu, mais je nâai pas eu le temps de tester. Mais bon, j’attendrai certainement la version stable de toute façon. Aussi, je fais surtout du web avec React, un peu de Native mais pas beaucoup. Jâaimerais en faire un peu plus, mais aussi tester de nouveaux supports. Par exemple, Ink, qui permet dâutiliser React pour dĂ©crire une UI dans un terminal. Et pourquoi pas, coder mon propre custom renderer đ Jâai encore Ă©normĂ©ment Ă apprendre !
Q : TrĂšs bien ! Je suis content d’avoir rencontrĂ© un « Champion đ « aussi humble. Encore Bravo ! J’en profite pour rappeler que le challenge suivant a dĂ©jĂ commencĂ©, il s’agit de PHP Champion đ. Est-ce que tu comptes participer Maxime ?
PHP, mon vieil ami ! AprĂšs le HTML, câest le premier âvraiâ langage de programmation que jâai utilisĂ© (le BASIC sur TI-83, ça compte ou pas ?). Aujourdâhui Ă mon avis, je suis un peu rouillĂ©, ça va ĂȘtre dur de faire un joli score. Mais je participerai peut-ĂȘtre, pour le plaisir !
Q : Tu mentionnais en off quand je suis arrivĂ© que tu ne faisais plus partie d’O’clock depuis quelques jours. Est-ce que tu veux en parler ?
Jâai passĂ© les 5 derniĂšres annĂ©es Ă bosser pour Oâclock, il est temps pour moi de me lancer dans une nouvelle aventure. Jâai adorĂ© ces annĂ©es, et je continuerai Ă aider le dĂ©veloppement de Oâclock comme je le peux. Mais pour entretenir la flamme qui me fait me lever le matin, rien de mieux que de nouveaux projets !
Il y a des tas de choses Ă amĂ©liorer, on a lâembarras du choix. Pourquoi pas des secteurs engluĂ©s dans lâadministration, comme la santĂ© ou les finances, qui auraient bien besoin de se renouveler. HealthTech, FinTech ou autre : ce qui me plaĂźt, c’est de m’attaquer Ă un univers sclĂ©rosĂ©, casser le âon a toujours fait comme çaâ. Câest ce qui mâa donnĂ© envie de crĂ©er Oâclock, car le secteur de la formation manquait dâinnovation. Il en manque toujours dâailleurs, et je nâai pas Ă©puisĂ© toutes mes idĂ©es Ă ce sujetâŠ
Clairement, câĂ©tait impossible de rĂ©flĂ©chir Ă tout ça Ă la tĂȘte dâune entreprise de 100 personnes. Jâai quittĂ© mon poste de directeur gĂ©nĂ©ral de Oâclock depuis quelques jours seulement, et jâai dĂ©jĂ pas mal dâidĂ©es. Jâadore me plonger corps et Ăąme dans un projet auquel je crois, donc je vais me laisser du temps pour sĂ©lectionner lâidĂ©e qui saura m’enthousiasmer. Dâailleurs, rejoindre une aventure ou en crĂ©er une nouvelle, lĂ encore, je ne suis pas encore fixĂ©.
Ce qui est sĂ»r, câest que peu importe le projet qui va mâoccuper pour les prochaines annĂ©es, jâaurais mon fidĂšle alliĂ© dans ma besace : React. Je vais dâailleurs profiter de mon temps libre pour bloguer un peu au sujet de cette merveilleuse techno !