Catégorie : Journal

  • Windsurf et moi : journal d’un dev qui apprend à parler à une IA

    Ça fait deux semaines que j’utilise Windsurf pour développer un plugin WordPress.
    Le principe ? Ajouter des options sur les blocs Gutenberg natifs (en React/JSX), et gérer des Custom Post Types proprement.

    Rien de dingue sur le papier.
    Mais en vrai, c’est le genre de projet où tu te retrouves vite avec du code front mélangé au code métier, des fichiers qui grossissent, et un moment où tu te demandes « mais pourquoi j’ai foutu ça là ? ».

    Avant, j’aurais passé une journée entière à refactoriser pour que ce soit propre.
    Là, j’ai tenté de faire équipe avec l’IA.

    Spoiler : c’est ni parfait, ni magique. Mais franchement, c’est troublant.

    Le moment où j’ai compris que c’était différent

    Au début, je lui ai juste balancé :

    « J’ai du code pour étendre des blocs Gutenberg. Aide-moi à séparer proprement le front-end de la logique métier. »

    Windsurf ne m’a pas juste craché trois suggestions de fonctions.
    Il a réorganisé des fichiers.
    Il a créé des dossiers, proposé une archi, déplacé du code React d’un côté, les enregistrements de CPT de l’autre.

    Pas parfait, hein. Mais cohérent.

    Et moi, pendant ce temps, je ne codais presque pas.
    Je lisais, je validais, je virais ce qui ne me plaisait pas.

    C’est là que j’ai senti le truc : je n’étais plus vraiment en train de « coder ».
    J’étais en train de piloter.

    Font Awesome sur les boutons : ou comment j’ai réécrit mes prompts 15 fois

    Le truc qui m’a le plus pris la tête, c’est l’ajout d’icônes Font Awesome sur les blocs core/button.

    Sur le papier, c’est simple :
    tu rajoutes un control dans le panneau Gutenberg, tu laisses l’utilisateur choisir une icône, tu l’affiches côté front avec la bonne classe Font Awesome.

    Dans la réalité ?
    Windsurf m’a sorti :

    • Des contrôles Gutenberg qui ne compilaient pas.
    • Des attributs qui disparaissaient au save/reload.
    • Du JSX bancal avec des icônes qui se dupliquaient ou qui partaient dans le mauvais sens.
    • Une fois, il m’a même proposé d’importer tout Font Awesome en JS côté éditeur (merci, mais non).

    Le problème, c’est que je lui demandais des trucs trop vagues.
    Genre :

    « Ajoute une option pour choisir une icône Font Awesome. »

    Résultat : il partait dans tous les sens.

    J’ai dû affiner. Beaucoup.
    Jusqu’à arriver à des prompts du style :

    « Ajoute un SelectControl dans InspectorControls pour choisir parmi 5 icônes Font Awesome.
    L’attribut doit s’appeler faIcon, de type string.
    L’icône doit s’afficher avant le texte du bouton, côté front uniquement, avec la classe fa-solid fa-{nomIcone}. »

    Là, ça commençait à tourner.

    Mais j’ai quand même dû tout recommencer à zéro une fois, parce qu’il m’avait généré une logique tellement tordue que je ne m’y retrouvais plus.

    Ce que j’ai appris : parler à une IA, c’est un métier

    Ce qui m’a le plus marqué, c’est à quel point la façon dont tu poses la question change tout.

    Si tu dis :
    « Fais-moi un truc pour gérer des icônes »,
    tu obtiens du code générique, verbeux, à moitié cassé.

    Si tu dis :
    « Crée un attribut faIcon de type string, ajoute un SelectControl avec 5 options fixes, affiche l’icône en <i> avec la classe correspondante dans le RichText »,
    là, ça roule.

    Et ça, pour moi, c’est nouveau.
    Avant, coder, c’était : je sais ce que je veux, je le tape.
    Maintenant, c’est : je sais ce que je veux, j’apprends à le formuler pour qu’une IA le fasse.

    C’est presque un exercice de specs en temps réel.
    Et franchement, ça m’a forcé à être plus clair dans ma tête sur ce que je voulais vraiment.

    La structure du plugin : là où l’IA m’a vraiment aidé

    Ce qui est cool, c’est que Windsurf m’a aidé à mettre en place une archi propre dès le début.

    Avant, j’aurais fait un gros index.php, un dossier assets, et je me serais dit « je rangerai plus tard ».
    Jamais fait, évidemment.

    Là, il m’a proposé direct :

    • Un dossier src/blocks pour tout le code React/JSX qui étend les blocs Gutenberg.
    • Un dossier includes pour les CPT et la logique métier.
    • Un build propre avec webpack (enfin… plus ou moins propre, j’ai dû ajuster).
    • Une séparation claire entre ce qui tourne côté éditeur et ce qui se charge côté front.

    C’est pas révolutionnaire.
    Mais c’est exactement ce que j’aurais dû faire depuis le début, et que je faisais jamais par flemme.

    L’IA m’a forcé à être structuré dès le départ, parce qu’elle avait besoin de comprendre où mettre les fichiers.

    Et résultat : mon code est plus maintenable. Plus facile à relire. Moins bordélique.

    Les moments de frustration (parce qu’il y en a)

    Je ne vais pas mentir : il y a eu des phases où j’ai eu envie de tout fermer et de retourner coder comme avant.

    Genre :

    • Quand l’IA me modifiait 4 fichiers alors que je lui avais demandé d’en toucher qu’un.
    • Quand elle « corrigeait » du JSX qui marchait très bien, merci.
    • Quand elle m’inventait des hooks React qui n’existent pas, et que je perdais 20 minutes à comprendre pourquoi ça plantait.

    Il y a aussi ce moment bizarre où tu te rends compte que tu lis plus de code que tu n’en écris.
    Et parfois, ça frustre.
    Parce que coder, c’est pas juste produire du code. C’est aussi réfléchir, tâtonner, trouver des solutions.

    Avec l’IA, tu sautes une partie de ce process.
    Des fois c’est génial.
    Des fois, tu te sens un peu… spectateur.

    Ce que je retiens après deux semaines

    Windsurf, c’est un outil de structure avant tout.
    Il te force à penser ton projet proprement, parce qu’il a besoin de comprendre où il met les pieds.

    C’est aussi un amplificateur de clarté mentale.
    Si tu ne sais pas vraiment ce que tu veux, il va partir en vrille.
    Si tu es clair, il va vite.

    Mais ça reste un assistant, pas un dev.
    Tu ne peux pas lui laisser la main sur tout.
    Surtout si tu fais du React/JSX un peu poussé, ou si tu touches à des trucs sensibles (attributs Gutenberg, save/edit, etc.).

    Le truc à retenir ?
    L’IA produit le squelette. Toi, tu mets la chair.

    Et franchement, pour l’instant, ça me va bien comme ça.

    Et toi, t’en es où ?

    Je suis curieux de savoir si d’autres devs WordPress ont testé ce genre d’outils sur des projets Gutenberg.
    Parce que franchement, entre le JSX, les attributs, le save vs edit, et tout le bordel de la compilation… c’est pas toujours évident de savoir ce qu’on peut déléguer à l’IA et ce qu’il vaut mieux garder sous contrôle.

    Si t’as des retours d’expérience, des prompts qui marchent bien (ou qui partent complètement en couille), ou juste une opinion tranchée sur le fait de coder avec une IA, balance-moi ça.

    Parce qu’au fond, on est tous un peu en train d’apprendre ensemble comment bosser avec ces trucs-là.
    Et autant partager les galères, non ?

  • Retour sur ces cinq derniers mois

    Cinq mois qui sont passés vite. Entre taf, famille, sport un peu bancal et bidouilles perso, ça a bougé dans tous les sens.

    (suite…)
  • Retour sur ces trois derniers mois

    Trois mois sont déjà passés depuis le début de l’année, alors c’est l’occasion de faire un petit bilan. Pas mal de choses ont bougé, avec du bon, du moins bon, et quelques surprises au passage.

    (suite…)
  • Tous les éditeurs de code que j’ai utilisé

    Ceci est un post que j’ai eu envie d’écrire pour aucune autre raison que celle d’être tombé sur l’un des premiers article du blog de Paweł Gryzbek. Je ne vais pas partager mon « setup » mais plutôt tous les IDE, au sens large, que j’ai utilisé jusqu’à maintenant pour le développement Web.

    • Microsoft FrontPage 🤢
    • Dreamweaver MX
    • Komodo Edit
    • Espresso
    • Coda
    • Adobe Brackets
    • Sublime Text 2
    • Sublime Text 3
    • Atom
    • Visual Studio Code

    J’ai adoré utiliser Espresso pour le CSS et Coda pour le PHP, mais j’avoue que mon préféré jusqu’ici c’est VSCode. Déjà avant que GitHub soit racheté par Microsoft j’adorais coder dans Atom. Ça fait maintenant plus de 6 ans que je code dans VSCode et je ne compte pas changer !

  • Publier sur les réseaux

    Je viens de réaliser un truc ces dernières heures.

    Jusqu’à maintenant, je republiais automatiquement tout le contenu de mon site sur les réseaux sociaux, de sorte que mes profils sociaux soit un genre de mirroir, dans l’espoir de faire venir les gens sur mon site.

    Mais en fait, je m’en fiche complètement que tout ce que je publie ici soit aussi transféré sur mes réseaux sociaux ! 🤷‍♂️

    L’important enfin de compte, c’est que mon contenu soit chez moi et que je ne partage sur les réseaux que ce que j’ai décidé. D’autant que la plupart de ce que j’écris ici m’est destiné.

    Je ne sais pas pourquoi il m’a fallu autant de temps pour réaliser ça. Peut-être parce qu’au fond je cherche « l’approbation » des autres, alors que clairement, les autres se fiche royalement de ma pomme.

  • Bilan 2024

    C’est le moment de se replonger dans l’année qui vient de s’écouler et de voir si les objectifs que je m’étais fixé en début d’année ont été remplis !

    (suite…)
  • Séjour à Disneyland

    Pour fêter l’anniversaire de ma chérie on s’est offert un week-end en amoureux à Disneyland Paris, ce qui n’était plus arrivé depuis presque 10 ans ! Il faut pouvoir lâcher un ou deux reins. 😅

    La dernière fois que j’ai mis les pieds à Disneyland c’était en pleine Saison de la Force, et à l’époque j’avais pu faire une photo avec Dark Vador, un concours de cris de wookies avec Chewbacca et voir des patrouilles de Stormtroopers dans le Walt Disney Studios, j’avais à nouveau 5 ans à ce moment là.

    Cette année même si il n’y avait plus les happenings Star Wars, j’ai quand même pu apercevoir Captain America et Spidey. D’ailleurs j’ai adoré l’attraction de Spider-Man. Ça ne dure pas plus de cinq minutes mais punaise qu’est-ce que ça fait mal aux bras de « lancer des toiles » ! 🤣

    Malheureusement on a pas réussi à rencontrer Tic et Tac cette fois-ci. Une réservation dans un des restaurants du parc nous a forcée à quitter la file d’attente pour éviter de perdre le créneau qu’on avait réservé.

    On a aussi aperçu Woody et Jessie de Toys Story, Dingo, Winnie l’ourson et Jack de L’Etrange Noël de Mr. Jack.

    Niveau attractions, on a pu faire toutes les attractions qu’on voulait absolument faire, dès le premier jour, grâce aux pass Premier Access qu’on a pris lors de la réservation de notre séjour. C’est ultra cher, mais punaise qu’est-ce que c’est jouissif d’attendre seulement 5 minutes par attraction quand déjà l’attente en « single rider » est de 25 minutes !

    On a notamment pu faire ensemble :

    • Spider-Man W.E.B. Adventure
    • Cars Quatre roues Rallye
    • Ratatouille
    • Pirates of the Caribbean
    • Autopia
    • Buzz Lightyear Lazer Blast
    • Star Tours : L’aventure continue
    • Big Thunder Mountain
    • Phantom Manor
    • Peter Pan’s Flight

    Et parce que je n’aime pas les manèges à sensations, ma chérie à fait toute seule :

    • Avengers Assemble : Flight Force
    • Crush’s Coaster (x2)
    • Star Wars Hyperspace Mountain

    Le deuxième jour c’était un peu plus light parce qu’on avait la fatigue de la veille et surtout plus les pass Premier Access ! 🤣

    En single riders on a fait :

    • Spider-Man W.E.B. Adventure
    • Avengers Assemble : Flight Force (toujours pas pour moi)
    • Toy Soldiers Parachute Drop (sans moi, merci !)

    Ensemble on a fait :

    • Cars Quatre roues Rallye
    • Slinky Dog Zigzag Spin
    • Phantom Manor
    • Pirates of the Caribbean

    En tout cas on a vraiment passé un super séjour entre l’hôtel, les restaurants que ma chérie avait réservé pour nous et la météo au top même si il faisait froid.

    Même si ça fait mal au porte feuille, voir ma chérie avec des étoiles plein les yeux, ça valait bien la peine.

  • Spotify Wrapped 2024

    Je découvre mon #SpotifyWrapped 2024 et visiblement cette année je suis retourné aux basiques de mes années de collège/lycée !

    Ça fait bizarre d’entendre du Linkin Park avec une voix féminine, mais je doit avouer que je trouve ça vraiment chouette, même si pour moi Hybrid Theory restera leur meilleur album.

    Par contre, je suis agréable surpris de ne pas voir Pierre Garnier dans le Top Artiste, vu le nombre de fois où mon fils nous a demandé « les albums de Pierre Garnier » depuis cet été. Parce que oui, mon fils est un grand fan, il connaît tout l’album par cœur… Moi qui pensais qu’on l’avait bien réussi ! 🤣

  • Souvenirs de Domino

    Ce matin mon iPhone m’a proposé un diaporama souvenir de mon chat, Domino, qui nous a quitté il y a 3 ans maintenant. C’est vraiment salaud, parce qu’il te propose ça direct au réveil…

    Elle a vécue avec moi depuis septembre 2007. Elle n’avait que 5 mois quand une amie d’enfance est venue me l’amener après l’avoir sauvé des rues de Nancy.

    Toute jeune elle adorait jouer avec moi, et au fil du temps elle est devenue la flemmarde que j’ai adoré jusqu’à la fin. Elle adorait passer ses journées à dormir et quand je rentrais des cours ou du boulot, elle venait se mettre entre moi et mon clavier.

    Je me rappelle plusieurs soirées pendant lesquelles je bossais sur le design du blog du Webdesign Friday (RIP 🫶) et OKLM, Domino venait s’allonger sur mon clavier. Et quand elle ne s’allongeait pas sur le clavier, j’étais son mur d’escalade préféré…

    Lorsqu’on a emménagé avec ma compagne, elle passait plus de temps à demander des câlins à ma chérie qu’à moi et elles étaient même collés l’une à l’autre quand on attendant la naissance de mon fils, toujours proche du ventre.

    Quand mon fils est né, Domino a définitivement fini d’être mon chat, c’est devenu totalement le chat de mon fils. Au point que maintenant quand on parle de Domino, mon fils me dit toujours « Non, t’avais pas de chat papa, Domino c’était mon chat ! »

    En tout cas, c’est vrai, elle était vraiment très calme et câline avec lui. Il pouvait lui tirer les poils, ou la caresser dans le sens inverse, elle me disait rien quand c’était lui qui le faisait.

    Bref.. ce mois-ci on fête l’anniversaire de la mort de Domino… Merci Apple de m’avoir rappelé ce mois difficile !