Niveau 07 — Projets de consolidation
Objectif du niveau
Ce niveau n'introduit aucune notion nouvelle — et c'est voulu. À la fin, tu sais construire seul, de bout en bout, un programme en ligne de commande de 100 à 300 lignes qui combine tout ce qui précède : boucles, structures de données, fonctions, fichiers, exceptions, modules, et éventuellement une ou deux classes. Surtout, tu sais appliquer une méthode : partir d'un cahier des charges, découper en étapes, implémenter par incréments qui fonctionnent, puis relire ton propre code d'un œil critique.
Prérequis
- Niveaux 02 à 06 au complet — c'est le niveau qui vérifie qu'ils sont réellement acquis, pas seulement lus.
- Notions clés : découpage en fonctions (04-5), persistance fichier + gestion d'erreurs (05), organisation multi-fichiers (05-4), classes quand elles se justifient (06-5).
- Discipline Git du niveau 00 : chaque projet se termine par des commits propres.
Durée indicative et avertissement honnête
3 à 4 semaines, à raison d'un projet par période de 3–6 jours.
La difficulté de ce niveau n'est pas technique : chaque brique a déjà été vue. La difficulté, c'est la page blanche — pour la première fois, personne ne te dit « écris cette fonction ». Devant un énoncé de dix lignes, le réflexe débutant est soit de foncer dans le code sans plan (et de s'enliser au bout d'une heure), soit de rester paralysé. Les deux sont normaux et les deux se soignent avec la méthode enseignée ici : cahier des charges → découpage → implémentation incrémentale → relecture. Attends-toi aussi à redécouvrir des trous dans les niveaux précédents (souvent la mutabilité ou les chemins) : c'est exactement à ça que sert ce niveau — retourne relire, c'est prévu.
Leçons prévues
Chaque leçon suivra le template 17 sections (lessons/TEMPLATE_LECON.md). Ici, les « leçons » 07-2 → 07-5 sont des projets guidés dont le guidage diminue : très accompagné au début, quasi autonome à la fin. Les fiches détaillées des projets vivent dans /projects.
| N° | Titre | Notions couvertes | Statut |
|---|---|---|---|
| 07-1 | La méthode projet | Lire/écrire un cahier des charges, découper en fonctionnalités puis en fonctions, ordre d'implémentation (marcher avant de courir), incréments testables, relecture guidée d'un code fini | ✅ |
| 07-2 | Projet guidé : gestionnaire de tâches | Application complète avec persistance fichier — CRUD de tâches, statuts, sauvegarde/chargement, gestion d'erreurs ; guidage fort, étape par étape | ✅ |
| 07-3 | Projet guidé : carnet de contacts | Dicts + fichier, recherche, tri, détection de doublons, découpage en modules ; guidage moyen (le plan est donné, pas les fonctions) | ✅ |
| 07-4 | Projet guidé : quiz à questions | Banque de questions dans un fichier, score, catégories, rejouer les erreurs ; guidage léger (cahier des charges + jalons seulement) | ✅ |
| 07-5 | Projet quasi libre : analyseur de texte | Statistiques sur un fichier texte (mots, fréquences, lignes, recherche) ; cahier des charges fourni, découpage et implémentation en autonomie, relecture croisée avec la solution | ✅ |
Pièges et erreurs emblématiques du niveau
- Coder sans plan : ouvrir l'éditeur avant d'avoir écrit le découpage. Au bout d'une heure, tout est enchevêtré et on recommence. Le plan d'abord, toujours.
- Vouloir tout faire d'un coup : implémenter les six fonctionnalités avant de lancer le programme une seule fois. Règle du niveau : un incrément qui tourne toutes les 30–45 minutes.
- Le fichier unique de 250 lignes : oublier les modules du niveau 05 dès que le sujet devient concret.
- Réinventer au lieu de réutiliser : recoder une validation de saisie déjà écrite trois projets plus tôt au lieu d'en faire une fonction réutilisable.
- Sauter la relecture : « ça marche » n'est pas la fin du projet. La relecture critique (noms, doublons, cas limites) fait partie du cahier des charges de chaque projet.
- Commits fourre-tout : un seul commit « done » en fin de projet au lieu d'un commit par fonctionnalité.
Mini-projets du niveau
Ce niveau EST les projets — fiches complètes dans /projects.
- Gestionnaire de tâches — CRUD complet avec persistance fichier (07-2).
- Carnet de contacts — recherche, tri, doublons, multi-fichiers (07-3).
- Quiz puis analyseur de texte — guidage décroissant (07-4, 07-5) ; une extension libre au choix sur l'un des quatre pour finir.
Critères de sortie
- Devant un cahier des charges de dix lignes, je sais produire un découpage en fonctions/modules avant d'écrire du code.
- Je sais implémenter par incréments : à tout moment, mon programme se lance et fait quelque chose.
- Je sais faire persister des données dans un fichier et gérer le premier lancement (fichier absent) sans crash.
- Je sais organiser un projet en plusieurs modules avec un point d'entrée clair.
- Je sais relire mon code fini et trouver seul au moins trois choses à améliorer.
- Je sais reprendre un de MES projets une semaine plus tard et m'y retrouver.
- J'ai terminé au moins quatre projets de ce niveau, commités proprement (un commit par fonctionnalité).
Commit de fin de niveau
git add lessons/level-07-projets projects
git commit -m "project: complete level 07 consolidation projects"