Chapitre en accès libre
Apprendre seul : organiser ses sessions et la règle des 20 minutes
12 min de travail — lecture et pratique
Personne ne va vous demander où vous en êtes. Pas de session live, pas de formateur qui relance, pas de groupe qui avance à côté de vous. C’est le point faible d’un cours qu’on suit seul, et c’est précisément ce que ce chapitre traite : le dispositif concret qui remplace la présence d’un formateur.
Ce chapitre ne vous apprend pas Java. Il vous donne la méthode de travail sans laquelle le reste ne tiendra pas : comment découper vos sessions, combien de temps insister quand vous bloquez, comment demander de l’aide de façon à obtenir une réponse utile, et à quel rythme avancer.
Comptez une douzaine de minutes : environ sept de lecture, cinq de mise en place. À la fin, vous aurez créé deux fichiers sur votre disque. C’est le critère de réussite, il est en bas de page.
La charge de travail : environ 87 heures
Le parcours à suivre en autonomie est estimé à environ 87 heures de travail apprenant. Ce n’est pas une durée de vidéo — ce cours n’en contient aucune — c’est du temps passé à lire, à écrire du code et à le faire tourner.
Deux précisions honnêtes.
D’abord, ces 87 heures sont une estimation moyenne, pas une garantie. Si vous n’avez jamais programmé, certains chapitres vous prendront plus. Si vous venez du test manuel et que vous avez déjà écrit un script, certains vous prendront moins. Votre total réel vous appartient.
Ensuite, l’abandon est un résultat possible. Un cours asynchrone ne se termine pas tout seul. Nous ne vous promettons rien sur ce point : nous vous donnons la méthode qui organise le travail, et nous vous disons plus bas comment repérer que vous êtes en train de décrocher.
Choisir un rythme, une fois
Le rythme se décide maintenant, pas chaque semaine. Une décision hebdomadaire est une occasion hebdomadaire de reporter.
| Rythme hebdomadaire | Durée totale | À quoi ça ressemble |
|---|---|---|
| 3 h / semaine | ~30 semaines | 2 sessions de 1 h 30, en soirée |
| 5 h / semaine | ~18 semaines | 2 soirées + 1 créneau le week-end |
| 8 h / semaine | ~11 semaines | 3 soirées + 1 demi-journée |
| 12 h / semaine | ~8 semaines | Rythme soutenu, à réserver à une période dégagée |
Trois règles autour de ce choix.
- Choisissez le rythme que vous tiendrez une mauvaise semaine, pas celui que vous tiendrez une bonne. Si 5 h tient en semaine chargée, prenez 5 h, même si vous pouvez faire 10 h aujourd’hui.
- Posez les créneaux dans votre agenda, avec un jour et une heure. « Le soir » n’est pas un créneau. « Mardi et jeudi, 20 h 30 à 22 h » en est un.
- La régularité passe avant le volume. Trois heures par semaine tenues pendant sept mois couvrent les 87 heures. Douze heures pendant deux semaines puis plus rien en couvrent 24, et il faudra en réapprendre une partie au moment de reprendre.
L’unité de travail : la session
L’unité n’est pas le chapitre, c’est la session. Une session utile dure entre 45 et 90 minutes. En dessous de 45 minutes, la remise en contexte — rouvrir le projet, retrouver où vous en étiez, relancer l’outil — prend une part disproportionnée de la séance. Au-delà de 90 minutes sans pause, on continue à taper, mais l’attention n’est plus la même.
Le format de référence, celui que nous vous proposons : 50 minutes de travail, 10 minutes de pause, et on s’arrête après deux ou trois blocs.
Les cinq premières minutes
Avant d’écrire la moindre ligne :
- Relisez la dernière entrée de votre journal de bord (voir plus bas). Vous saurez en trente secondes où vous en étiez.
- Écrivez l’objectif de la session, en une phrase, au présent. Par exemple : « faire tourner le premier exemple de boucle du chapitre en cours et obtenir la sortie annoncée ». Pas « avancer sur les boucles ».
- Vérifiez que l’objectif est atteignable dans la session. Si vous ne savez pas, il est trop gros : coupez-le en deux.
Les cinq dernières minutes
Ne terminez jamais une session en fermant brutalement l’éditeur.
- Écrivez trois lignes dans le journal : ce qui marche, ce qui ne marche pas, la première chose à faire la prochaine fois.
- Si possible, arrêtez-vous au milieu de quelque chose qui fonctionne à moitié, pas juste après avoir tout terminé. Reprendre un chantier ouvert demande moins d’élan que redémarrer sur une page blanche.
La règle des 20 minutes
Vous allez bloquer. Pas peut-être : vous allez bloquer, plusieurs fois par chapitre dès que vous écrirez du code, et c’est le fonctionnement normal du métier. Ce qui sépare une progression d’un abandon, ce n’est pas la fréquence des blocages, c’est ce que vous en faites.
La règle est la suivante.
Quand vous êtes bloqué, vous cherchez seul pendant 20 minutes, chronomètre lancé. À la 21e minute, vous arrêtez de chercher et vous écrivez votre demande d’aide.
Pourquoi 20 et pas 5, pourquoi 20 et pas 2 heures ? En dessous, on n’a souvent pas encore lu le message d’erreur en entier, et on demande de l’aide pour un problème que sa lecture aurait réglé. Au-delà, la recherche se transforme facilement en répétition : on relance le même test, on relit le même bout de code. Les 20 minutes sont une borne arbitraire, et nous l’assumons. Sa valeur n’est pas dans le chiffre, elle est dans le fait qu’il y ait une borne.
Lancez un vrai chronomètre. Le téléphone, le minuteur de votre système, peu importe. Sans chronomètre, 20 minutes deviennent 90 minutes, et 90 minutes de piétinement, c’est autant de place en moins pour la séance suivante.
Les quatre gestes des 20 minutes
Ces vingt minutes ne sont pas du hasard. Dans l’ordre :
- Lire le message d’erreur en entier. Pas la première ligne : tout, jusqu’au bas de la pile. La ligne qui vous intéresse est celle qui cite votre fichier. Dans l’exemple ci-dessous, c’est
at Demo.main(Demo.java:4): le problème est à la ligne 4 de votre fichier, pas dans les classes du JDK au-dessus. - Isoler. Quelle est la dernière chose qui fonctionnait ? Qu’avez-vous changé depuis ? Si la réponse est « beaucoup de choses », revenez en arrière jusqu’à ce que ça remarche.
- Reproduire au minimum. Recréez le problème dans le plus petit programme possible. En retirant le superflu, on voit souvent la cause apparaître d’elle-même.
- Chercher avec les bons mots. On ne cherche pas « mon test ne marche pas ». On copie la ligne d’exception, on retire ce qui est propre à vous (chemins, noms de vos classes) et on cherche le reste.
L’exercice : un blocage réel, de bout en bout
Cet exercice suppose un JDK 11 ou plus récent installé sur votre machine. Ce n’est pas encore le cas ? C’est normal à ce stade du parcours : l’installation est traitée dans le module « Votre poste de travail ». Lisez l’exercice maintenant, notez-le dans votre journal, et exécutez-le juste après l’installation. Le reste du chapitre ne dépend pas de lui.
Créez un fichier Demo.java, par exemple dans le dossier stratlearn-n1 que vous allez créer plus bas :
public class Demo {
public static void main(String[] args) {
String saisie = " 12";
int valeur = Integer.parseInt(saisie);
System.out.println(valeur * 2);
}
}
Placez-vous dans le dossier qui contient le fichier, puis exécutez-le. Depuis un JDK 11, un fichier source unique se lance sans compilation préalable.
Sur macOS ou Linux :
mkdir -p ~/stratlearn-n1
cd ~/stratlearn-n1
java Demo.java
Sur Windows (PowerShell) :
New-Item -ItemType Directory -Force -Path "$HOME\stratlearn-n1"
cd "$HOME\stratlearn-n1"
java Demo.java
Vous devez obtenir une trace de cette forme :
Exception in thread "main" java.lang.NumberFormatException: For input string: " 12"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Demo.main(Demo.java:4)
Les numéros de ligne des classes java.base dépendent de la version exacte de votre JDK et ne seront pas forcément ceux-là : ce n’est pas eux qui comptent. Ce qui compte, et qui doit être identique chez vous : la première ligne For input string: " 12" — avec l’espace visible entre les guillemets — et la dernière, at Demo.main(Demo.java:4).
Si vous obtenez autre chose :
| Ce que vous voyez | Cause probable | Ce que vous faites |
|---|---|---|
java : commande introuvable ou 'java' n'est pas reconnu... |
Aucun JDK installé, ou absent du PATH | Reprenez après le module « Votre poste de travail » |
Error: Could not find or load main class Demo.java (ou sa traduction française) |
Vous n’êtes pas dans le dossier du fichier, ou votre JDK est antérieur à 11 | Vérifiez le dossier avec ls (macOS, Linux) ou dir (Windows). Vérifiez la version avec java -version ; si elle est inférieure à 11, compilez d’abord avec javac Demo.java puis lancez java Demo, sans extension |
Une erreur de compilation citant Demo.java |
Une ligne du code a été recopiée avec un guillemet courbe, ou une accolade manque | Recopiez le bloc entier depuis cette page, sans le retaper |
Le geste 1 vous donne la cause : la chaîne contient une espace, et Integer.parseInt ne l’accepte pas. Le geste 4 vous donne la requête à taper dans un moteur de recherche : java NumberFormatException For input string parseInt space. Et voici la correction :
public class Demo {
public static void main(String[] args) {
String saisie = " 12";
int valeur = Integer.parseInt(saisie.trim());
System.out.println(valeur * 2);
}
}
Relancez la même commande : la sortie doit être exactement 24, sans aucune autre ligne.
Deux blocages, deux traitements
La règle des 20 minutes vaut pour un blocage technique : ça ne compile pas, ça plante, le résultat n’est pas celui attendu. Il y a une réponse, et elle est atteignable.
Un blocage de compréhension — « je ne vois pas à quoi sert une interface » — ne se traite pas au chronomètre. Insister trente minutes de plus a peu de chances de le débloquer. Notez la question dans votre journal, continuez le chapitre, et revenez dessus deux ou trois chapitres plus loin : certaines notions s’éclairent une fois qu’on les a utilisées sans les avoir comprises. Si elle reste opaque après ce détour, alors posez-la.
Écrire une demande d’aide exploitable
Une demande mal posée obtient soit rien, soit une question en retour : un aller-retour perdu, et souvent une séance de travail avec. Une demande bien posée obtient une réponse utilisable. La différence n’est pas la politesse, c’est la quantité d’informations vérifiables.
Le gabarit
Six blocs, à remplir dans l’ordre :
1. OBJECTIF : ce que je veux obtenir (une phrase)
2. CONTEXTE : module / chapitre, et la commande exacte que je lance
3. ATTENDU : ce que je devrais voir
4. OBTENU : le message d'erreur COMPLET, copie en texte, pas en capture
5. ENVIRONNEMENT : mon OS, et la sortie de java -version (plus mvn -v si Maven est en jeu)
6. DEJA ESSAYE : 3 pistes testees et leur resultat
Enregistrez-le maintenant, vous le remplirez à chaque blocage. Sur macOS ou Linux :
mkdir -p ~/stratlearn-n1
cat > ~/stratlearn-n1/AIDE.md <<'EOF'
1. OBJECTIF : ce que je veux obtenir (une phrase)
2. CONTEXTE : module / chapitre, et la commande exacte que je lance
3. ATTENDU : ce que je devrais voir
4. OBTENU : le message d'erreur COMPLET, copie en texte, pas en capture
5. ENVIRONNEMENT : mon OS, et la sortie de java -version (plus mvn -v si Maven est en jeu)
6. DEJA ESSAYE : 3 pistes testees et leur resultat
EOF
cat ~/stratlearn-n1/AIDE.md
Sur Windows (PowerShell) :
New-Item -ItemType Directory -Force -Path "$HOME\stratlearn-n1"
@'
1. OBJECTIF : ce que je veux obtenir (une phrase)
2. CONTEXTE : module / chapitre, et la commande exacte que je lance
3. ATTENDU : ce que je devrais voir
4. OBTENU : le message d'erreur COMPLET, copie en texte, pas en capture
5. ENVIRONNEMENT : mon OS, et la sortie de java -version (plus mvn -v si Maven est en jeu)
6. DEJA ESSAYE : 3 pistes testees et leur resultat
'@ | Set-Content -Path "$HOME\stratlearn-n1\AIDE.md"
Get-Content "$HOME\stratlearn-n1\AIDE.md"
Dans les deux cas, la dernière commande doit réafficher les six lignes. Si elle n’affiche rien, le fichier n’a pas été écrit : vérifiez vos droits d’écriture dans votre dossier personnel, ou choisissez un autre emplacement et adaptez le chemin.
Pour le bloc 5, la commande s’écrit de la même façon dans un terminal Windows, macOS ou Linux :
java -version
Copiez sa sortie telle quelle, sans la résumer. Elle montre la version réellement utilisée par votre machine, qui n’est pas toujours celle que vous croyez avoir installée : c’est une source fréquente de malentendus dans une demande d’aide.
Le même problème, mal posé puis bien posé
Mal posé :
Bonjour, mon code Java marche pas, j'ai une erreur avec les nombres.
Quelqu'un peut m'aider svp ?
Personne ne peut répondre à ça. Il n’y a ni code, ni message, ni version.
Bien posé :
mkdir -p ~/stratlearn-n1
cd ~/stratlearn-n1
java Demo.java0
Remarquez ce qui s’est passé : en remplissant le bloc 6, l’auteur a trouvé la cause tout seul. Cela arrive, et c’est la raison pour laquelle on écrit la demande avant de l’envoyer. Écrivez-la toujours en entier, même si vous pensez la résoudre en route. Si elle se résout, tant mieux ; sinon, elle est prête.
Ce gabarit sert partout : sur le canal d’entraide de votre espace apprenant, sur un forum public, auprès d’un collègue, ou face à un assistant IA. Un assistant IA a besoin des mêmes éléments qu’un humain : sans le message d’erreur complet, la commande et la version, il devine.
Et gardez en tête une limite : une réponse qui vous donne le code corrigé sans que vous compreniez la cause ne vous a rien appris. Avant de recoller un correctif, exigez de savoir pourquoi le précédent échouait.
Le journal de bord
Un fichier texte, une entrée par session, quatre lignes. C’est le seul outil de suivi de ce parcours, et il remplace ce que le formateur gardait en tête pour vous.
Créez-le maintenant, à côté du gabarit d’aide.
Sur macOS ou Linux :
mkdir -p ~/stratlearn-n1
printf '# Journal de bord - Niveau 1\n\n' > ~/stratlearn-n1/JOURNAL.md
cat ~/stratlearn-n1/JOURNAL.md
Sur Windows (PowerShell) :
New-Item -ItemType Directory -Force -Path "$HOME\stratlearn-n1"
Set-Content -Path "$HOME\stratlearn-n1\JOURNAL.md" -Value "# Journal de bord - Niveau 1"
Get-Content "$HOME\stratlearn-n1\JOURNAL.md"
Dans les deux cas, la dernière commande doit afficher la ligne # Journal de bord - Niveau 1. Si elle n’affiche rien, le fichier n’a pas été écrit : vérifiez vos droits d’écriture dans votre dossier personnel, ou choisissez un autre emplacement.
Écrivez tout de suite votre première ligne : le rythme que vous venez de choisir, avec les créneaux. Sur macOS ou Linux :
printf 'RYTHME : 5 h / semaine - mardi et jeudi 20h30-22h\n' >> ~/stratlearn-n1/JOURNAL.md
cat ~/stratlearn-n1/JOURNAL.md
Sur Windows (PowerShell) :
Add-Content -Path "$HOME\stratlearn-n1\JOURNAL.md" -Value "RYTHME : 5 h / semaine - mardi et jeudi 20h30-22h"
Get-Content "$HOME\stratlearn-n1\JOURNAL.md"
Remplacez évidemment la valeur par la vôtre. La commande doit maintenant afficher deux lignes : le titre et votre rythme.
Le format d’une entrée, à recopier à chaque fin de session :
## 2026-09-16 - 21h00 a 22h00 - Java, les boucles
FAIT : les 4 premiers exercices, sorties conformes.
BLOQUE : je ne comprends pas pourquoi le for imbrique s'arrete a 3.
SUIVANT : reprendre l'exercice 5 avec un println dans la boucle interne.
Ce fichier sert trois choses : reprendre vite, voir votre progression les jours où vous avez l’impression de stagner, et alimenter le bloc « DEJA ESSAYE » de vos demandes d’aide.
Les trois signaux de décrochage
Le décrochage ne survient pas d’un coup, il s’installe. Trois signaux, et la réponse associée.
| Signal | Ce qui se passe | Quoi faire |
|---|---|---|
| Deux créneaux consécutifs sautés | Le signal le plus simple à constater : il se lit dans votre agenda, pas dans votre motivation. | Reprenez sur une session de 25 minutes, volontairement plus courte que votre format habituel, et pas sur un rattrapage. L’objectif est de rouvrir le projet, pas d’avancer. |
| Vous relisez sans jamais taper | Lire du code donne le sentiment de comprendre, et ce sentiment ne se vérifie qu’au clavier. | Fermez le chapitre. Réécrivez de mémoire le dernier exemple qui tournait. L’écart apparaît immédiatement. |
| Le même blocage trois sessions de suite | La règle des 20 minutes n’a pas été appliquée, ou la demande d’aide n’a pas été envoyée. | Envoyez la demande. Puis passez au chapitre suivant et revenez-y ensuite. Rester bloqué n’est pas un effort, c’est un arrêt. |
Et si vous avez déjà décroché depuis plusieurs semaines : ne reprenez pas au début. Reprenez au chapitre où votre journal s’arrête, refaites le dernier exercice qui tournait, puis continuez.
Ce que vous devez avoir maintenant
Critère de réussite de ce chapitre, vérifiable en une minute :
- Un fichier
JOURNAL.mdexiste sur votre disque, et l’afficher montre la ligne# Journal de bord - Niveau 1. - Ce même fichier contient votre ligne de rythme, par exemple
RYTHME : 5 h / semaine - mardi et jeudi 20h30-22h. - Un fichier
AIDE.mdexiste et contient les six blocs du gabarit. - Ces créneaux sont posés dans votre agenda, avec un rappel.
- Si le JDK est déjà installé : vous avez exécuté les deux versions de
Demo.java, la première afficheNumberFormatException: For input string: " 12", la seconde affiche24. Sinon, la ligneSUIVANT : faire l'exercice Demo.javafigure dans votre journal.
Si l’un des cinq manque, faites-le maintenant. Cinq minutes ici valent mieux qu’un décrochage dans trois semaines.
Ce que ce chapitre ne couvre pas
- L’installation de l’environnement (JDK 11, VS Code, Maven 3). Elle fait l’objet du module « Votre poste de travail », avec les commandes et les vérifications par système, et le dépannage des pannes courantes.
- Les techniques de débogage proprement dites : lire une pile d’exception en profondeur, poser des points d’arrêt, utiliser le débogueur de VS Code. Ce chapitre vous dit quand arrêter de chercher, pas comment chercher plus finement.
- Le contenu technique du parcours : algorithmique, Java, POO, HTML et localisateurs, Selenium 4, TestNG. Rien de tout cela n’est abordé ici.
- Le niveau de support associé à votre formule. Les canaux d’aide et leurs délais de réponse dépendent de votre inscription ; ce chapitre traite uniquement de la forme d’une demande, pas de qui y répond.
Chapitre suivant : ce que ce parcours couvre, et ce qu’il ne couvre pas, module par module.