Développement
- Commencer petit puis étendre : lors de la création d’un nouveau système ou de l’ajout de fonctionnalités à un système existant, commencer par une version très simple avec presque aucune fonctionnalité nécessaire, puis l’étendre progressivement
- Modifier une seule chose à la fois : lorsqu’un test échoue ou qu’une fonctionnalité ne fonctionne pas pendant le développement, il est bien plus facile de trouver le problème si un seul changement a été effectué à la fois
- Ajouter tôt la journalisation et la gestion des erreurs : lors du développement d’un nouveau système, il est utile d’ajouter dès le départ la journalisation et la gestion des erreurs
- Chaque nouvelle ligne de code doit être exécutée au moins une fois : il faut tester avant que la fonctionnalité soit terminée
- Tester les parties avant de tester l’ensemble : des parties bien testées font gagner du temps
- Tout prend plus de temps que prévu : surtout en programmation, cela prend plus de temps qu’on ne l’imagine
- Comprendre d’abord le code existant : avant d’ajouter une nouvelle fonctionnalité, il faut comprendre la solution actuelle. Lire du code est une compétence aussi nécessaire qu’en écrire
- Lire et exécuter : il existe deux approches complémentaires pour comprendre du code : le lire et l’exécuter
Résolution de problèmes
- Les bugs existent toujours : l’approche consistant à « faire juste du premier coup » n’est pas une bonne méthode
- Traiter les rapports de problème : les développeurs doivent consacrer du temps au traitement des signalements de clients et à la correction des bugs. Cela permet de beaucoup mieux comprendre ce que les clients essaient de faire, comment le système est utilisé, à quel point la résolution des problèmes est facile ou difficile, et dans quelle mesure le système est bien conçu
- Reproduire le problème : la première étape pour corriger un bug consiste à reproduire le problème. Ensuite, une fois le correctif ajouté, vérifier que le problème a disparu
- Vérifier ce qui reste après avoir corrigé les erreurs connues : lorsqu’il y a plusieurs problèmes, corriger d’abord tous les problèmes connus puis vérifier les symptômes restants
- Supposer qu’il n’y a pas de coïncidence : lors des tests et de la résolution de problèmes, ne pas croire au hasard, mais enquêter. « J’ai changé la valeur du timer et maintenant le système redémarre plus souvent : ce n’est pas une coïncidence. Une nouvelle fonctionnalité a été ajoutée et une autre fonctionnalité non liée devient plus lente ? Ce n’est pas une coïncidence. Il faut investiguer davantage »
- Corréler avec les horodatages : lors de la résolution de problèmes, utiliser les horodatages des événements
Collaboration
- Le face-à-face offre la plus grande bande passante : pour discuter de la manière de résoudre un problème, le face-à-face est préférable à toutes les autres méthodes (vidéo, téléphone, chat, e-mail)
- Rubber duck debugging : lorsqu’on est bloqué sur un problème, l’expliquer à un collègue permet souvent de trouver la solution. Même si le collègue ne dit rien, le simple fait d’en parler permet souvent de comprendre où se situe le problème. Cela semble magique, mais cela fonctionne étonnamment souvent
- Demander : pour comprendre du code, lire et exécuter est souvent une bonne méthode. Mais s’il est possible de demander à quelqu’un qui connaît le sujet (probablement l’auteur d’origine), il faut aussi utiliser cette option
- Partager le mérite : rendre le mérite à qui il revient. Au lieu de dire « nous avons essayé... », dire « Marcus a eu l’idée d’essayer... » (si c’est bien le cas). Mentionner activement les personnes qui ont aidé ou contribué
Divers
- Essayer : lorsqu’on n’est pas sûr du fonctionnement d’une fonctionnalité d’un langage, écrire un petit programme pour la tester
- Dormir : face à un problème difficile, il est bon de laisser passer une nuit avant de prendre une décision
- Changement : ne pas avoir peur de changer de rôle ou de travail de temps en temps. Travailler avec d’autres personnes, sur d’autres produits ou dans d’autres entreprises est stimulant
- Continuer à apprendre : l’un des plus grands avantages du développement logiciel est qu’il y a toujours davantage à apprendre et à découvrir. Essayez différents langages de programmation et outils, lisez des livres sur le développement logiciel et suivez des MOOC. De petites améliorations accumulées apportent une vraie différence à vos connaissances et à vos compétences
7 commentaires
Le face-à-face offre la bande passante la plus élevée — c’est une excellente formulation.
+1.
Débogage avec un canard en plastique. Le simple fait d'expliquer à quelqu'un qui ne connaît pas vraiment la programmation permet parfois de comprendre où se situe le problème.
+1.
C’est une véritable mine d’or.
+1
Waouh, ce ne sont que de bonnes paroles. C’est dommage que le face-à-face ait la bande passante la plus élevée ; j’espère que la technologie progressera encore davantage.