Skip to Content

Prototype ≠ production : le « ça marche » n'est pas fini

4 juillet 2026 by
Prototype ≠ production : le « ça marche » n'est pas fini
AISkillsPro

En quelques minutes, un assistant génère une fonctionnalité qui compile, s'exécute et « a l'air de marcher ». La démonstration est convaincante — et c'est précisément ce qui trompe. Car « ça marche sur ma machine », sur le chemin nominal, ne représente qu'une fraction de ce qu'exige la production. Tout ce que la démo n'a pas rencontré reste à faire : gérer les erreurs, valider les entrées, tenir les cas limites, la charge, la sécurité, garder des traces, borner les ressources, tester pour de vrai, rester maintenable. Le prototype généré est un point de départ, pas un livrable. Confondre « la démo tourne » avec « c'est fini », c'est expédier en production des systèmes fragiles. Le travail du développeur, aujourd'hui, c'est exactement le durcissement que la démo a sauté.

Un prototype qui tourne n'est pas un système fini

Commençons par rendre justice au prototype : il a une vraie valeur. Générer vite un rendu qui fonctionne permet de lever un doute de faisabilité, d'explorer une piste, de montrer une intention plutôt que de la décrire. Un prototype est un excellent prototype. Le problème n'est pas de le produire — c'est de le prendre pour autre chose que ce qu'il est. Un rendu qui passe le cas heureux prouve qu'un chemin fonctionne dans des conditions idéales ; il ne prouve rien sur ce qui arrive quand les conditions cessent d'être idéales. Or la production, par définition, est faite de conditions qui ne sont pas idéales.

Pour voir l'écart, il suffit de rappeler ce que « qualité d'un logiciel » recouvre vraiment. La norme internationale ISO/IEC 25010 — le modèle de qualité produit de référence en génie logiciel — ne réduit pas la qualité à « la fonction est là ». Elle la décompose en plusieurs caractéristiques, dont l'aptitude fonctionnelle n'est qu'une parmi d'autres : la fiabilité (tenir dans le temps et sous conditions réelles), la sécurité, l'efficacité de performance — définie comme le degré auquel un produit « accomplit ses fonctions dans les limites de temps et de débit spécifiées et fait un usage efficace des ressources » — et la maintenabilité. Un prototype qui « marche » satisfait la première case et laisse toutes les autres vides. « Prêt pour la production » veut dire au-delà de « ça tourne » : cela veut dire que ces dimensions-là, invisibles dans une démo, ont été traitées (Fig. 1).

Schéma en forme d'iceberg intitulé « L'iceberg du “ça marche” : la démo visible, le système immergé ». Une ligne de flottaison en pointillés cyan porte la mention « ligne de flottaison — “ça marche” ». Au-dessus de la ligne, une petite pointe dorée « Ça marche », annotée à droite « La partie visible — le cas heureux : ça compile, ça s'exécute sur le chemin nominal, “sur ma machine”. » Sous la ligne, une grande masse immergée « Ce qui reste, immergé » listant : gestion d'erreurs et validation des entrées ; cas limites et concurrence & charge ; sécurité et observabilité & logs ; limites de ressources et modes de défaillance ; tests réels et maintenabilité. À droite, un encadré cyan « “Production-ready” = au-delà de “ça tourne” — les dimensions de qualité d'un logiciel (ISO/IEC 25010) » : Fiabilité (tenir sous conditions réelles), Sécurité (résister aux entrées hostiles), Efficacité de performance (tenir la charge), Maintenabilité (pouvoir évoluer sans casser) ; puis « La démo n'exerce presque aucune de ces dimensions. Elle les rend seulement invisibles. » Bandeau en bas : « Le prototype qui tourne est la pointe de l'iceberg — le travail de durcissement est sous la ligne, et c'est le vôtre. »
Fig. 1 — « Ça marche » est la pointe visible de l'iceberg ; le « prêt pour la production » — fiabilité, sécurité, performance, maintenabilité (ISO/IEC 25010) — est immergé. La démo ne l'exerce pas ; elle le rend invisible.
📎 À ne pas confondre : le fossé prototype→production, ni les garde-fous d'un composant IA, ni le pipeline

Ce volet porte sur une seule chose : l'écart entre un code généré qui tourne et un code prêt pour la production — pour n'importe quel code produit vite, pas seulement pour une fonctionnalité à base d'IA. Deux sujets voisins vivent ailleurs. Sécuriser un composant probabiliste dans le produit — valider ses entrées et ses sorties, borner ses privilèges, garder l'humain dans la boucle — relève des garde-fous d'un système IA : là, c'est le modèle lui-même qu'on encadre ; ici, c'est du code ordinaire qu'on durcit. La chaîne de livraison — là où l'IA propose et où l'humain garde la porte du merge et du déploiement — est le sujet de l'IA dans le CI/CD : le tuyau, pas le contenu. Ici, ni le composant IA ni le pipeline : ce que « fini » veut dire, et pourquoi une démo n'y suffit jamais.

Ce que le « ça marche » généré saute par défaut

Le piège n'est pas que l'assistant produise du mauvais code : c'est qu'il produise un code qui a l'air fini alors qu'il ne couvre que le cas nominal. Par défaut, une génération vise à satisfaire la demande telle qu'elle est formulée — « écris une fonction qui fait X » — et s'arrête quand X fonctionne sur l'exemple. Tout ce qui n'a pas été explicitement demandé, et que la démo ne rencontre pas, tend à rester dehors (Fig. 2). C'est une liste longue et connue : la gestion d'erreurs et la validation des entrées ; les cas limites — entrée vide, valeur négative, format inattendu, débordement ; la concurrence et le comportement sous charge ; les limites de ressources — mémoire, connexions, quotas ; l'observabilité — journaux, mesures, alertes — sans laquelle une panne en production est aveugle ; les modes de défaillance — que se passe-t-il quand la dépendance externe ne répond pas ; les tests qui éprouvent autre chose que l'exemple ; et la maintenabilité, pour que le code survive au prochain qui le touchera. Aucune de ces dimensions n'apparaît dans une démo réussie, parce qu'une démo réussie, par construction, ne les traverse pas.

La sécurité illustre bien ce défaut par omission — et le fait est mesuré, pas supposé. Une étude contrôlée présentée à la conférence ACM CCS 2023, Do Users Write More Insecure Code with AI Assistants? (Perry, Srivastava, Kumar, Boneh), a comparé des participants équipés d'un assistant de génération de code à un groupe témoin. Résultat : les participants ayant accès à l'assistant « ont écrit un code significativement moins sûr que ceux qui n'y avaient pas accès ». Le durcissement sécurité — échapper une entrée, éviter une injection, ne pas exposer un secret — fait partie de ce que le premier jet néglige quand personne ne le réclame. On retrouve exactement le raisonnement des tests à l'ère de l'IA : ce qui n'est pas éprouvé explicitement n'est pas couvert, aussi fluide que soit le rendu.

Schéma en deux panneaux intitulé « “Démo terminée” n'est pas “prête pour la production” ». À gauche, panneau rouge « Démo terminée — le cas heureux : ce que le prototype généré prouve, en minutes » avec quatre cases cochées : ça compile et démarre ; le scénario nominal fonctionne ; “ça marche sur ma machine” ; la démo est convaincante. En dessous, un encadré « Sentiment : “c'est fini” — on se croit plus avancé qu'on ne l'est ». Une flèche dorée annotée « le reste » mène au panneau de droite, cyan, « Prête pour la production — le durcissement : ce que la démo n'a pas exercé » avec six cases vides : gestion d'erreurs & validation des entrées ; cas limites & entrées inattendues ; concurrence, charge, limites de ressources ; sécurité — entrées hostiles, secrets, droits ; observabilité : logs, mesures, modes de défaillance ; tests réels & maintenabilité dans la durée. Sous la liste : « C'est ce bloc — pas la démo — qui définit “fini”. » Bandeau en bas : « La fausse fin est mesurée, pas supposée. Une étude contrôlée (CCS 2023) a observé des participants assistés par une IA écrire un code moins sûr — tout en étant plus enclins à croire leur code sûr. Prendre la démo pour le livrable, c'est le piège. »
Fig. 2 — À gauche, ce que la démo coche (le cas heureux) et le sentiment de « fini » qu'elle installe ; à droite, ce qui reste à cocher pour la production. C'est ce bloc de droite, pas la démo, qui définit « fini ».
📖 Que veut dire « prêt pour la production » ?

« Prêt pour la production » n'est pas un ressenti, c'est un état vérifié. L'industrie l'a même formalisé : dans la pratique du Site Reliability Engineering de Google, une revue de mise en production (Production Readiness Review) a pour objectif explicite de « vérifier qu'un service satisfait aux standards admis de configuration de production et de préparation opérationnelle ». Autrement dit, un logiciel devient livrable non pas quand il fonctionne une fois devant vous, mais quand on peut répondre à une série de questions dures : que fait-il quand une entrée est invalide, quand la charge triple, quand une dépendance tombe ? saura-t-on qu'il a échoué, et pourquoi ? quelqu'un pourra-t-il le modifier dans six mois sans tout casser ? Tant que ces réponses n'existent pas, on tient une démo, pas un livrable.

Pourquoi la fausse fin coûte cher — et comment durcir

Croire une démo sur parole n'est pas neutre : c'est reporter le travail au moment où il coûte le plus cher. Le rapport de la NASA Error Cost Escalation Through the Project Life Cycle (Stecklein, Dabney, Dick, Haskins, Lovell, Moroney, INCOSE 2004) rappelle un résultat d'ingénierie classique, dû à Barry Boehm : « trouver et corriger un problème logiciel après livraison peut coûter jusqu'à cent fois plus cher que de le trouver et le corriger au stade des exigences et de la conception initiale ». Un cas limite non traité, une entrée non validée, une panne non observée ne disparaissent pas parce que la démo les a masqués : ils resurgissent en production, là où le diagnostic est difficile et l'incident visible. Sauter le durcissement ne supprime pas son coût — cela le déplace vers le pire moment. C'est le même argument que celui de l'estimation à l'ère de l'IA : le durcissement est justement la part de la tâche qui ne se comprime pas, et l'oublier, c'est chiffrer une tâche qui n'existe pas.

À ce coût s'ajoute un facteur humain qui aggrave la fausse fin. Le profil « IA générative » du NIST (AI 600-1) le nomme : « les humains peuvent trop se fier aux systèmes d'IA générative […] un exemple de biais d'automatisation, ou de déférence excessive envers les systèmes automatisés ». La même étude CCS 2023 le confirme sous un angle troublant : les participants assistés « étaient plus enclins à croire qu'ils avaient écrit un code sûr » — alors qu'ils écrivaient l'inverse. La fluidité du rendu fabrique une confiance que le contenu ne mérite pas encore. D'où une règle de conduite simple : traitez « la démo tourne » comme un signal de départ, jamais comme une preuve d'achèvement. Le fait qu'un code s'exécute ne dit rien de sa robustesse.

Durcir, concrètement, c'est parcourir méthodiquement l'iceberg immergé. Éprouver les entrées : que fait le code sur une valeur vide, malformée, hostile ? Traiter les échecs : chaque appel qui peut rater doit avoir un comportement défini, pas une exception qui remonte à l'aveugle. Instrumenter : des journaux et des mesures pour que la production parle quand elle souffre. Éprouver la charge et la concurrence là où elles s'appliquent. Écrire des tests qui visent les cas limites, pas seulement l'exemple. Et relire pour la maintenabilité, car un code qu'on ne peut pas modifier sans risque est une dette. Une bonne part de ce travail se mène d'ailleurs très bien avec l'IA — à condition de la piloter pour ça : lui faire générer les cas limites qu'on n'a pas en tête, ou l'utiliser pour déboguer et confronter chaque hypothèse au comportement réel. L'outil qui a produit le prototype peut aider à le durcir ; encore faut-il le lui demander explicitement, parce qu'il ne le fait pas de lui-même.

⚠️ Le piège : prendre la démo pour le livrable

L'erreur type : voir une fonctionnalité générée fonctionner à l'écran et conclure « c'est fait ». « L'IA me l'a sortie en cinq minutes, il n'y a plus qu'à livrer. » Ce qui a pris cinq minutes, c'est un premier jet sur le cas heureux ; ce qui reste, c'est tout ce que la démo n'a pas montré — et qui constitue l'essentiel d'un système fiable. Le symptôme est reconnaissable : on parle de « finir » alors qu'aucune entrée invalide n'a été essayée, aucune panne simulée, aucun journal ajouté, aucun test écrit au-delà de l'exemple. La parade n'est pas de se défier de l'outil, mais de ne jamais s'arrêter à la démo : chaque rendu qui « marche » ouvre la liste du durcissement, il ne la referme pas. Un prototype qui tourne n'est pas un système ; c'est la promesse qu'un système est possible.

💡 Réflexes pour passer du prototype au livrable
  • Traitez « ça marche » comme un début. Un rendu qui s'exécute prouve un cas heureux, pas une tâche finie ; il ouvre le travail de durcissement, il ne le clôt pas.
  • Parcourez l'iceberg immergé. Erreurs, validation des entrées, cas limites, charge, ressources, sécurité, observabilité, tests, maintenabilité : passez chaque dimension en revue, explicitement.
  • Éprouvez ce que la démo n'a pas rencontré. Entrée vide, malformée, hostile ; dépendance qui tombe ; charge qui grimpe. Ce qui n'a pas été essayé n'est pas couvert.
  • Rendez la panne visible. Sans journaux ni mesures, un incident en production est aveugle ; l'observabilité fait partie du « fini », pas d'un raffinement optionnel.
  • Faites durcir par l'IA — sur commande. Demandez-lui les cas limites, les tests, la gestion d'erreurs : elle sait les produire, mais seulement si vous les réclamez.
  • Ne livrez jamais un prototype comme une production. Le prototype a de la valeur comme prototype ; le danger, c'est de le faire passer pour un livrable.

Durcir le prototype, c'est le travail qui reste

Ce volet retrouve le fil rouge de la série et le rend tangible sur un geste quotidien : le métier glisse de produire vers vérifier. La génération de code a fait s'effondrer le coût du premier jet — et c'est une vraie avancée. Mais elle n'a pas touché à ce qui sépare un premier jet d'un système : la robustesse. Cette robustesse ne s'écrit pas toute seule parce qu'un modèle écrit vite ; elle se construit, dimension par dimension, par un travail de jugement et d'ingénierie que la démo ne fait qu'escamoter. Confondre « ça marche » et « c'est fini », c'est confondre la pointe de l'iceberg avec l'iceberg.

La bonne posture tient en une phrase : se servir de l'IA pour atteindre vite le prototype, puis assumer que tout le travail sérieux commence là. Le développeur n'est plus d'abord celui qui fait apparaître le code ; il est celui qui le rend digne de la production — celui qui éprouve, valide, instrumente et durcit ce qu'une génération a laissé au stade de la démonstration. C'est la posture de réviseur plutôt que producteur appliquée au cycle entier : la valeur n'est plus dans le rendu qui tourne, mais dans le système qui tient. La bonne question n'est jamais « est-ce que ça marche ? », mais « est-ce que ça tiendra quand ça ne se passera pas comme dans la démo ? ». Un prototype montre qu'une solution est possible. En faire un système, c'est le vrai métier — et c'est celui qui reste.

🎯 À retenir
  • La thèse : un prototype généré qui « marche » sur le cas heureux n'est pas prêt pour la production — c'est la pointe de l'iceberg, pas l'iceberg.
  • Ce que la démo saute : gestion d'erreurs, validation des entrées, cas limites, concurrence et charge, sécurité, observabilité, limites de ressources, modes de défaillance, tests, maintenabilité — les dimensions de qualité (ISO/IEC 25010) qu'un rendu n'exerce pas.
  • La fausse fin est mesurée : une étude CCS 2023 a observé du code assisté moins sûr, écrit par des gens plus convaincus de sa sûreté — le biais d'automatisation (NIST AI 600-1) aggrave le piège.
  • Le coût du report : durcir tard coûte jusqu'à cent fois plus cher que tôt (Boehm, via NASA/INCOSE 2004) ; « prêt pour la production » est un état vérifié, pas un ressenti (revue de mise en production, Google SRE).
  • Le fil rouge : produire est bon marché, durcir ne l'est pas ; le métier se déplace vers la vérification et l'ingénierie qui transforment un prototype plausible en système robuste.
📖 Pour prolonger

La part du durcissement dans le chiffrage : estimer une tâche à l'ère de l'IA. Ce que « tester » veut dire quand l'IA écrit aussi les tests : les tests à l'ère de l'IA. Sécuriser spécifiquement un composant IA dans le produit : les garde-fous d'un système IA. Où l'humain garde la porte de la livraison : l'IA dans le CI/CD. Et côté outils, une part concrète du durcissement : déboguer son code avec l'IA.

Nouveau volet de la deuxième saison de notre série « Le métier dev change avec l'IA ». Pour situer l'IA sans céder au discours magique, téléchargez l'Atlas IA 2026 et abonnez-vous à la newsletter AISKILLSPRO.

💼 Vous travaillez avec Odoo ?

Au-delà de l'IA, retrouvez nos guides, tutoriels et modules Odoo sur OdooSkills, le blog Odoo ↗ (nouvel onglet).

Découvrir une base de code inconnue avec l'IA