Perspectives
3 outils qui m'ont aidé à construire FATA.school
Co-Fondateur
Aujourd'hui cela fait 3 mois que j’ai quitté Shopify. La décision fut difficile, cela faisait plus de sept années que je travaillais pour cette plateforme internationale de commerce électronique. Faire partie de l’entreprise dans sa période de croissance exponentielle m'a énormément appris. J’ai eu l’opportunité de travailler avec des collègues extrêmement talentueux, certains d’entre eux sont devenus des amis.
Shopify m’a donné l’envie d´être un entrepreneur. Lorsque ma sœur Oumie m’a parlé de son idée de créer FATA.school, une école en programmation informatique pour permettre un accès plus équitable à l'entrepreneuriat numérique, le projet m’a tout de suite parlé. Il faut dire que ma carrière professionnelle a débuté dans l’enseignement, et je suis resté passionné par l’apprentissage et la pédagogie. Enthousiasmé par l’idée, j’ai décidé de me lancer et j’ai démissionné.
Je suis convaincu qu’il est possible de créer des formations beaucoup plus engageantes et efficaces en développement logiciel. On vous en dira plus à ce sujet bientôt.
Dans cet article, je veux vous parler des outils que j’ai découverts pendant la construction de FATA.school et comment ils m’ont permis d’être deux fois plus productif.
Outils de développement
Lorsque j’ai rejoint Shopify en 2015, j’ai été choqué par la qualité des outils de développement disponibles. Configurer mon environnement de développement local, provisionner des serveurs ou déployer du code en production était complètement automatisé et en libre service à 100%. Cela permettait à l’équipe de Recherche et Développement de déployer plusieurs centaines de fois par jour tout en augmentant la taille de l’équipe très rapidement (nous sommes passés d'environ 250 développeurs quand j’ai commencé à plus de 4000 7 ans plus tard). C’était tellement plus productif que ce que j’avais connu auparavant. Les outils n’ont cessé de s’améliorer au fil du temps, donc je m’attendais à ce qu’ils me manquent après avoir quitté Shopify Mais ce n’est pas ce qu’il s'est passé.
J’ai découvert que ce qui constituait auparavant un avantage compétitif énorme pour les grosses entreprises de développement logiciel était devenu accessible gratuitement pour tous. J’ai déployé FATA.school sur Fly.io, deno.land et cloudflare.pages. Toutes ces plateformes utilisent les actions Github pour offrir un pipeline de déploiement continu automatisé à chaque git push.
En réalité, le pipeline de déploiement sur deno.land et sur cloudflare ne prend que quelques secondes, ce qui est un ordre de grandeur plus rapide que tout ce que j’avais vu auparavant. Cela change complètement la façon de travailler vu que l’on ne retrouve jamais à attendre le déploiement.
J’ai utilisé github codespaces ce qui m’a permis d’automatiser intégralement la configuration de mon environnement de développement. Encore mieux, grâce à la version Web de VSCode, alors que j’attendais la livraison de mon ordinateur, j’ai pu commencé à coder sur l’ordinateur de ma femme sans avoir à installer quoique ce soit dessus.
Remix
Shopify est l’une des plus grandes applications Ruby On Rails du monde et beaucoup des meilleurs contributeurs à Rails et à Ruby y travaillent. J’ai énormément appris sur la technologie Rails en travaillant à Shopify, et même apprécié de programmer en Ruby. Mais Python a toujours été mon langage de programmation favori. Il y a quelque chose dans le Zen de Python qui me parle beaucoup.
Au début, je planifiais de construire FATA.school en Python mais alors que je faisais mes recherches sur les nouvelles technologies à enseigner, j’ai découvert Remix. Cette vidéo en particulier, m’a convaincu que je me devais d’utiliser Remix (et TypeScript) au lieu de Python.
Cela fait maintenant plus de 30 ans que je code. Pendant toutes ces années, il n’y a eu que quelques rares fois où l’apprentissage d’une nouvelle technologie m’a permis d’être capable de construire une nouvelle classe d’applications. Voici une vue simplifiée mon historique:
- 1995 - J’apprends la programmation impérative en bidouillant avec l’interpréteur Quick Basic qui vient avec MS-DOS
- 1996 - J'apprends comment créer des procédures réutilisables (des fonctions). Je peux maintenant créer des jeux vidéo en mode texte bien plus sophistiqués!
- 1997 - J'apprends la programmation par objets, je peux maintenant créer des moteurs de physique pour les jeux et des applications professionnelles!
- 2001 - J’apprends Python et Django, je peux maintenant créer des applications web dynamiques!
- 2008 - J’apprends le développement piloté par les tests, je peux maintenant créer des applications dont la complexité est plus grande que ma capacité de mémoire
- 2015 - J'apprends React, je peux maintenant créer des interfaces utilisateur interactives!
- 2023 - Je suis en train d’apprendre Remix, je peux créer des interfaces utilisateur “optimistes” (Optimistic UIs)
J’admets qu’il est tout à fait possible de créer des Optimistic UIs sans Remix, ou des UI interactives sans React. Mais React et Remix ont rendu le travail suffisamment simple et facile pour qu’il soit possible et agréable pour moi de le faire au quotidien.
TailwindCSS
Bien que cela fasse plus de 20 ans que je programme des applications web, je ne suis jamais parvenu à être à l’aise avec CSS. Je pense que cela est dû, d'une part, au fait qu’il est difficile pour moi d'utiliser 3 langages à la fois (HTML, JavaScript et CSS) et d’autre part, au fait que CSS m’oblige constamment à passer d’un mode ou je me concentre sur l’aspect visuel de l’interface, à un mode plus abstrait, où je dois penser à l’organisation du code CSS. Ce processus étant trop lent, j’ai pris l’habitude d’user de solutions telles que Bootstrap. En échange d’une perte de contrôle sur le “look and feel”, je n’ai pas à écrire une seule ligne de code CSS.
TailwindCSS à changé cela pour moi. Grâce à cette approche basée sur des classes utilitaires et à l’utilisation de JSX, tout le code pour une interface donnée se retrouve dans un seul fichier. Et cela me permet de me concentrer sur les aspects visuels, sans avoir à penser la hiérarchie de classes CSS.
Il y a aussi beaucoup moins de code à écrire lorsque l’on utilise TailwindCSS par rapport au CSS traditionnel, mais au final cela a eu peu d’importance.
Github Copilot
J’ai été vraiment surpris par la capacité de Github Copilot à prédire le code que je dois écrire. La plupart du temps, une fois que j’ai écrit le nom de la fonction, Copilot peut générer le code dont j’ai besoin. Parfois, je n’ai même pas besoin d’écrire quoi que ce soit; en se basant seulement sur le code autour du curseur, Copilot est capable de prédire ce que je veux faire maintenant. Cela a fonctionné pour tous les langages de programmation que j’ai utilisés, et même pour les fichiers de traduction en anglais et en français. Il est beaucoup plus rapide pour moi de laisser Copilot générer le code, mettre à jour le “prompt” si besoin, et recommencer, plutôt que d’écrire tout le code, même quand je sais exactement ce que je dois coder.
Le plus important c’est que lorsque je laisse Copilot s’occuper des détails de syntaxe, je peux garder l’esprit concentré sur le design de plus haut niveau ce qui me permet d'écrire du code plus propre.
Conclusion
En conclusion, j’estime que l’effet combiné de Remix, TypeScript, TailwindCSS et Copilot m’ont rendu deux fois plus productif pour l’écriture du code. Et grâce à Fly.io je n’ai pas perdu une minute à m’occuper de l’aspect DevOps. Construire FATA.school à pris environ 4 semaines (concours y compris). J’aurais eu besoin d’au moins 6 semaines et j’aurais dû accepter certaines limitations pour l’expérience utilisateur, si ces nouveaux outils n'avaient pas été à ma disposition.
C'est vraiment un moment excitant pour être un développeur! Entre d'une part la banalisation des pipelines de déploiement continu et d'autre part l'arrivée de nouveaux outils tels que Remix, TailwindCSS et Copilot, je pense que nous sommes à l'aube d'une nouvelle ère de productivité pour les développeurs. J'ai hâte d'aider les étudiants de FATA.school à en profiter pour construire une nouvelle génération d'applications.
Nous publions régulièrement des articles pour faire part à nos adhérents et partenaires des progrès et de l'impact du projet FATA. Voir tous les articles