Web & logiciel
Développement logiciel : le cahier des charges que vous écrivez n’est pas celui dont vous avez besoin
Personne ne sait ce qu’il veut avant de l’avoir utilisé. Un cahier des charges complet écrit avant est un pari rédigé au présent.
Un projet de développement sur mesure échoue rarement sur le code. Il échoue sur l’écart entre ce qui avait été demandé et ce qui était réellement nécessaire, et cet écart n’apparaît qu’une fois que quelqu’un a utilisé quelque chose.
C’est une propriété gênante du métier, et les deux parties passent leur temps à faire comme si elle n’existait pas. Le client écrit un cahier des charges complet parce qu’on lui a appris que c’est sérieux ; le prestataire le chiffre au forfait parce que c’est rassurant.
Puis la première version arrive, les équipes s’en servent, et tout le monde découvre en même temps trois choses qui ne pouvaient pas être devinées. À ce moment-là, le contrat qui devait protéger les deux parties les met en opposition.
Cet article ne propose pas de supprimer le cahier des charges. Il propose d’écrire autre chose dedans, de le chiffrer autrement, et de reconnaître à l’avance ce que personne ne peut savoir — ce qui est la seule façon de ne pas se le reprocher plus tard.
Personne ne sait ce qu’il veut avant de l’avoir utilisé
Demandez à quelqu’un de décrire l’outil dont il a besoin et il décrira ce qu’il fait aujourd’hui, en mieux. C’est une réponse honnête et elle est structurellement incomplète : elle ne peut pas contenir ce que l’outil rendra possible et qui n’existe pas encore dans son travail.
Le phénomène est le plus visible sur les cas particuliers. Une personne qui traite un dossier depuis huit ans a intégré une trentaine d’exceptions qu’elle applique sans y penser, et qu’elle ne mentionnera pas parce qu’elles ne lui apparaissent pas comme des règles.
Ces exceptions ressortent toutes au même moment : la première semaine d’utilisation réelle. C’est la raison pour laquelle la première version d’un logiciel métier produit toujours une liste de demandes, et pourquoi cette liste est un bon signe plutôt qu’un mauvais.
Il y a une conséquence contractuelle immédiate. Si les demandes qui arrivent après la première utilisation sont traitées comme des changements de périmètre, chacune devient une négociation, et le projet passe son temps le plus utile à discuter d’argent.
La bonne façon de le formuler avant de commencer est simple et désarme la plupart des conflits : nous savons tous les deux qu’il manquera des choses, la question n’est pas de l’éviter mais de décider maintenant comment nous les traiterons.
Le cahier des charges complet est une illusion coûteuse
Un document de quatre-vingts pages écrit avant la première ligne de code donne un sentiment de maîtrise, et ce sentiment est le produit le plus cher du projet.
Il coûte d’abord du temps : plusieurs semaines pendant lesquelles rien d’utilisable n’existe et pendant lesquelles les hypothèses ne sont pas testées. Ce sont les semaines où le projet est le plus fragile, parce que personne ne peut encore se tromper visiblement.
Il coûte ensuite en rigidité. Un document détaillé devient une référence qu’on défend, et les découvertes faites en cours de route se heurtent à ce qui avait été convenu — alors qu’elles sont précisément l’information la plus fraîche du projet.
Il coûte enfin en fausse précision. Décrire un écran à la virgule près avant d’avoir vu quelqu’un s’en servir produit des exigences qui paraissent fermes et qui sont des préférences, et elles seront défendues avec la même énergie que les vraies contraintes.
Ce qui reste indispensable dans un cahier des charges, c’est ce qui ne dépend pas de l’usage : les règles du métier, les obligations légales, les volumes, les personnes concernées, ce avec quoi l’outil doit communiquer. Le reste s’écrit en marchant.
Ce qu’il faut écrire à la place : les règles, pas les écrans
La partie stable d’un projet est constituée de règles, et elles se formulent comme des phrases vraies indépendamment de toute interface.
Un numéro de commande ne se réutilise jamais. Une facture ne se modifie pas après émission, elle s’annule. Un client peut avoir plusieurs adresses de livraison mais une seule adresse de facturation. Un article ne peut pas être vendu en dessous de son prix d’achat sans une validation.
Ces phrases-là valent plus que trente maquettes. Elles sont vérifiables, elles se discutent avec les personnes du métier plutôt qu’avec un informaticien, et elles restent vraies quand l’écran change.
Le second bloc à écrire est celui des cas particuliers connus, ceux dont on se souvient. Ils ne seront pas exhaustifs — c’est le sujet de la section précédente — mais chacun d’eux écrit avant est un litige évité.
Le troisième est ce que l’outil ne fera pas. C’est le plus court et le plus utile : nommer explicitement les fonctions hors périmètre transforme une déception future en décision présente, et c’est la même règle que dans le bâtiment et l’événementiel.
Le forfait et la régie : ce que chacun vous fait porter
Il n’y a pas de bon mode contractuel dans l’absolu, il y a deux façons de répartir un risque qu’on ne peut pas supprimer.
Le forfait déplace le risque vers le prestataire, et il le fait payer. Un prix ferme sur un périmètre incertain contient une marge de sécurité, et cette marge est d’autant plus grande que le prestataire est honnête sur l’incertitude.
Il a un second effet, moins visible et plus grave : il aligne les intérêts contre le projet. À partir du moment où le prix est fixe, toute amélioration découverte en route coûte de l’argent au prestataire, qui a intérêt à ne pas la voir.
La régie déplace le risque vers vous, et elle demande en échange une discipline que peu de clients exercent : suivre ce qui est produit, arbitrer chaque semaine, et savoir arrêter. Sans cette discipline, elle est plus chère que le forfait.
La combinaison qui fonctionne le plus souvent est intermédiaire et rarement proposée : un forfait sur la partie stable — les règles écrites, la reprise de données, la mise en service — et un budget encadré, avec un plafond, sur ce qui sera découvert. Chacun porte alors le risque qu’il maîtrise.
La première version doit être trop petite
La tentation est de livrer un outil complet, parce qu’un outil partiel est difficile à défendre en interne. C’est pourtant la première version réduite qui décide de la réussite du reste.
Sa fonction n’est pas de servir : elle est d’apprendre. Une version qui couvre un seul flux, utilisée par trois personnes pendant deux semaines, produit plus d’informations que six mois d’ateliers de spécification.
Le critère de découpage utile n’est pas « les fonctions les plus simples » mais « le chemin le plus fréquent ». Prenez l’opération que vos équipes font quarante fois par jour, faites-la fonctionner de bout en bout, et laissez tout le reste de côté.
Il faut accepter que cette version soit visiblement incomplète, et le dire aux utilisateurs. Un outil présenté comme fini alors qu’il ne l’est pas produit du rejet ; le même outil présenté comme une première étape produit des retours.
Le piège symétrique existe : livrer une version si réduite qu’elle n’est utilisée par personne. Le test est simple — si les gens continuent de faire l’opération dans l’ancien système en parallèle, la version n’était pas trop petite, elle était incomplète sur le chemin principal.
Où l’outil est réellement utilisé
Une erreur de conception revient systématiquement dans les logiciels métier : ils sont dessinés sur l’écran de celui qui les commande, pas sur celui de la personne qui s’en servira.
L’observatoire du marché de l’internet de l’ARPCE recense pour le deuxième trimestre 2025 quelque 59,10 millions d’abonnements internet en Algérie, dont 88,71 % de mobiles et 11,29 % de fixes.
Le rapport ne décrit pas votre entreprise, mais il décrit vos équipes en dehors du bureau : le magasinier, le livreur, le technicien en intervention, le vendeur en rayon. Aucun d’eux ne travaille assis devant deux écrans.
Les conséquences sont concrètes et se décident tôt. Un formulaire de vingt champs est inutilisable debout ; une saisie qui exige les deux mains ne se fait pas en portant quelque chose ; une opération qui suppose une connexion permanente échoue en réserve ou en sous-sol.
La règle que nous appliquons est d’aller voir. Une heure passée à côté de la personne qui fera la saisie, dans son environnement réel, change plus la conception que trois réunions — et elle a lieu avant le premier écran, pas après le premier refus.
- Abonnements mobiles88.71%
- Abonnements fixes11.29%
ARPCE, observatoire du marché de l’internet, 2e trimestre 2025
La reprise de données : le poste que personne ne chiffre
Tout projet qui remplace quelque chose hérite de son historique, et cet héritage est presque toujours absent du devis initial.
Le travail n’est pas technique, il est archéologique. Les données existantes contiennent des conventions non écrites, des champs détournés de leur usage, des doublons, des enregistrements laissés à moitié, et des exceptions saisies dans un champ de commentaire.
Il faut donc décider trois choses avant de commencer : ce qui est repris, ce qui est archivé sans être repris, et ce qui est abandonné. La troisième catégorie existe toujours et personne n’ose la nommer, ce qui fait qu’on reprend tout par défaut.
Il faut aussi décider ce qui se passe quand une donnée ancienne ne satisfait pas une règle nouvelle. Un client sans numéro de téléphone, une facture sans référence : soit la règle s’applique et l’historique se corrige, soit l’historique passe et la règle a une exception. Les deux sont défendables, l’absence de choix ne l’est pas.
Notre position, apprise à nos dépens : la reprise se teste sur les données réelles dès le premier mois, pas la semaine avant la mise en service. C’est le poste qui fait glisser les projets, et il glisse toujours parce qu’il est découvert tard.
Les tests, et qui les fait
Il y a deux natures de test et les confondre coûte cher. Le prestataire vérifie que le logiciel fait ce qui a été demandé ; seul vous pouvez vérifier que ce qui a été demandé était la bonne chose.
La seconde vérification ne se délègue pas. Elle demande quelqu’un qui connaît le métier, qui a le temps de s’asseoir devant l’outil, et qui a l’autorité de dire qu’une règle est fausse. Ces trois conditions sont rarement réunies et c’est le vrai goulot d’étranglement de la plupart des projets.
Il faut donc la planifier comme une charge de travail, avec un nom et des jours réservés. « Les utilisateurs testeront » sans personne nommée signifie que personne ne testera, et le défaut sera trouvé en production par un client.
Le test utile porte sur des cas réels et non sur des exemples. Prenez dix dossiers de la semaine dernière, dont deux compliqués, et faites-les passer entièrement. Les exemples inventés valident la logique du développeur ; les vrais dossiers valident la vôtre.
Enfin, écrivez ce qui a été testé. Ce n’est pas de la bureaucratie : c’est ce qui permet, six mois plus tard, de savoir si un comportement est un défaut ou une décision.
La mise en service : le moment où tout casse
Le passage de l’ancien système au nouveau est le moment le plus risqué du projet, et c’est celui qui reçoit le moins d’attention parce qu’il arrive quand tout le monde est fatigué.
La première décision est la bascule : tout d’un coup, ou en parallèle pendant une période. Le parallèle est plus sûr et beaucoup plus coûteux, puisqu’il suppose de tout saisir deux fois ; la bascule est plus rapide et n’a pas de retour arrière au-delà de quelques heures.
La deuxième est la date. Ne mettez jamais en service la veille d’une échéance métier — fin de mois, inventaire, période de forte activité. C’est évident écrit ici et c’est fait régulièrement, parce que la date est choisie sur le calendrier du projet et non sur celui de l’entreprise.
La troisième est la présence. Quelqu’un du prestataire doit être joignable et disponible pendant les premiers jours d’usage réel, et cela doit être écrit dans le contrat plutôt que promis oralement.
La quatrième est le retour en arrière. Écrivez avant la bascule ce qu’on fait si elle échoue : qui décide, à quel moment, et comment on revient. Un plan de repli qui n’a pas servi n’a rien coûté ; son absence coûte une journée d’arrêt.
Ce qui se mesure sur un développement
Trois mesures suffisent et aucune n’est un pourcentage d’avancement, qui est le chiffre le plus rassurant et le moins informatif d’un projet.
La première est la fréquence des livraisons visibles. Un projet qui montre quelque chose d’utilisable toutes les deux semaines est un projet dont vous connaissez l’état ; un projet qui montre quelque chose tous les trois mois est un projet dont vous apprendrez l’état trop tard.
La deuxième est le nombre de retours ouverts et leur âge. Ce n’est pas le nombre qui inquiète, c’est l’âge : une liste qui grandit avec des éléments de six semaines dit que les priorités ne sont pas arbitrées.
La troisième est l’usage réel après la mise en service : combien de personnes se servent de l’outil pour l’opération qu’il devait remplacer, et combien continuent en parallèle dans l’ancien. Ce dernier chiffre est le seul verdict qui compte.
Ce que nous ne citerons pas : les statistiques d’échec des projets informatiques qui circulent partout. Elles proviennent de l’enquête d’un cabinet, avec sa propre définition de l’échec et son propre échantillon, et elles sont reprises depuis des décennies sans que personne ne vérifie ni l’année ni la méthode.
Ce qu’il faut vérifier avant de signer
La première question est celle qui révèle la méthode : demandez-lui ce qui se passera quand vous découvrirez, en utilisant la première version, qu’une règle était fausse. Une réponse qui parle d’avenant et de coût décrit un contrat ; une réponse qui parle de budget encadré décrit une méthode.
La deuxième porte sur le rythme : à quelle fréquence verrez-vous quelque chose de fonctionnel ? Si la réponse dépasse un mois, vous ne saurez pas où en est le projet avant qu’il soit trop tard pour corriger.
La troisième porte sur la reprise de données : est-elle chiffrée séparément, et sur quelles données a-t-elle été estimée ? Un devis qui la mentionne en une ligne sans avoir vu vos données estime quelque chose qu’il n’a pas regardé.
La quatrième porte sur la propriété et la reprise : le code, les accès, les données exportables, et une documentation suffisante pour qu’un autre prestataire reprenne. Demandez une exportation pendant le projet, pas à la fin.
La cinquième porte sur la mise en service : qui est présent, combien de jours, et quel est le plan de repli. Un prestataire qui n’a pas de réponse à la dernière n’a pas fait beaucoup de bascules.
Ce que nous faisons, et ce que nous refuserons de faire
Ce que nous refuserons : chiffrer au forfait un périmètre que personne n’a encore vu fonctionner. Nous pouvons le faire — cela se vend mieux — mais la marge de sécurité que nous devrions y mettre vous coûterait plus que la méthode que nous proposons à la place.
Nous refuserons aussi de commencer par un cahier des charges de quatre-vingts pages. Nous demanderons les règles, les cas particuliers dont vous vous souvenez et ce que l’outil ne fera pas, puis nous construirons le chemin le plus fréquent et nous vous le montrerons.
Une limite de compétence, dite clairement : nous ne connaissons pas votre métier. Les règles viennent de vous ; nous savons poser les questions qui les font sortir, et nous savons reconnaître quand une réponse décrit une habitude plutôt qu’une contrainte, mais nous ne les inventerons pas.
Ce que nous faisons : les règles écrites avant les écrans, une première version réduite au chemin le plus fréquent, la reprise de données testée sur vos données réelles dès le premier mois, une personne nommée de votre côté pour la recette, et un plan de repli écrit avant la bascule.
Et ce que vous devriez faire sans nous cette semaine : asseyez-vous une heure à côté de la personne qui fera la saisie et regardez-la travailler sans l’interrompre. Notez les trois choses qu’elle fait sans les avoir jamais décrites à personne. Ce sont vos règles, et elles valent plus que le cahier des charges que vous alliez écrire.
Questions fréquentes
Faut-il un cahier des charges complet avant de commencer ?
Non. Écrivez la partie stable — les règles du métier, les obligations, les volumes, ce avec quoi l’outil communique, et ce qu’il ne fera pas. Le détail des écrans se découvre en utilisant une première version, et l’écrire avant produit de la fausse précision.
Forfait ou régie ?
Le forfait vous fait payer une marge d’incertitude et aligne les intérêts contre les découvertes utiles ; la régie exige de votre part une discipline d’arbitrage hebdomadaire. La combinaison qui marche est un forfait sur la partie stable et un budget plafonné sur le reste.
Par quoi commencer la première version ?
Par le chemin le plus fréquent, pas par les fonctions les plus simples. Prenez l’opération faite quarante fois par jour et faites-la fonctionner de bout en bout. Si les gens continuent en parallèle dans l’ancien système, c’est que ce chemin n’est pas complet.
Pourquoi la reprise de données dérape-t-elle toujours ?
Parce qu’elle est découverte tard. Les données existantes contiennent des conventions non écrites et des champs détournés. Testez la reprise sur vos données réelles dès le premier mois, et décidez explicitement ce qui est repris, archivé, ou abandonné.
Qui doit tester ?
Quelqu’un de chez vous, nommé, avec des jours réservés et l’autorité de dire qu’une règle est fausse. Le prestataire vérifie que le logiciel fait ce qui a été demandé ; seul vous pouvez vérifier que c’était la bonne chose à demander.
Quel est le taux d’échec de ce genre de projet ?
Nous ne citons pas les chiffres qui circulent : ils viennent de l’enquête d’un cabinet, avec sa définition de l’échec et son échantillon, repris depuis des décennies sans que l’année ni la méthode soient vérifiées.
Où nous intervenons
Une heure passée à observer celui qui utilisera l’outil, sans l’interrompre, produit trois lignes qui valent mieux que quatre-vingts pages de spécifications.
- Nous écrivons les règles avant les écrans, et nous vous les faisons relire.
- Nous réduisons la première version au chemin le plus emprunté, rien d’autre.
- Nous vous montrons quelque chose qui tourne avant de parler d’un forfait.
Votre métier nous est étranger, et nous ne le devinerons pas : un prestataire qui prétend le contraire vous vendra ses propres habitudes.
À lire ensuite
Le POC qui ne partira jamais : les signes, dès la semaine deux
Un pilote qui échoue le fait rarement à la fin. Il le fait la deuxième semaine, en silence, et tout le monde continue trois mois.Après la v1 : ce que coûte vraiment de faire évoluer un logiciel sur mesure
Un logiciel sur mesure ne se livre pas, il se met en service. Tout ce qui compte ensuite se joue sur la façon dont vous demandez un changement.La clause que votre contrat fournisseur ne contient pas
Votre contrat décrit un service : disponibilité, support, prix. Il ne dit presque jamais ce que le fournisseur a le droit de faire de vos données.
Parlons de votre projet
Un audit gratuit, sans engagement : nous regardons votre présence en ligne et nous vous disons ce qui coince.