Algo-Crêpe : le code pour les quiches

Algo-Crêpe : le code pour les quiches

Il n’y a pas longtemps j’ai codé une recette de crêpes. Oui, oui. Ce genre de projet dont on a un peu honte au début, puisque ça semble trop simple (donc pas sérieux) : et puis quand on commence on réalise que c’est justement tout l’intérêt. 

Le contexte : j’ai régulièrement des collégiens en stage de découverte. Dans leur imaginaire, la programmation, c'est généralement classe. A mi chemin entre le développeur de jeux vidéos et le méchant hacker. Mais ça reste un truc flou. Entre Matrix et Scratch. Et à la question récurrente "mais vous faites quoi, au juste ?", on montre trois lignes de code. Des trucs bizarres avec des chiffres et les lettres. Rien de plus chiant.

D’où Algo-Crêpes, projet open source qui code en Javascript une recette de pâte à crêpes.

❓ Ce que j’essaie de faire entendre ici

Pas la syntaxe. Ou plutôt, pas seulement.
C’est de faire voir tout ce qu’on ne voit pas quand on pense à "un développeur qui code". Le vrai boulot commence bien avant d’ouvrir un éditeur, quand il s’agit d’identifier ce que l’on construit réellement, pour qui, et doté de quelle capacité à évoluer.

Avec une recette de crêpes, on se retrouve face au tangible. Est-ce qu’il faut adapter les quantités selon le nombre de personnes ? Mon code pourra-t-il supporter qu’un jour soit amenée à l’ajouter une recette de gaufre ce que j’écris - sans tout casser ? Ça, c’est de l’architecture. Et c’est souvent là que se jouent les vrais enjeux. Et on peut y glisser alors les principes de l'algorithmie : un ordre, des conditions, une prise de décision contextuelle.

S'il n'y a pas de sel pour la recette, les crêpes pourront-elles se faire ? Et si on manque de farine ?

♻️ La refacto, ou le sale secret merdique du métier

Il existe dans le repo deux versions du code. La première, écrite devant les stagiaires en direct fonctionne. Elle est aussi un peu foutraque, et c’est voulu. La deuxième est plus propre, mieux structurée, organisée en classe.

Mise côte à côte, elles expliquent que réécrire du code qui marche déjà est une partie normale du job. Pas un aveu d’échec, juste ce qui permet qu’un projet soit maintenable six mois plus tard, quand t’as oublié pourquoi t’avais fait ce choix bizarre à la ligne 47.

🗃️ Et la structure du dépôt

Un README, un changelog, une licence, un guide de contribution. Ça peut sembler accessoire. Mais c’est ça qui fait le projet, pas seulement ton projet sur ta machine, mais aussi celui des autres. J’essaie en faire un modèle de ce que c’est qu’un dépôt un minimum soigné, parce que c’est un truc qu’on apprend souvent trop tard.

🥞 Au final ? 

On aborde trois points supers importants.

  1. "le code, c'est compliqué" : non. Le code, c'est des raisonnements, des questions, des éventualités. C'est une notion facilement transposable dans des illustrations du quotidien qui peuvent parler à tout le monde. Commencer la recette des crêpes en pseudo-code est souvent un bon premier pas
  2. "le code, c'est que du code" : non. Le quotidien d'un développeur ne se résume pas à pisser du code. Il y a la documentation, la formation, l'analyse, les estimations etc. A défaut de pouvoir tout aborder de manière exhaustive et concrète, le fait de proposer un repo "clean" me permet d'aborder des problématiques périphériques (documentation, définition du projet, etc)

  3. "le code, c'est un truc solitaire" : non. Et ce projet me permet de l'aborder en situant le développeur dans son écosystème. Qui fait la logique ? Qui fait l'interface ? Comment mon code sera consulté ? Qui s'occupe de la définition du besoin et du projet ? Le développeur ne fonctionne que dans l'interaction !

Bref. 

Ce n'est pas le projet du siècle, mais je me suis bien amusé. Et à chaque fois que je me suis basé dessus pour faire comprendre quelques problématiques à des novices, ça a plutôt bien fonctionné. Le projet est placé sous la licence CC BY-NC-SA, c’est-à-dire que vous avez toute liberté pour vous l’approprier : pour un atelier, un cours, une session découverte. Et si vous avez envie d’y contribuer, les PR sont les bienvenues.

👉 Lien vers le repository : https://github.com/GreenEffect/Algo-Crepes