Pendant la majeure partie de ma carrière, TypeScript m’a suffi. React et Next.js côté frontend, NestJS ou Express côté backend : un seul langage, de la base de données au bouton. Puis l’IA est passée d’un simple appel API à une vraie composante du produit, et je me suis heurté au même obstacle : le code le plus intéressant était en Python.
Les API de LLM disposent de bons SDK JavaScript, et j’intègre toujours OpenAI et Anthropic depuis Node.js. Mais dès que le travail descend sous la couche API — exécuter soi-même un modèle, gérer des embeddings à grande échelle ou de l’audio — l’écosystème est Python : PyTorch, Hugging Face, NumPy, notebooks Jupyter et dépôts de recherche livrés avec un requirements.txt sans alternative npm. Le text-to-speech avec StyleTTS2 et les pipelines de livres audio ont rendu la lecture de Python incontournable.
Apprendre une langue en tant qu’ingénieur expérimenté diffère de l’apprentissage de la première. Inutile de réapprendre ce qu’est une boucle ; il faut comprendre la culture : environnements virtuels et dépendances verrouillées, car un dépôt de modèle fonctionnel le mois dernier peut casser avec une nouvelle version de torch. Les annotations de type et Pydantic rappellent TypeScript et Zod. async dans FastAPI s’accorde avec ce que je connais de Node. Et l’habitude du notebook : explorer dans Jupyter, puis transférer ce qui fonctionne dans un vrai module avec des tests.
L’IA elle-même a accéléré l’apprentissage. J’utilise les modèles comme pair programmer dans le langage que je maîtrise moins : explique cette idiomatique, réécris cette habitude JavaScript à la façon Python, pourquoi ce tenseur a-t-il une forme incorrecte ? La règle est de traiter chaque réponse comme une pull request d’un junior : la lire, l’exécuter et la comprendre avant de l’intégrer. L’IA accélère l’apprentissage, elle ne le remplace pas.
En production, je garde une séparation simple. Node.js et TypeScript gèrent le produit : authentification, API, paiements et UI. Python gère le travail sur les modèles : inférence, audio et traitement des données, généralement dans un service séparé ou un worker derrière une file d’attente, relié au produit par HTTP ou par des tâches dotées d’un contrat typé. Chaque langage fait ce que son écosystème maîtrise le mieux, sans empiéter sur l’autre.
Python n’a pas remplacé TypeScript : il a élargi mon champ d’action. Il y a quelques années, « full-stack » signifiait aller de la base de données au navigateur. À l’ère de l’IA, cela signifie aussi ouvrir le dépôt du modèle, comprendre ce qu’il fait réellement et l’exécuter soi-même. Si votre produit a besoin d’une étape de modèle et d’une vraie application web autour, c’est précisément à cette jonction que j’aime travailler.
Donnez à votre prochain produit quelqu’un qui reste.
Prêt à commencer ? Écrivez-moi — je peux démarrer immédiatement et rester dans la durée. Des collaborations à long terme, pas une passation après deux semaines. Discutons de votre projet, de vos exigences et de la meilleure façon d’avancer.