Illustration montrant les étapes WHY, HOW et WHAT appliquées à la création d’un menu burger : besoin utilisateur, logique algorithmique et code JavaScript correspondant.

Cas d’étude : L’approche “Algorithmique avant Code” appliquée au menu burger

Cet exemple illustre concrètement la méthodologie WHY → HOW → WHAT pour transformer un besoin utilisateur en solution technique.

Démo Interactive

Ce que vous verrez dans la démo :

  DESKTOP: Menu horizontal classique
  MOBILE: Icône burger (☰) → Clic → Menu coulissant + fond sombre
  ANIMATIONS: Transitions fluides, icône qui se transforme en ✕
  INTERACTIONS: Fermeture par clic ailleurs, sur lien, ou icône

Testez le menu burger pour voir le résultat final, puis découvrez le processus de conception algorithmique ci-dessous.


WHY – Pourquoi ? (Le Problème à Résoudre)

Contexte Utilisateur

Problème : Sur mobile, l’espace d’écran est limité. Un menu traditionnel horizontal prend trop de place et nuit à l’expérience utilisateur.

Besoin identifié :

  • Accéder rapidement à la navigation
  • Économiser l’espace d’écran
  • Maintenir une interface claire et intuitive
  • Respecter les conventions UX mobiles

Objectif final : Créer un système de navigation qui s’affiche/se cache à la demande pour optimiser l’espace sur petit écran.

Critères de Réussite

  • Menu invisible par défaut (économie d’espace)
  • Activation en un clic (accessibilité)
  • Animation fluide (expérience utilisateur)
  • Fermeture intuitive (clic ailleurs ou sur le menu)

HOW – Comment ? (La Logique Algorithmique)

Phase 1 : Analyse du Comportement Souhaité

Réflexion algorithmique : Commençons par observer ce qui se passe réellement.

Notre menu burger peut être dans deux situations différentes :

  • Situation 1 : Le menu est fermé (on ne voit que l’icône ☰)
  • Situation 2 : Le menu est ouvert (on voit la liste des liens)

Maintenant, réfléchissons aux conditions qui font changer ces situations :

Comment passer de “fermé” à “ouvert” ?

  • Quand je clique sur l’icône burger → le menu s’affiche
  • C’est une condition simple : “SI clic sur icône ET menu fermé ALORS ouvrir le menu”

Comment passer de “ouvert” à “fermé” ?

  • Quand je clique à nouveau sur l’icône → le menu se cache
  • Quand je clique ailleurs sur la page → le menu se cache
  • Quand je choisis un lien dans le menu → le menu se cache et je navigue

Ces trois cas donnent la condition : “SI menu ouvert ET (clic sur icône OU clic ailleurs OU clic sur lien) ALORS fermer le menu”

L’insight algorithmique : Notre menu est comme un interrupteur intelligent qui sait dans quel état il est et qui réagit différemment selon la situation !

Phase 2 : Décomposition Algorithmique

Maintenant qu’on comprend ce qui doit se passer, traduisons cette logique étape par étape :

Ce dont on a besoin pour “se souvenir” :

  • Une variable qui nous dit si le menu est ouvert ou fermé (comme un Post-it mental)
  • Les éléments HTML qu’on va manipuler (icône, panneau, fond)

Les deux comportements principaux :

Comportement 1 : Basculer le menu (ouvrir/fermer)

QUAND quelqu'un clique sur l'icône burger :
  JE REGARDE si le menu est actuellement fermé
    SI c'est fermé :
      JE montre le panneau du menu avec une animation
      JE montre un fond sombre derrière
      JE change l'icône ☰ en ✕
      JE note mentalement "le menu est maintenant ouvert"
    SINON (c'est qu'il est ouvert) :
      JE cache le panneau du menu avec une animation  
      JE cache le fond sombre
      JE change l'icône ✕ en ☰
      JE note mentalement "le menu est maintenant fermé"

Comportement 2 : Fermer le menu uniquement

QUAND quelqu'un clique ailleurs ou sur un lien :
  JE REGARDE si le menu est actuellement ouvert
    SI c'est ouvert :
      JE cache tout (panneau + fond)
      JE remet l'icône ☰
      JE note "le menu est fermé"
    SINON :
      JE ne fais rien (le menu est déjà fermé)

Cases particulières à gérer :

  • Si la fenêtre change de taille (mobile ↔ desktop) → forcer la fermeture
  • Si quelqu’un navigue au clavier → permettre de fermer avec “Échap”
  • Si une animation est en cours → éviter les conflits

Phase 3 : Gestion des Cas Limites

Questions qu’un développeur expérimenté se pose (et qu’un débutant doit apprendre à se poser) :

“Que se passe-t-il si…” :

  • L’utilisateur redimensionne sa fenêtre pendant que le menu est ouvert ? → Réponse : Fermer automatiquement le menu pour éviter des bugs visuels

  • Quelqu’un navigue uniquement au clavier (accessibilité) ? → Réponse : Permettre de fermer avec la touche “Échap”

  • L’utilisateur clique très rapidement plusieurs fois ? → Réponse : Éviter que les animations se chevauchent

  • La page se charge avec le menu déjà ouvert par erreur ? → Réponse : Toujours initialiser en mode “fermé”

Optimisations pour une meilleure expérience :

  • Animations fluides mais pas trop lentes (300ms maximum)
  • Pas de ralentissement sur les téléphones moins puissants
  • Possibilité d’interrompre une animation en cours

L’enseignement : Un bon algorithme anticipe les problèmes avant qu’ils arrivent !


WHAT – Quoi ? (L’Implémentation Code)


Bénéfices de cette Approche

Pour l’Apprenant

Compréhension Progressive :

  1. WHY → Comprend le besoin utilisateur et l’objectif
  2. HOW → Maîtrise la logique avant de coder
  3. WHAT → Traduit une logique claire en code technique

Résultat : Le code n’est plus mystérieux, c’est la traduction naturelle d’une logique comprise.

Pour le Formateur

Pédagogie Structurée :

  • Motivation maintenue (but clair dès le début)
  • Erreurs réduites (logique validée avant implémentation)
  • Transfert facilité (même méthode pour tous les projets)

Transférabilité

Cette même approche s’applique à :

  • Carrousel d’images → États (slide actuel) + Transitions (suivant/précédent)
  • Système de tabs → États (tab active) + Gestion contenu
  • Formulaire de contact → Validation + États d’envoi + Feedback

La logique algorithmique reste identique, seul le domaine d’application change.

Ressources Complémentaires


Points Clés de l’Exemple

  1. L’algorithme existe indépendamment du langage – On pourrait l’implémenter en React, Vue, ou vanilla JS
  2. La logique structure le code – Variables, fonctions et événements découlent directement de l’algorithme
  3. Les cas limites sont anticipés – Redimensionnement, accessibilité, performances
  4. Le code devient prévisible – Chaque ligne correspond à une étape algorithmique

Cette méthode transforme un développeur qui “copie des solutions” en un développeur qui “conçoit des solutions”.


Exemple créé pour illustrer l’article “L’algorithmique avant le code : repenser l’enseignement de la programmation”