Concevoir une usine à gaz est plus simple qu'un logiciel qui ne fait qu'une seule chose simplement
J’ai profité de ma semaine de vacances pour commencer à réfléchir à mes prochains projets personnels, et notamment à un outil qui me permettrait de tous les gérer de manière centralisée. Je m’éparpille facilement – il suffit de voir la diversité des thématiques de ce site – et j’ai parfois besoin d’outils pour m’y retrouver. Il ne s’agissait pas pour moi de réinventer la roue. Il existe de nombreux outils de gestion de projets, productivité personnelle, et je pense en avoir testé un certain nombre. Malheureusement, aucun d’entre eux ne m’a convaincu, même de loin, à part peut-être Remember The Milk, et contraindre mes habitudes et mes reflex sera probablement plus long et plus pénible que de repartir de zéro.
J’ai donc fait ce que je fais toujours en pareil cas. Je suis parti marcher avec un carnet et un crayon à papier dans la poche, le long du littoral cette fois, et j’ai commencé à noter toutes les idées au fur et à mesure qu’elles venaient : fonctionnalités, workflow, brouillons d’interfaces… J’en ai rayé ou reformulé un certain nombre et fait pas mal de schémas illisibles par tout autre que moi. Quelques heures plus tard, le soleil s’était déjà couché sur l’océan, je me suis retrouvé avec un carnet noirci d’une couverture à l’autre. Le temps de rentrer et reprendre tout ça à tête reposée, le constat fut lapidaire : j’avais accouché d’une usine à gaz certainement géniale sur le papier, mais parfaitement inutilisable.
À ce stade, deux solutions s’offraient à moi : jeter mon carnet dans la première poubelle venue, ou trancher dans la masse à grands coups de hache à double tranchant jusqu’à ce qu’il en ressorte quelque chose d’utilisable.
Je suis retourné sur la plage. La nuit était noire, et la marée basse. Je me suis assis sur le sable à la lueur d’un réverbère avec 2 Redbull et une bouteille de vodka (pas indispensable mais il faisait froid et je n’avais que ça pour me réchauffer). Enfin, j’ai pris chaque fonctionnalité une par une, et je les ai rangées dans 5 grandes catégories
- Les clairement superflues.
- Les trop complexes pour être utilisables.
- Celles dont je n’avais pas besoin immédiatement mais que je voulais ajouter au cas où…
- Celles qui faisaient double emploi avec des services que j’utilisais déjà et que je pouvais éventuellement intégrer.
- Celles que j’allais vraiment utiliser.
Au total, j’ai gardé 24 feuillets griffonnés au crayon à papier, exemples d’interfaces et schémas de fonctionnement compris. Il me reste maintenant beaucoup de travail pour faire tenir la peau de la vache avant de commencer à coder (ça tombe bien, je suis célibataire les 3 prochaines semaines), mais le plus gros est là (NON je ne suis pas gros).
Évidemment, mon cas est très particulier puisque je suis à priori le seul destinataire de cette application. Cependant, en élargissant un tout petit peu, on arrive facilement à une application relativement grand public.
La morale de cette histoire (larirette larirette)
Puisque toute histoire doit être porteuse d’une morale et donner des leçons à retenir pour la vie de tous les jours, allons y gaiement.
La première, c’est qu’il est plus facile de concevoir une usine à gaz qui fait le café qu’un logiciel qui fait une chose, simplement. Il faut donc faire attention de ne pas s’éparpiller ni s’éloigner du sujet principal.
La seconde, c’est que la Speculative Generality ne s’applique pas qu’au code. Si vous n’avez pas besoin d’une fonctionnalité maintenant, mais que vous pensez en avoir besoin plus tard, laissez la de côté, même si elle ne semble avoir un impact limité en termes de développement, de performances ou de complexification de l’interface. Elle ne sera au final jamais comme vous l’aviez imaginée au premier abord, et il vous en coûtera beaucoup plus de changer l’existant que de redémarrer de zéro.
La dernière, c’est qu’il ne faut jamais perdre de vue à qui vous destinez votre application. Si vous commencez à concevoir des workflow complexes pour une application destinée à un seul utilisateur, c’est que vous vous êtes planté quelque part. Autant vous arrêter, reprendre votre travail du début, et reprendre la bonne route là où vous aviez commencé à dévier.
7 commentaires sur Concevoir une usine à gaz est plus simple qu'un logiciel qui ne fait qu'une seule chose simplement »
-
Rubix le 27 juillet 2009 à 07h40
YAGNI!
-
loopion le 27 juillet 2009 à 09h42
Tout à fait d’accord sur le processus de sélection des fonctionnalités (focus-targeting comme j’appelle ca) avec ce que tu dis cependant je n’irai pas jusqu’à dire que c’est plus compliqué à réaliser une application simple.
-
Mère Teresa le 27 juillet 2009 à 09h45
Allez, je me fends d’une petite citation “La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.” (Saint-Exupéry)
-
Olivier G. le 27 juillet 2009 à 12h24
“et mes reflex” : très joli lapsus (quand on sait ta passion pour la photo).
Et l’alcool ne réchauffe pas, bien au contraire, il accélère le refroidissement du corps en amenant le sang à la surface de la peau.
-
jojo le 27 juillet 2009 à 21h59
J’adore ce genre de style. J’ai juste été déçu que cela s’arrête aussi brutalement …
Jocelyn
-
Mr Xhark le 28 juillet 2009 à 01h23
D’accord avec toi. Aujourd’hui je trouve tout de même que le plus dur c’est de ré-inventer la roue pour s’apercevoir quelques temps après qu’un outil existe et qu’il fait la même chose en 2x mieux :)
Personnellement je suis chez Google Reader pour ma veille, mais il ne fait pas le café… ;p
-
Réagir à Concevoir une usine à gaz est plus simple qu'un logiciel qui ne fait qu'une seule chose simplement
Trackbacks sur Concevoir une usine à gaz est plus simple qu'un logiciel qui ne fait qu'une seule chose simplement
Les trackbacks sont fermés pour cause de spam.
