Écrire du code pour les ordinateurs est difficile, mais écrire du code pour les humains l’est encore plus
- Écrire du code pour les ordinateurs est déjà difficile, car il faut décomposer de grands objectifs métier en petites instructions logiques.
- Mais écrire du code pour les humains est encore plus difficile. C’est un travail à la croisée de l’informatique et de la psychologie.
- Comme l’a dit Richard Feynman, imaginez à quel point la physique serait difficile si les électrons avaient des émotions. C’est une bonne manière d’expliquer la programmation destinée aux humains.
Le démarrage fait partie du produit
- Écouter les retours des utilisateurs est important, mais la plupart de ces retours viennent de power users qui utilisent souvent le produit.
- Il existe un biais de survie. On entend rarement les retours des utilisateurs qui n’ont même pas commencé.
- Les produits grand public optimisent depuis longtemps leur processus d’onboarding. Les outils de développement devraient faire de même.
- Il faut considérer l’onboarding comme une partie du produit, réduire au minimum la configuration et permettre à l’utilisateur de se servir du produit en quelques minutes.
Les humains apprennent à partir d’exemples, pas de « concepts de base »
- Les humains excellent dans la reconnaissance de motifs, alors que les ordinateurs suivent une logique stricte.
- La documentation de nombreux outils de développement est écrite comme un programme informatique. Ce n’est pas adapté aux humains.
- Apprendre à partir d’exemples est plus efficace. Les exemples aident les utilisateurs à comprendre l’outil.
Tomber dans le piège du succès
- En programmation, le mode par défaut consiste à corriger des erreurs. Les utilisateurs passent la majeure partie de leur temps à les corriger.
- Il est important d’orienter les erreurs vers la réussite.
- Il faut transformer les erreurs en opportunités pour guider l’utilisateur vers le bon chemin. Il faut inclure des snippets de code dans la gestion des exceptions et fournir de l’aide via les messages d’avertissement.
Éviter la surcharge conceptuelle
- Le fait de devoir comprendre de nouveaux concepts crée des frictions.
- Comprendre 2 ou 3 concepts est acceptable, mais devoir en apprendre 8 nouveaux devient lourd.
- L’idéal est un framework qui offre des fonctionnalités puissantes avec peu de concepts. Par exemple, React propose une grande puissance avec quelques concepts simples.
Le principe du canard conceptuel
- Lorsqu’on introduit un nouveau concept, il est important d’utiliser des termes familiers pour l’utilisateur.
- Par exemple, il vaut mieux appeler « fonction » le fait d’évaluer une nouvelle valeur. Cela permet à l’utilisateur de s’appuyer sur son modèle mental existant.
Programmabilité
- Les utilisateurs vont réaliser des tâches créatives dans la base de code.
- Presque tout dans un framework devrait être « programmable ».
- Il faut permettre les appels directs dans le code plutôt que via une CLI, et transformer la configuration en SDK ou en API.
Il faut se méfier de la magie, des valeurs par défaut et du sucre syntaxique
- Les valeurs par défaut et les fonctionnalités magiques doivent être introduites avec prudence.
- Si une valeur par défaut ne s’applique pas dans plus de 97 % des cas, ou si une fonctionnalité magique n’est pas valable dans plus de 99 % des cas, il vaut mieux éviter de l’introduire.
- Le code n’est pas du golf. Il ne faut pas viser le minimum de code écrit, mais privilégier la lisibilité.
Écrire du code pour les humains est difficile
- La plupart des choses devraient être immuables.
- Il faut éviter le « scaffolding » (génération de code).
- Il faut rendre la boucle de feedback extrêmement rapide.
- Il faut prévoir une procédure de suppression pour que l’utilisateur puisse revenir en arrière facilement.
- Il faut utiliser des tests automatiques pour les snippets de code dans la documentation et les exemples.
Résumé de GN⁺
- Cet article traite de la difficulté d’écrire du code pour les humains et des moyens d’y remédier.
- Il est important de créer des outils de développement conviviaux, et cela commence dès le processus d’onboarding.
- L’apprentissage par l’exemple est efficace, et le fait d’orienter les erreurs vers la réussite est essentiel.
- Lorsqu’on introduit de nouveaux concepts, il faut utiliser des termes familiers pour l’utilisateur et penser à la programmabilité.
- Les valeurs par défaut et les fonctionnalités magiques doivent être introduites avec prudence, et la lisibilité doit primer.
1 commentaires
Avis sur Hacker News
Les gens apprennent chacun différemment
L’écriture et l’empathie sont importantes
Tout le monde n’apprend pas à partir d’exemples
Le code est écrit pour les humains
Citation de Code Complete
Écrire du code, c’est pour les humains
Avis sur l’évolution des IDE
Promotion d’un billet de blog
Avis sur la manière d’apprendre la programmation
Importance des exemples et des concepts clés