Pourquoi la fiabilité compte plus que les fonctionnalités
Une fonctionnalité ne crée de la valeur que si les gens peuvent compter dessus. Avec le temps, j'ai appris que la fiabilité transforme le logiciel en produit.
Quand on construit un logiciel, ajouter de nouvelles fonctionnalités est extrêmement gratifiant. Un nouveau dashboard apparaît. Une nouvelle automatisation fonctionne. Une idée attendue depuis longtemps prend enfin vie.
Le progrès est visible, mesurable et satisfaisant.
La fiabilité, elle, paraît rarement excitante.
On ne se réveille pas en pensant à rendre un système plus élégant lors d'une reconnexion après une interruption réseau temporaire. On n'annonce pas fièrement qu'une consommation mémoire est devenue plus stable après plusieurs jours de fonctionnement continu.
Pourtant, au fil des années, je suis devenu convaincu que ces améliorations invisibles sont souvent celles qui comptent le plus.
Les fonctionnalités attirent l'attention
Tout produit logiciel commence par des fonctionnalités. Ce sont elles que les utilisateurs découvrent en premier. Ce sont elles que les captures d'écran montrent. Ce sont elles que les pages produit décrivent.
Sans fonctionnalités, il n'y a pas de produit.
Il est donc naturel de consacrer une grande partie des premiers efforts de développement à créer de nouvelles capacités. J'ai suivi exactement ce chemin en construisant Oblivion.
Chaque fonctionnalité terminée ressemblait à une étape supplémentaire vers la plateforme que j'imaginais.
La fiabilité construit la confiance
À un moment, quelque chose a changé. J'ai réalisé que les utilisateurs se souviennent rarement d'un logiciel à cause du nombre de fonctionnalités qu'il propose.
Ils se souviennent de son fonctionnement.
Se comporte-t-il de manière cohérente ? Peut-il récupérer après des situations inattendues ? Peut-on lui faire confiance pour continuer à fonctionner quand on ne le regarde pas ?
Ces questions sont devenues progressivement plus importantes que l'ajout d'une capacité supplémentaire.
Parce qu'une fonctionnalité qui fonctionne seulement la plupart du temps n'est pas vraiment une fonctionnalité. C'est une incertitude.
Le travail invisible
Un aspect de l'ingénierie reçoit très peu d'attention : la quantité de travail qui ne produit aucun changement visible.
Les utilisateurs ne remarquent pas une meilleure gestion des erreurs. Ils ne remarquent pas de meilleurs mécanismes de retry. Ils ne remarquent pas des processus background plus résilients.
Idéalement, ils ne remarquent rien du tout. Ironiquement, c'est souvent le signe que tout fonctionne exactement comme prévu.
Une bonne ingénierie consiste souvent à empêcher les problèmes d'exister avant que quelqu'un ait l'occasion de les rencontrer.
La fiabilité est cumulative
Une autre leçon m'a surpris. La fiabilité est rarement obtenue par une seule grande amélioration.
Elle émerge plutôt de centaines de petites décisions.
Une validation plus claire ici. Un meilleur timeout là. Un processus de récupération plus sûr. Un message de log plus informatif.
Aucun de ces changements ne transforme le produit à lui seul. Ensemble, ils changent profondément le niveau de confiance que la plateforme inspire.
Comme les intérêts composés, les petites améliorations d'ingénierie s'accumulent avec le temps.
Apprendre à dire non
Se concentrer sur la fiabilité change aussi la manière d'évaluer les fonctionnalités.
Il y a eu des moments où je voulais construire quelque chose de nouveau simplement parce que l'idée semblait intéressante.
Plus d'options. Plus d'automatisation. Plus de possibilités.
Parfois, la bonne décision était de reporter ces idées. Pas parce qu'elles manquaient de valeur, mais parce que rendre l'existant plus fiable créait plus de valeur pour chaque utilisateur.
Ce changement de mentalité n'était pas facile. Construire de nouvelles choses est bien plus plaisant que raffiner celles qui existent déjà.
Mais un logiciel mature a besoin des deux.
Un produit est plus que ses capacités
Aujourd'hui, je pense au logiciel un peu différemment. Les fonctionnalités définissent ce qu'un produit peut faire. La fiabilité définit si les gens acceptent d'en dépendre.
L'un sans l'autre est incomplet.
Une plateforme avec peu de fonctionnalités mais une fiabilité exceptionnelle crée souvent une meilleure expérience qu'une plateforme remplie de capacités au comportement imprévisible.
Cette prise de conscience a progressivement influencé presque toutes les décisions que j'ai prises en construisant Oblivion.
Quand je devais choisir entre une fonctionnalité supplémentaire et rendre la plateforme existante plus fiable, la réponse devenait de plus en plus évidente.
Avec le recul
Si quelqu'un me demandait aujourd'hui ce qui transforme un logiciel en produit, je ne répondrais pas "plus de fonctionnalités".
Je répondrais "plus de confiance".
La confiance que la plateforme continuera à tourner demain. La confiance que les situations inattendues ont été anticipées. La confiance que le logiciel se comporte de manière cohérente, même quand les conditions sont moins qu'idéales.
Les fonctionnalités peuvent attirer les utilisateurs la première fois. La fiabilité est ce qui les convainc de rester.