L’entreprise ne vous donne pas le choix
« Python est à la mode ces jours-ci, on devrait l’utiliser, non ? » Un développeur junior peut-il dire cela en entreprise ? Impossible.
Avant de trouver un emploi, j’avais le luxe de choisir mes armes. J’utilisais Python pour les tests de code car c’était avantageux, et je creusais Java car c’était demandé pour le développement web. Mais la réalité de la petite équipe que j’ai rejointe était tout autre.
La stack technique de l’entreprise était déjà gravée dans le marbre. Le code legacy tournait sous Java (Spring Boot), l’interface était dessinée en JavaScript (Vue.js), et soudainement, une tâche de maintenance d’application Android m’est tombée dessus, m’obligeant à toucher au XML et à un autre type de Java.
Je n’ai rien choisi. C’est l’environnement (Framework) qui m’a imposé ces langages. Au début, j’étais terrifié par cette avalanche de syntaxes inconnues. Mais à force de lire et d’écrire du code pour survivre, j’ai réalisé un fait important : ‘Tiens ? C’est exactement le même concept que ce que j’avais appris en Java, non ?’

La syntaxe change, l’essence reste (Concept Transfer)
À l’école, j’avais survolé le C avant de creuser profondément Java. Puis, lors de ma recherche d’emploi, j’ai entendu dire que « Python est le roi des tests techniques », alors j’ai ouvert un livre de Python pour la première fois.
La syntaxe m’était étrangère, mais à ma grande surprise, je m’y suis adapté en quelques jours. Ce n’était pas parce que Python est facile. C’est parce que je connaissais déjà ‘l’essence de la programmation’ grâce à Java.
- List en Python : ‘Tiens ? C’est juste une ArrayList de Java mélangée avec des fonctions de Stack et de Queue.’
- Dictionary en Python : ‘C’est exactement comme une HashMap en Java. On stocke des paires Clé-Valeur.’
Je n’apprenais pas un nouveau langage depuis zéro. Je superposais simplement les ‘noms de lieux de Python’ sur la ‘carte de Java’ qui existait déjà dans ma tête. En pédagogie, on appelle cela le ‘Transfert d’apprentissage’ (Transfer of Learning). Si vous creusez profondément un langage, la vitesse à laquelle vous comprenez les autres langages augmente proportionnellement à cette profondeur.
L’UI n’est finalement qu’une structure en Arbre (Tree)
Cette expérience a également brillé dans un domaine totalement différent. Étudiant, j’avais touché au HTML et au CSS pour refaire le site web de l’école et gagner un peu d’argent. Je ne pensais pas que cela aiderait ma carrière de développeur backend.
Puis, une fois en poste, j’ai dû modifier l’interface d’une application Android. Android utilise un langage de balisage appelé XML pour construire ses UI. C’était mon premier développement mobile, j’étais nerveux, mais en ouvrant le code, j’ai souri.
<!-- Android XML -->
<LinearLayout orientation="vertical">
<TextView text="Hello World" />
<Button text="Click Me" />
</LinearLayout>
<!-- HTML -->
<div style="display: flex; flex-direction: column;">
<span>Hello World</span>
<button>Click Me</button>
</div>
Seuls les noms des balises changeaient. La structure « Mettre des éléments enfants dans un élément parent et définir l’apparence avec des attributs » était exactement la même que celle du HTML. Comprenant la structure de l’arbre DOM et le Modèle de Boîte (Box Model), j’ai pu m’approprier les layouts Android en un rien de temps.

Le Framework, ce que l’école ne m’avait pas appris
En réalité, ce qui m’a plus déconcerté que le langage, c’est l’existence des ‘Frameworks’. L’école n’enseignait que la ‘condition physique de base’ : syntaxe C, structures de données, algorithmes. Bien sûr, j’avais entendu parler de ‘React’ ou ‘Spring’. J’avais même acheté un livre sur React parce qu’on disait que c’était « le top ».
Mais j’ai refermé le livre avant d’en avoir lu la moitié. Je ne comprenais pas pourquoi je devais coder ainsi. « Pourquoi je dois hériter d’un Component et mettre mon code dans une fonction render ? Pourquoi je n’ai pas le contrôle ? Pourquoi je ne peux pas juste appeler une fonction ? »
À l’époque, je ignorais la différence cruciale entre ‘Bibliothèque’ (Library) et ‘Framework’.
- Ce qu’on apprend à l’école (Mode Bibliothèque) : J’écris le code et j’appelle les outils (fonctions) quand j’en ai besoin. (Je construis ma maison comme je veux).
- Ce qu’on utilise en entreprise (Mode Framework) : L’outil (Framework) m’appelle. Je dois remplir les cases vides avec mon code selon des règles strictes. (J’assemble une maison préfabriquée).
Si l’école m’apprenait à manier le marteau librement, le framework en entreprise ressemblait à une usine géante qui me disait : « Nous nous occupons du martelage, toi, contente-toi d’insérer le clou dans ce trou ». Faute de comprendre ce concept d »Inversion de Contrôle’ (IoC), le livre me semblait écrit dans une langue extraterrestre.
Si tu connais le langage, tu vois le Framework
Cependant, en étant forcé d’utiliser des frameworks au travail, j’ai découvert une vérité paradoxale. Peu importe la magie complexe de Spring Boot, à l’intérieur, ce n’est que du ‘code Java’.
L’annotation @Autowired injecte les dépendances comme par magie, mais en y regardant de plus près, ce n’est qu’une application de la technologie de Réflexion (Reflection) de Java. Le système réactif de Vue.js utilise simplement les objets et les observateurs de propriétés de JavaScript.
‘Si le langage (les fondations) est solide, on voit les principes de fonctionnement du framework (l’application).’
Au début, j’ai plongé dans la structure MVC de Spring sans rien y comprendre, mais grâce à ma compréhension de Java, je me suis adapté rapidement : « Ah, le framework exécute mon code à ma place. Je n’ai qu’à lui donner des objets selon ces règles. »
[Conseil] Ordonnance pour les étudiants indécis
« Quel langage dois-je apprendre ? » C’est l’une des questions les plus fréquentes sur les forums. Il n’est pas nécessaire de ne jurer que par un seul langage toute sa vie. Mais paradoxalement, pour être bon dans plusieurs, il faut d’abord ‘en creuser un seul avec certitude’.
Si vous êtes un étudiant perdu dans ses choix, fermez vos livres et ouvrez un ‘site d’emploi’ immédiatement.
- Trouvez une offre d’emploi (JD) d’une entreprise où vous voulez aller ou qui vous plaît.
- Identifiez une ‘Stack Technique (Langage et Framework)’ listée.
- Étudiez cette stack unique très profondément.
« Cette boîte utilise Spring, mais l’autre utilise Node.js, que faire ? » Peu importe. Maîtrisez-en un correctement. Comme je l’ai dit, l’essence de la programmation est transférable. Quelqu’un qui maîtrise Spring s’adaptera vite si l’entreprise lui demande d’utiliser Node.js. Mais quelqu’un qui a juste gratté la surface de tout devra tout recommencer à zéro, quel que soit le framework qu’on lui donne. Au lieu d’hésiter, choisissez une technologie ‘voulue par le marché’ et creusez. C’est le chemin le plus rapide.
[Code Verification] Le langage change, la mémoire reste
Vérifions par le code que même si le langage diffère, ce qui se passe à l’intérieur de l’ordinateur est identique. L’ArrayList de Java et la list de Python ont des syntaxes différentes, mais la façon dont elles augmentent la mémoire (Dynamic Array) est la même.
Java :
// Java : Quand c'est plein, on augmente la taille de 1.5 fois et on déménage.
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
// Interne : Création tableau -> Ajout donnée -> Si manque d'espace, création tableau plus grand et copie.
Python :
# Python : Quand c'est plein, on augmente d'environ 1.125 fois + @ et on déménage.
my_list = []
my_list.append(1)
# Interne : Le principe est presque identique à Java (Logique de réallocation de tableau en C)
Quel que soit le langage utilisé, la méthode de travail du Centre Logistique Numérique (l’ordinateur) ne change pas. Les règles d’utilisation de l’ouvrier (CPU) et de l’entrepôt (Mémoire) sont universelles.
Conclusion : Remplacer la peur par la curiosité
En tant que développeur, le moment viendra forcément où vous devrez utiliser un langage ou un framework que vous ne voulez pas. Allez-vous fuir en disant « Je suis développeur Java, je déteste Python » ?
Le langage n’est pas une religion, c’est un ‘outil’. Et le framework est l »atelier’ où l’on utilise cet outil. Celui qui a creusé profondément un langage (sa langue maternelle) apprendra vite à utiliser un nouvel outil qu’on lui met dans les mains.
Alors, ne soyez pas effrayé si votre entreprise vous impose une stack technique inconnue. Seule l’enveloppe est différente, le noyau à l’intérieur est le même que celui que vous connaissez déjà.
Maintenant que nous avons éliminé la peur des langages, dans le prochain article, nous plongerons dans le monde réel où vit le code : les profondeurs de la ‘Mémoire (Memory)’. Savoir où votre code se loge dans la RAM et comment il roule abaissera encore plus la barrière des langages.