Méthodologie

Face à un défi à réaliser ou un problème à résoudre, une méthodologie de travail structurée permet d'atteindre une solution satisfaisante efficacement!


😎 Attitude

Garder une attitude positive rend l'expérience plus agréable et enrichissante

  • Il existe une solution rationnelle et logique, il ne faut pas se décourager
  • Le but est de comprendre, pas simplement de trouver un correctif rapidement
  • La frustration empêche de comprendre, gardez votre calme
  • N'hésitez pas à demander de l'aide au besoin

👀 Identification

Avant de passer à l'action, il faut s'assurer d'avoir la vision d'ensemble du projet

  • S'approprier le projet pour comprendre son objectif global

  • Comprendre le comportement problématique et être capable de le reproduire
    • Manipulations et étapes à effectuer pour déclencher le problème
    • Valeur des données ou paramètres concernés

📝 Préparation

La première étape de la réalisation consiste à mettre en place un environnement de travail fonctionnel, propice à l'expérimentation

  • Faire une copie ou une branche distincte

  • S'approprier et comprendre le code existant
    • Expérimenter différentes fonctionnalités
    • Lecture du code, structure et standards
    • Consulter la documentation des librairies utilisées
    • Tester les fonctionnalités dans un environnement minimal ou REPL

  • Repérer les autres sources d'information pertinentes: logs, stack trace, crash report

🔎 Enquête

Pour trouver la source du problème, plusieurs stratégies sont à votre disposition

  • Isoler le problème
    • À partir d'un exemple minimal fonctionnel, ajouter les fonctionnalités du programme jusqu'à ce que le problème se déclenche
    • Mettre en place une mécanique qui provoque le problème rapidement, ex: appel de fonction avec des paramètres fautifs, test unitaire

  • Comprendre l'état du système
    • Affichage de points de références, variables, séquence d'événement, conditionnellement
    • Faire la trace du code
    • Utiliser le débogueur
    • Modifier l'affichage pour constater l'état, ex: bordure rouge sur un élément, inclure des données supplémentaire
    • Identifier les outils spécifiques pouvant aider à résoudre le bogue

  • Consulter les fichiers de journalisation: logs, stack trace, crash report
    • Identifier les mots clés pertinents, ex: pas de nom de fichier spécifiques au projet

  • Procéder par élimination pour identifier la source du problème
    • Émettre des hypothèses et les valider
    • Commenter le code pas à pas pour identifier ce qui fonctionne
    • Vérifier une chose à la fois
    • Noter ce qui a été essayé et le résultat

  • Formuler des questions pour cerner les interrogations
  • Consulter les issues du projet sur GitHub
  • Conserver les références utilisées

  • Schématiser le problème ou l'algorithme
  • Verbaliser en expliquant à voix haute ou par écrit
  • Demander à un collègue ou un enseignant

  • Dans une impasse, prendre une pause

🎉 Résolution

Le plus dur est accompli, il ne reste qu'à peaufiner la solution

  • Prendre le temps de célébrer

  • Vérifier que la solution ne produit pas d'effets indésirables

  • Améliorer et refactoriser la solution trouvée
  • Demander des commentaires ou rétroactions

  • Vérifier que la solution ne produit pas d'effets indésirables