1. Échelle de carrière
Les développeurs ont également des niveaux en fonction de leur qualification. Autrefois, on utilisait des notions comme « codeur », « programmeur » et « hacker », mais aujourd’hui tout le monde est passé à des intitulés en anglais issus de l’IT américain.
Pour un développeur, il existe 6 niveaux principaux :
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
D’un pays à l’autre, et même d’une entreprise à l’autre, certains paramètres peuvent différer, mais l’idée générale est la suivante :
- 🌱 Intern Software Engineer — ce sont des stagiaires. Ils sont en cours d’apprentissage de la programmation, n’ont ni expérience commerciale, ni expérience de participation à de grands projets. Ils travaillent généralement sous la supervision de collègues plus expérimentés. Leur principale tâche au travail est d’étudier la base de code et les fondamentaux du développement logiciel, d’accomplir de petites tâches de codage et de participer aux tests.
- 🐣 Junior Software Engineer — ce sont déjà des développeurs, mais sans réelle expérience commerciale ou avec moins d’un an d’expérience. Ils travaillent sous la direction de développeurs plus expérimentés, réalisent des parties de projets et participent aux cycles de code review. Cette étape de carrière est centrée sur l’approfondissement des compétences techniques et la compréhension des objectifs du projet.
- 🦾 Middle Software Engineer (ou simplement Software Engineer) : ils ont davantage d’autonomie dans la prise de décisions techniques, sont responsables de parties significatives du projet, commencent à encadrer des collègues moins expérimentés et participent plus activement aux discussions d’architecture. En général, ils ont 2 à 5 ans d’expérience pratique.
- 🧑🔬 Senior Software Engineer : ils sont responsables de la conception et de la mise en œuvre de systèmes complexes, assurent le mentorat et le leadership au sein de l’équipe, participent à la planification stratégique des projets et représentent souvent l’équipe dans les échanges avec les clients et autres parties prenantes. En général, ils ont 5 à 10 ans d’expérience.
- 🧠 TechLead : il assume la responsabilité du résultat technique final du projet, dirige le développement, résout les tâches les plus complexes, garantit le respect des normes techniques et coordonne l’activité des développeurs.
- 🏆 Principal Software Engineer : il opère au niveau technique le plus élevé, participe souvent à la définition de la stratégie technique de l’entreprise, à la conception de solutions innovantes et à l’établissement des standards techniques, sert de mentor principal pour les leaders techniques et est un expert clé sur des questions techniques complexes.
Bon à savoir. Les grandes entreprises peuvent avoir des rôles supplémentaires et des sous-rôles. Par exemple, chez Google, on trouve les rôles suivants :
- Staff Software Engineer (L6) : exerce une influence significative sur la politique technique de son département.
- Senior Staff Software Engineer (L7) : travaille sur des projets à grande échelle et complexes, définit l’orientation stratégique du développement technologique dans l’entreprise.
2. Produits Lego
Il y a longtemps (en 1975), Niklaus Wirth, le créateur du langage Pascal, a écrit le livre « Algorithmes + Structures de données = Programmes ». Depuis, beaucoup de choses ont changé. Le produit logiciel moderne n’est plus ce qu’il était il y a 10 ans, et ce n’est certainement plus ce qu’il était il y a 20 ans. Quant à 1975, n’en parlons même pas — 50 ans se sont écoulés ⏳
Le développeur moderne n’écrit plus les programmes à la main. Il les assemble plutôt à partir de composants prêts à l’emploi (bibliothèques) et écrit le code qui aide ces pièces à interagir 🧩. Les produits logiciels modernes peuvent être constitués de dizaines, voire de centaines de programmes. Certains s’exécutent sur l’ordinateur de l’utilisateur, sur ses appareils mobiles, mais la plus grande partie — sur des serveurs dans des centres de données.
Beaucoup de ces programmes, tels qu’un serveur web ou une base de données, existent déjà. Il suffit de les configurer correctement pour qu’ils fonctionnent comme il faut. Même si, avec le temps, le processus de configuration peut devenir si complexe qu’il se transforme de fait en développement. 🤦♂️
Les développeurs se battent constamment contre eux-mêmes. Au lieu d’écrire encore et encore du code similaire dans différents programmes, ils écrivent des bibliothèques qui peuvent être configurées (adaptées) à leurs besoins, puis les branchent simplement aux endroits requis.
Au cours des 20 dernières années, les développeurs ont écrit énormément de bibliothèques, de frameworks et de dépôts open source. Il y en a réellement des millions. Désormais, écrire tout le code à partir de zéro est considéré comme une mauvaise pratique. À la place, il faut assembler un programme à partir de solutions de qualité et éprouvées — bibliothèques, frameworks, packages et modules 🧱
Mais même cette approche est déjà en train de vieillir. La tendance de ces 10 dernières années — c’est la migration vers le cloud, de grands centres de données qui fournissent à vos programmes tout ce dont ils ont besoin. Vous voulez une base de données ? Nous en avons des centaines au choix. Vous voulez un serveur web rare et unique — il y en a aussi ! N’importe quel caprice contre rémunération.
3. « Je suis ingénieur » © Elon Musk

Plus besoin d’écrire vous-même des choses complexes et ennuyeuses. Si vous avez besoin d’une fonctionnalité — il existe déjà des bibliothèques et des frameworks prêts pour cela. Votre mission : a) connaître leur existence, b) trouver l’option adéquate (il existe souvent plusieurs analogues, avec des qualités et des nuances différentes), c) comprendre comment l’intégrer dans votre projet 🎓
Le travail n’en est que devenu plus intéressant. Vous pouvez désormais ajouter une nouvelle fonctionnalité au produit 10 fois plus vite. Il y a 30 ans, si vous aviez besoin d’un serveur web, vous l’écriviez à partir de zéro. Il y a 20 ans — vous l’achetiez, l’installiez et le configuriez. Et aujourd’hui — vous allez simplement sur le portail cloud Azure ou AWS et activez le service voulu 🌐
C’est d’ailleurs l’une des raisons de la popularité du langage Java. Il convient parfaitement non seulement au développement de grandes solutions d’entreprise, mais aussi pour « coller » différents composants — grâce à l’écosystème riche de la JVM, il existe des intégrations avec pratiquement tout : bases de données, microservices, REST API, systèmes de messagerie, services cloud, plateformes d’analytique.
En conséquence, le métier de Java Software Engineer s’est depuis longtemps transformé en Fullstack Java Developer. Il est important pour un développeur moderne de comprendre comment fonctionne une base de données (PostgreSQL, MySQL/MariaDB, MongoDB, etc.) afin d’établir des interactions efficaces. Il faut comprendre comment fonctionne le front-end (HTML, CSS, JavaScript/TypeScript, React, Angular) pour configurer les échanges avec la partie back-end en Java (Spring Boot, Micronaut, Quarkus). Et, bien sûr, Docker est désormais incontournable — c’est devenu un standard du secteur 🐳.
Le développement moderne est très différent de ce qui existait il y a 20 ans. Un développeur n’écrit du code pas plus de 50 % de son temps — le reste est consacré à la lecture de documentation, à l’étude de nouvelles technologies, à la conception et au travail en équipe lors des réunions. Les développeurs en solo sont désormais plutôt une rare exception.
GO TO FULL VERSION