Quelques principes de conception

La simplicité

Simplifiez.

Arrêtez-vous seulement quand il n'y a plus rien à enlever.

Utilisez le strict nécessaire, ni plus, ni moins.

Si vous avez un doute, c'est que vous n'en avez pas besoin.

Faire simple demande beaucoup de travail.

Ce que vous choisissez de ne pas faire importe plus que ce que vous choisissez de faire.

Ne résolvez pas un problème avant de l'avoir rencontré, il n'arrivera peut être jamais.

Le mieux est toujours l'ennemi du bien.

A priori, vous ne savez pas ce qui compte dans un système, a posteriori, tout deviendra évident.

Appuyez-vous donc sur les faits.

Expérimentez, mesurez et testez.

L'usage

Toute personne, machine ou programme qui interagit avec un système est un utilisateur.

Concevoir, c'est se mettre à leur place et prendre en compte leur point de vue.

Qu'ils soient alignés ou contradictoires, ils vous apprendrons toujours quelque chose.

Être sensible aux utilisateurs ne veut pas dire faire systématiquement ce qu'ils demandent.

Observez comment le système est utilisé.

Les actes sont plus forts que les mots.

Et vous en apprendrez plus en regardant leurs actions qu'en les écoutant.

Le jardin

Comme un jardin, un système demande un entretien permanent.

Il se développe de manière organique, et par nature, c'est un travail cyclique.

Vous vous battrez constamment contre l'entropie.

Laissez une mauvaise herbe et, en quelques mois, elle aura tout envahi.

La communication

Durant la conception et la vie d'un système, de nombreux artefacts seront écrits.

Il peut s'agir de codes, de tests, de spécifications, de documentations, de changes logs, de messages de commits, etc.

Tous ces artefacts ont pour objectifs de communiquer et de transmettre le plus d'idées, d'informations et de contextes possible.

Ils doivent être autodescriptifs, c'est à dire, lisibles, cohérents et complets.

Maximisez les informations qu'ils transmettent par tous les moyens.

Les artefacts doivent être écrits pour être lus par un être humain, surtout les programmes et les tests.

Qu'une machine puisse les exécuter n'est qu'un détail finalement.

Un artefact sera beaucoup plus souvent lu qu'écrit, et ce qui est clair aujourd'hui sera flou demain.

Alors tracez, documentez et posez à l'écrit le plus de chose possible.

Tout comme les artefacts qui le composent, la raison d'être d'un système est de communiquer efficacement son fonctionnement.

Les utilisateurs pourront se former un modèle mental et interagir avec lui.

L'importance de la communication ne s'arrête pas là.

D'après la loi de Conway : « Toute organisation qui conçoit un système, au sens large, concevra une structure qui sera la copie de la structure de communication de l’organisation ».

Penser un système sans penser l'environnement dans lequel on le conçoit est une impasse.

La structure de l'un est intimement liée à celle de l'autre.

L'organisation, les méthodes de travail, les moyens de communication, les process, la structure des équipes, la gestion de projet ne sont pas des choix neutres et gratuits.

Ils conditionnent en grande partie le champ des possibles.

Être conscient des implications que ces choix ou non-choix impliquent est une première étape.

Aligner le système avec son environnement de conception, ou vice versa, en est une seconde.

La souplesse

Un système s'apprécie avec le temps.

Peu importe ce qui se passe, il tiendra bon.

Il passe à l'échelle.

Il est élégant, facile à vivre et commode.

Avec lui, on s'étonne à quel point tout est facile.

C'est un mouvement, quelque chose de vivant.

Il est simple et souple à la fois.