Un programme peut être juste et faux en même temps. ^\d{5}$ accepte les cinq chiffres d'un code postal corse, mais 20 n'est pas un numéro de département : la Corse est 2A et 2B depuis 1976, et les deux premiers chiffres du code postal n'y mènent pas. %m/%d/%Y lit 05/09/2026 comme le 9 mai, sans lever d'erreur. Aucune des deux fautes n'est une faute de langage, et aucun cours de Python ne les contient.
Awa Diarra a écrit ces quarante lignes un soir, pour une association de Roubaix qui compte ses adhérents par département. Le mois suivant est passé dans ce qui n'était pas du Python : un terminal, un dépôt, une version d'interpréteur, un serveur qu'elle n'avait pas configuré. C'est la proportion habituelle, et la raison pour laquelle le langage n'occupe ici qu'un sujet sur huit.
Trois sujets tiennent partout, cinq sont des endroits
Trois des huit ne dépendent pas de ce que l'on construit. Les bases de la programmation sont ce qui resterait si on retirait tous les langages connus : ce que coûte une boucle, à quoi sert une table de hachage, où se cache un bug. Les langages de programmation tiennent la syntaxe et les paquets autour d'elle. La mise en production commence quand le programme marche et finit quand quelqu'un d'autre peut s'en servir.
Les cinq autres ne sont pas des centres d'intérêt. Chacun est un jeu de contraintes, défini par ce qui tue un programme écrit pour lui. Sur le développement web on ne possède aucune des deux machines, et le réseau entre elles tombe sans que ni l'une ni l'autre le signale. Dans le développement mobile la limite est une batterie, une revue de boutique, et un téléphone sur lequel on ne peut pas se connecter pour voir ce qui s'est passé. Les bases de données répondent d'une exigence que les quatre autres n'ont pas : la donnée doit encore être là si le courant saute au milieu d'une écriture.
Sur la blockchain le code est public, permanent et tient souvent de l'argent, donc il n'y a pas de deuxième déploiement. Dans le développement de jeux vidéo le budget est de seize millisecondes par image, soixante fois par seconde, et le dépassement se voit à l'oeil nu.
Rangé par langage, une page qui s'appellerait Python devrait couvrir une requête web, un entraînement de modèle, une boucle de jeu et un script qui renomme des fichiers. Elle ne pourrait dire que ce qui est vrai des quatre, c'est-à-dire la syntaxe. C'est l'argument pour qu'un langage soit un sujet sur huit, et le même qui explique que deux personnes également à l'aise en Go ne puissent pas faire le travail l'une de l'autre.
Lire le code de quelqu'un d'autre est le seul métier de cette section qui n'a pas de sujet à lui, et c'est volontaire : c'est ce que l'on fait à l'intérieur des huit, et la seule façon de s'y exercer est d'ouvrir un projet que l'on n'a pas écrit.
Un seul langage, jusqu'à ce qu'un programme à soi tourne ailleurs
Mathieu Le Guen écrit du JavaScript depuis trois ans, du Python depuis un an, du Go depuis mars. Il lit les trois. Rien de ce qu'il a écrit n'a jamais tourné ailleurs que sur son portable. Un deuxième langage est la façon la plus coûteuse d'éviter le deuxième métier.
Un nouveau langage rend le premier mois, et c'est exactement pour cela qu'il tente. Tout redevient neuf, chaque soirée finit sur quelque chose qui marche. La mise en production ne rend rien pendant quinze jours, puis rend une adresse que quelqu'un d'autre peut ouvrir.
L'ordre qui tient part d'un seul langage, tenu jusqu'à ce qu'un programme à soi tourne sur une machine où l'on n'est pas assis, puis élargi. Les bases ne sont pas un cours préalable à finir d'abord, quoi qu'en dise l'ordre universitaire. Elles arrivent l'après-midi où le script d'Awa se met à comparer quatre-vingt mille lignes à la liste de tout ce qu'il a déjà vu, et où le même travail écrit avec un dictionnaire finit avant que le ventilateur ne démarre. Prise dans l'abstrait, la même leçon ne se pose pas, et c'est l'autre mauvais ordre.
Sixième semaine
La bifurcation après le premier programme qui marche
Les deux bras ressemblent à du progrès. Un seul finit par quelque chose qu'un inconnu peut ouvrir.
- Ce que presque tout le monde faitCommencer un deuxième langageLe premier mois recommence, et il ressemble à du progrès parce que tout y est neuf
- De la syntaxe déjà connue, écrite autrement
- Toujours rien à soi qui tourne quelque part
- L'écart se creuse en silence, dans les deux langages
- Ce qui paiePoser le même programme sur une machine qui n'est pas la vôtreQuinze jours où rien ne marche, puis une adresse
- Un terminal ouvert par soi-même
- Un dépôt où les versions sont figées
- Un lien qu'un autre peut cliquer
Le deuxième langage n'est pas une erreur. Il n'est pas la sixième semaine, et ceux qui le prennent là le prennent en général à la place.
Le mur du quatrième mois porte un nom, et il est en anglais
Tout le métier connaît la phrase, et elle n'existe qu'en anglais : it works on my machine. Quelqu'un qui progresse depuis quatre mois cesse de progresser et en conclut qu'il n'est pas fait pour ça. C'est faux. Il vient d'entrer dans un deuxième métier, déguisé en échec au premier.
Les quarante lignes d'Awa supposent quatre choses qui ne figurent nulle part dans le fichier : un Python livré avec le système et vieux de deux versions, une bibliothèque installée en 2023 par un programme dont personne ne se souvient, un chemin de dossier contenant un nom d'utilisateur, et un encodage choisi par la machine qui a produit le CSV. Aucune n'est du Python. Aucune n'est écrite quelque part. Les quatre doivent être vraies avant la première ligne.
En France ce deuxième métier arrive dans une langue étrangère, et c'est la moitié du problème que les cours français laissent de côté. La trace d'erreur est en anglais. La documentation du paquet est en anglais. La réponse qui règle la panne, sur un forum, est en anglais et date de 2019. Un débutant faible en anglais résout deux problèmes alors qu'on lui a dit qu'il n'en avait qu'un, et il porte au compte du code une lenteur qui vient de la lecture.
La part honnête de la réponse est que l'anglais technique est la plus petite moitié de l'anglais. Il tient dans quelques centaines de mots qui reviennent : deprecated, expected, missing, timeout. Il se prend séparément, et un modèle explique désormais correctement une trace d'erreur anglaise en français. Ce qui ne se délègue pas, c'est la documentation : la phrase qui manque est celle que personne n'a recopiée sur un forum.
Le reste du mur a un nom et une durée : les conteneurs, c'est-à-dire livrer l'environnement en même temps que le code, se prennent en quinze jours et non en un an. L'autre moitié est le terminal, qui a sa propre grammaire et habite à côté, sous les systèmes d'exploitation.
L'endroit où le code tourne est une décision de droit
Sur ce point les cours anglophones se taisent, et ce n'est pas un oubli : la contrainte n'existe pas chez eux dans les mêmes termes. En France le RGPD n'est pas une annexe juridique posée après le développement. C'est une contrainte qui s'écrit en code, par la personne qui écrit le code. Quatre décisions ordinaires :
- Le journal du serveur garde l'adresse IP du visiteur. Une adresse IP est une donnée personnelle : la durée de conservation du journal relève du droit et non du confort.
- La table des adhérents garde la date de naissance. Si le programme n'a besoin que de l'âge, il collecte plus que nécessaire, et rien ne le lui dira avant un contrôle.
- Le cookie de session dure trente jours parce que c'est la valeur par défaut du framework. Personne n'a choisi trente jours.
- La base est hébergée là où le fournisseur l'a proposée par défaut. Pour des données de santé, l'hébergement doit être certifié HDS ; pour une charge sensible du secteur public, qualifié SecNumCloud.
Ces deux dernières qualifications ne sont pas des préférences : pour un client public ou un établissement de santé, elles décident du fournisseur avant la première ligne, et c'est ce qui met OVHcloud, Scaleway et Clever Cloud sur cette page et pas seulement dans le cloud. Un cours qui se termine par « déployez sur AWS » est juste pour la plupart des projets et faux pour ceux-là, sans le dire. Tout cela est une question de conception et non un conseil juridique : ce qui se déplace est le moment de la décision, et la conception d'une base est l'endroit où elle se prend sans que personne la voie.
Le mur
Le programme du métier dont personne n'a dit que c'en était un
Quatre mois de progrès régulier s'arrêtent sur une rive, et en face c'est la première semaine d'autre chose, avec son propre niveau débutant.
- 01Un terminal, et le fait qu'un chemin existeD'où part une commande décide de ce qu'elle trouve
- 02Un fichier de verrouillage, pour que les versions soient les vôtres exprèsLe code des autres, figé plutôt que le plus récent
- 03Un dépôt, avant qu'il y ait quelque chose à perdreL'annulation qui survit à la fermeture du portable
- 04Une machine que vous n'avez pas configuréeElle n'a rien de vos quatre ans dessus, et c'est le but
Quatre planches, et une cinquième qui n'en est pas une : tout ce qui est écrit dessus est en anglais.
Ce qu'on ouvre en 2026
VS Code est l'éditeur par défaut depuis 2016 environ, il est gratuit et son code est ouvert. Il a remplacé Sublime Text et Atom ; Atom a été archivé en décembre 2022, quatre ans après le rachat de son éditeur par celui de VS Code, ce qui tranche la question mieux qu'une comparaison. Deux solutions de rechange sont sérieuses : les éditeurs JetBrains, pour qui passe ses journées dans un seul langage, et Neovim, pour qui travaille sur des machines qui ne sont pas les siennes. La faute est trente extensions installées avant la première ligne.
Git date de 2005, il a été écrit pour le noyau Linux, il a remplacé Subversion et l'habitude de copier un dossier avant d'y toucher, et il est gratuit. C'est un sujet ici et non une astuce, sous le contrôle de version. La faute est d'apprendre add, commit et push comme une formule en trois mots : au premier accident, le seul geste connu est de recloner le dépôt et de recoller les modifications à la main. git restore --staged désindexe un fichier et laisse la modification intacte, et c'est toute la différence entre défaire et recommencer.
Un assistant dans l'éditeur est le plus gros changement du métier depuis la sortie générale de GitHub Copilot en 2022, et la moitié des gens qui lisent ceci apprennent avec un. Il a remplacé la recherche de quelqu'un qui avait déjà posé la question. Il est très bon sur le code qu'on aurait écrit soi-même lentement, et se trompe avec aplomb sur le reste, dans une sortie fluide qui ressemble exactement au code qui marche. Un débutant ne sait pas encore distinguer les deux, parce que les distinguer est précisément le métier. Les offres gratuites suffisent pour apprendre. L'habitude qui survit est de lui faire expliquer la ligne qu'on n'a pas écrite, puis de vérifier l'explication contre quelque chose qui tourne, ce qui est le geste que demande le prompt engineering.
Mistral est le nom à ajouter ici, et pas par patriotisme. Pour un lecteur dont l'employeur, le client public ou l'établissement impose une résidence française ou européenne des données, c'est le fournisseur de modèles utilisable, et les autres ne le sont pas : la question n'est pas la qualité, elle est l'autorisation.
Le quatrième outil répond au mur et non au travail. Pour Python, uv est sorti en 2024, il est gratuit et ouvert, et il a remplacé pip, virtualenv et pyenv, qui faisaient à trois un seul travail : uv installe la version de l'interpréteur que le projet demande et fige chaque paquet dans un fichier de verrouillage. Une machine qui clone le dépôt obtient alors ce que l'auteur avait. Chaque écosystème a le sien, et la faute est de le tenir hors du dépôt, ce qui jette la seule chose pour laquelle il existait.
Le signal
Le même programme en quatre états, avec de moins en moins de vous dedans
Rien ne change dans le code entre la première image et la dernière. Ce qui change, c'est ce qu'il emprunte encore à votre machine.
- 01Il tourne quand vous appuyez sur lectureDans l'éditeur qui a tout installé à votre place
- 02Il tourne dans un terminal que vous avez ouvertMême machine, plus rien pour aider
- 03Il tourne depuis un clone neufVotre dépôt, et le premier audit honnête de ce que vous n'avez jamais écrit
- 04Il tourne là où vous ne vous êtes jamais connectéL'image où le programme cesse d'être le vôtre
Les images ne sont pas également espacées dans le temps. La dernière coûte en général plus que les trois autres réunies, et une pellicule ne sait pas dessiner cela.
Le signal à trois mois est un dépôt que vous n'avez pas écrit
La mesure n'est pas la quantité de syntaxe restituable de mémoire. C'est de prendre le projet d'un inconnu, le cloner, et le faire tourner sur sa propre machine, seul, dans un après-midi.
À un mois cela échoue sans qu'on puisse dire quoi. À trois mois, ou bien cela tourne, ou bien l'étape qui bloque a un nom. L'interpréteur est une version en retard sur ce que le projet demande. Une bibliothèque système contre laquelle les paquets se compilent manque. Le programme attend une base qui réponde sur le port 5432 et rien n'écoute. Il veut une variable d'environnement que personne n'a documentée. Nommer l'étape est la compétence ; la réparer ensuite est une recherche.
Un signal plus petit se vérifie cet après-midi. Quand un programme tombe, la première trace qui nomme un fichier que vous avez écrit est celle qu'il faut ouvrir, parce que l'erreur a été remarquée dans une bibliothèque et causée dans votre fichier. Le dernier signal demande un collègue : il doit pouvoir faire tourner ce que vous avez, depuis le dépôt, à son bureau, sans vous au téléphone.
Par où entrer
La mise en production est celle qu'il faut ouvrir plus tôt que de raison, parce que le contrôle de version, les tests, les conteneurs et un déploiement s'apprennent mieux sur un programme de quarante lignes que sur un programme de quatre mille.
Des cinq endroits, le web est celui par lequel on entre sans raison particulière d'en préférer un autre : un inconnu voit la chose faite en cliquant sur un lien, ce qui compte plus au deuxième mois que tout argument sur les langages. Les quatre autres se choisissent par la contrainte que l'on accepte : une batterie et une file de revue, une écriture qui doit survivre à une coupure, seize millisecondes, ou un déploiement qui ne se refait pas.
Reste la question avec laquelle presque tout le monde arrive : quel langage en premier. Le choix du premier langage est l'endroit où elle se règle, et la version courte est que le bon premier langage est celui que parlent les gens qui répondront aux questions. Pour Awa, à Roubaix, ce sont les deux personnes de l'association qui tiennent déjà le tableur.