Retour

Du canard en plastique à ChatGPT : un nouvel allié pour concevoir

Introduction

La méthode du canard en plastique 🦆 consiste à exprimer un problème à voix haute à un objet ou une personne. Le simple fait de verbaliser sa réflexion amène souvent l’orateur à trouver, de lui-même, la solution.
Adopter un canard, c’est économiser du temps de cerveau d’un collègue, et même sa santé mentale face aux codes les plus alambiqués. Hélas, malgré toute sa bonne volonté, notre cher compagnon en plastique manque cruellement de répondant.

Il est temps pour notre vieux canard de rencontrer enfin un compagnon digne de lui : ChatGPT.

Contexte d'usage

Donnons vie à ces idées avec un vrai cas client.

Contexte : un site e-commerce B2B Sylius doté de plusieurs centaines de produits, chacun avec des milliers de variations.

Demande : automatiser la génération du catalogue public et permettre l’édition de catalogues privés intégrant les tarifs personnalisés de chaque client.

La première phase d’analyse doit rester 100 % humaine, l’échange avec le client permet de spécifier le besoin et d’anticiper les contraintes techniques.

Contraintes identifiées :

  • Volume de données, beaucoup de variantes avec nombre d’attributs.
  • Volume du PDF final avec un potentiel de 1000-1500 pages.
  • Pic de charge fréquent sur le serveur.

Afin de répondre à ces contraintes nous avons imaginé une structure résiliente basée sur une fragmentation du processus. En résumé :

Un module pour les générer, un module pour les trouver, un module pour les unifier et dans les ténèbres les lier #lordofthepdf.

Remarque préalable : tous les prompts ci-dessous sont très sommaires, nous aurons l’occasion d’en reparler plus en détail dans un futur article.

Une fois que notre petit canard a approuvé notre raisonnement, on peut commencer à configurer notre IA (pour l’occasion nous utiliserons chatgpt).

Conception par étape avec l’IA

Étape 1 : Créons un nouveau projet afin de conserver nos communications avec l’IA. Dans la partie instructions nous pouvons décrire notre collègue virtuel parfait.

[Tu es un développeur backend expert sur symfony 7.2 et supérieur.
Tu es spécialisé dans la conception d’applications mettant l’accent sur la scalabilité, la maintenabilité et le respect des principes SOLID.
Tu connais parfaitement le système d’injection de dépendances de Symfony, les dispatchers d’événements et les autres fonctionnalités principales
Tu intègres les meilleures pratiques en matière de sécurité, de performance et de lisibilité du code. Ne produit jamais de code sauf si on te le demande.]

Note : Il est important de lui dire de ne pas faire de code, chatgpt a tendance à passer très rapidement à la génération des fichiers.

Enfin, n’hésitez pas à alimenter votre nouvel ami avec du contexte supplémentaire : fiche fonctionnelle, briefing, extraits de code… (Attention de bien vérifier que vous possédez une licence permettant de préserver la confidentialité des données).

Étape 2 : Laissons maintenant notre nouveau collègue nous proposer son point de vue. Nous allons lui exposer le projet de la manière la plus succincte possible. L’idée dans cette démarche est de comparer nos points de vue, nous ne voulons pas l’enfermer dans nos biais.

[ Tu travailles sur un projet Sylius B2B e-commerce. Pour ce client, tu dois mettre en place un générateur de catalogue permettant à chaque utilisateur de créer un catalogue personnalisé, ou de télécharger le catalogue public préalablement généré par l’outil via le back-office. Les catalogues se génèrent en PDF, et le fichier final peut atteindre plusieurs centaines de pages et contenir des milliers de produits. À partir de ce brief, je veux que tu identifies les contraintes techniques et que tu proposes une piste d’architecture de code possible. ]

Résultat :

Ici il nous propose de sécuriser la mémoire, d’utiliser messenger en asynchrone, de faire attention au stockage des pdfs.

Ces éléments sont pertinents et permettent de compléter notre première vision des choses. Mais ChatGPT a un défaut : il peut transformer un petit projet en une grosse usine à gaz. Résultat, il nous emmène parfois hors du terrain prévu. À nous donc de garder la tête froide et d’écarter les idées hors scope (comme une prévisualisation en back-office dans cet exemple).

Nous pouvons maintenant échanger librement avec lui afin de pousser notre architecture. Cette démarche peut être inscrite dans le prompt du projet pour pousser d’avantage la réflexion. Nous lui donnerons par exemple comme contrainte : [ Pose moi des questions sur le sujet et challenge mes réponses pour pousser ma réflexion au maximum ].

Nous allons maintenant aborder avec lui une contrainte forte : l’abandon de la bibliothèque wkhtmltopdf.

Je note ici un résumé de la réponse, mais en réalité elle était très complète et offrait un panel de solutions avec leurs avantages et inconvénients – un vrai luxe dans une phase exploratoire.

Il faut toutefois garder à l’esprit que certaines options ne seront pas proposées par L’IA. Mais honnêtement, je défie quiconque de réaliser un benchmark aussi poussé en moins de cinq minutes.

De notre côté, nous avions déjà choisi de travailler avec Gotenberg ; l’IA est simplement venue confirmer ce choix. Si vous souhaitez creuser davantage ce service, je vous invite à lire l’excellent article de notre architecte Mathieu : Utilisation de l'api gotenberg pour la génération de pdf.

Dernière étape : la structuration du code. Dans cette phase encore l’IA peut nous aider à mieux nous projeter et ainsi limiter les itérations lors du développement.

Plus que jamais il est essentiel de garder la main. Le code, c’est notre domaine, pas question de laisser l’intelligence artificielle avancer toute seule. La magie apparente de la génération par les LLM disparaît bien vite au premier bug ou à la moindre demande de changement.

Pour cette phase il peut être utile de changer de collègue, mieux vaut un agent spécialisé pour chaque tâche. Ici, je reste dans mon projet initial et je lui demande :

[ j'ai cette ébauche d'architecture, j’aimerais qu’on réfléchisse ensemble à la meilleure manière de l’implémenter. ]

Un schéma tout simple comme celui-ci peut découler sur une proposition d’architecture résiliente et solide.

Si par malheur il commence à vous proposer des fichiers de code, même juste des noms, fuyez.

Le développement d’un projet par l’IA ressemble au développement d’un projet en équipe : si vous ne suivez pas, ou si vous bâclez votre brief, le résultat ne sera jamais à la hauteur de vos attentes.

Laisser un LLM générer 50 fichiers avec 10 fonctions chacun est contre-productif : vous perdez du temps, de l’énergie et l’uranium servant à alimenter la centrale nucléaire de Google (oui, c’est une vraie info, vous pourrez la retrouver notamment sur le journaldugeek).

Certes, j’utilise ici ChatGPT et non Google, mais gardons toujours à l’esprit le coût écologique des LLM.

Dans notre exemple, la structure reste volontairement évasive : l’objectif est d’identifier nos propres limites en nous laissant mettre au défi. Nous visons un système par étapes orchestré par Messenger, adossé à une entité Catalogue, avec journalisation par étape. L’IA comprend la demande, mais tend à complexifier — il faut donc lui imposer un cadre.

Avancez par itérations : commencez par une vision macro de l’architecture et de ses principes de base (par exemple, Messenger en asynchrone pour générer un premier PDF, une factory qui orchestre les étapes de génération et une étape finale de traitement). Demandez-lui des patterns adaptés et avancez progressivement du macro vers le micro.

Une fois l’ensemble validé, les fichiers nommés et la structure parfaitement comprise, vous pouvez envisager de coder avec lui. N’hésitez pas à revenir sur votre prompt de collègue si vous le trouvez trop dissipé : vous n’allez pas façonner un collègue parfait du premier coup… et puis finalement, personne n’est parfait.

Conclusion

Si le canard en plastique nous aide à pousser notre réflexion, il ne nous remet pas vraiment en question. Un collègue, de son côté, n’a pas toujours le temps, la patience… ou l’envie de nous contredire de peur de nous froisser.

C’est dans ce triangle des Bermudes que l’IA prend tout son sens. Bien utilisée, elle vous pousse plus loin : un coach, neutre par essence. Cela fait sauter bien des limites de pouvoir être recadré par une « voix » qui ne touche pas à notre sensibilité.

Un LLM constitue une bonne manière d’explorer de nouveaux horizons et de sortir de sa zone de confort.

Note de l'auteur: Si les idées, le ton et les références dans cet article me sont propre, il est aussi le fruit d’un travail collaboratif avec l’IA. Loin de m’appauvrir, cet échange m’a permis d’affiner ma pensée, de corriger mes maladresses et d’explorer des pistes de style auxquelles je n’aurais pas pensé seul. À chaque reformulation, je reste l’auteur et le décideur, mais je bénéficie d’un regard extérieur — neutre, toujours prêt à challenger mes idées. Utilisée de cette façon, l’IA n’écrit pas à ma place : elle me pousse à écrire mieux, et c’est moi qui en ressors grandi.

Besoin d'être accompagné sur un projet de développement ambitieux ou sur l'usage de l'IA pour le développement, n'hésitez pas à nous contacter ;)

D’autres articles à découvrir