Faut-il écrire des spécifications ?

Hervé Rincent

Hervé Rincent

15 juil. 2020

Au début d'un projet, on veut parfois écrire beaucoup.

Ecrire ce que le logiciel fera. Les données qu'il va manipuler. Les fonctions disponibles. Le design des différents écrans.

Après avoir écrit tout ça, on se met d'accord avec les multiples parties prenantes qui vont approuver le document. Puis on le soumet à une équipe qui va transformer le document en code, pour un prix fixe convenu à l'avance.

Cette façon de procéder donne l'impression de maîtriser les choses. On sait ce qu'on veut. On sait ou on va et combien ça va coûter. Les risques semblent réduits.

J'ai vu des projets très réussis de cette façon. Et d'autres sévèrement bousculés en cours de route.

Parce qu'il est très difficile de s'accorder sur une représentation mentale unique à la seule lecture d'un document. Pour une même phrase, chaque lecteur imaginera une version différente (un peu comme dans un roman).

La conséquence est d'obtenir à la fin quelque chose de très différent de ce que vous aviez envisagé au départ. Et comme le prix fixe est convenu à l'avance, vous allez batailler indéfiniment sur l'interprétation des phrases, et surtout à propos de ce qui n'est pas écrit.

“Bien sûr que je n'ai pas écrit qu'il fallait pouvoir ajouter un utilisateur. Mais c'est évident sinon c'est inutilisable.”

Cahiers des charges, spécifications, ou tout autres documents décrivant l'attendu de l'application sont difficiles à écrire. Il faut chasser toutes les ambiguïtés en intégrant des exemples, des schémas ou des copies d'écran.

Mais ça ne met pas à l'abri des oublis. Par exemple :

Alors pour synchroniser ce qu'on a en tête avec l'équipe de développement, j’ai observé deux pratiques qui ont bien fonctionné.

Le prototype

Rien de tel qu'un exemple concret pour se faire une idée commune de l'objectif, pour faire émerger les questions.

Un prototype est une sorte de conversation avec votre idée. Il offre un moyen de trouver des simplifications qui vont rendre l'outil intuitif. Il valide aussi le projet, et illustre de quelle façon il résoud le problème.

Pour construire un prototype, on peut procéder :

Le risque du prototype est de partir trop tôt sur un mauvais niveau d’abstraction. On peut se perdre dans les détails (le bouton à cet endroit, le texte un peu plus gros, …) au lieu de se concentrer d’abord sur les concepts : quels services propose-t-on à l’utilisateur ? Quelles données manipule-t-il ? Comment gagne-t-il réellement du temps ?

L'immersion

Le succès d'un projet repose aussi sur la capacité du développeur à incarner les utilisateurs du produit qu'il conçoit.

Il vous faut passer du temps à expliquer pourquoi vous avez besoin de faire développer quelque chose, et comment vous pensez que les utilisateurs vont interagir avec le produit.

Ces capacités à se projeter, à se mettre à votre place, à comprendre votre besoin et votre modèle d’affaire constituent une clé de réussite du projet au moins équivalentes aux qualités techniques.

Le temps manque toujours. Alors si on le consacrait plutôt à expliquer / discuter / prototyper, plutôt que de s’enfermer plusieurs jours pour écrire un pavé rapidement obsolète qui risque d’être rarement lu ?


Continuer la lecture

Les deux profils de développeurs

21 juil. 2020

3 min read

Les deux profils de développeurs

Lire l'article
Les poissons de l'intelligence artificielle

7 juil. 2020

4 min read

Les poissons de l'intelligence artificielle

Lire l'article
Inscription à la newsletter

Recevez chaque semaine un article pour réfléchir à votre prochain projet tech/data

gratuit, sans spam, désinscription en 1 clic

Merci ! Regardez dans botre boite mail. Un lien de confirmation n'attend plus que votre clic.
Arghh il semble compliqué de vous ajouter à la liste de diffusion. Et si vous m'envoyiez un mail directement à contact@camilab.co ?