1. La hiérarchie de carrière
Les programmeurs ont aussi des gradations selon leur qualification. Autrefois, on utilisait des termes comme « coder », « programmeur » et « hacker », mais maintenant tout le monde utilise des noms en anglais issus de l'IT américain.
Pour un développeur, il y a 6 principales gradations :
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
Selon le pays ou même l'entreprise, certains paramètres peuvent varier, mais l'idée est à peu près la suivante :
- 🌱 Intern Software Engineer — ce sont des stagiaires. Ils sont en train d'apprendre la programmation, n'ont aucune expérience commerciale, ni expérience dans de grands projets. En général, ils travaillent sous la supervision de collègues plus expérimentés. Leur tâche principale au travail — étudier la base de code et les fondamentaux du développement logiciel, en réalisant des tâches simples de codage et en participant aux tests.
- 🐣 Junior Software Engineer — ce sont déjà des programmeurs, mais sans expérience commerciale sérieuse ou moins d'un an d'expérience. Ils travaillent sous la direction de développeurs plus expérimentés, en réalisant des parties de projets et en participant aux cycles de code-review. Cette étape de carrière est axée sur l'approfondissement des compétences techniques et la compréhension des tâches du projet.
- 🦾 Middle Software Engineer (ou simplement Software Engineer) : ils ont plus d'autonomie dans la prise de décisions techniques, sont responsables de parties importantes du projet, commencent à encadrer des collègues moins expérimentés et participent activement aux discussions d'architecture. Généralement, ils ont entre 2 et 5 ans d'expérience pratique.
- 🧑🔬 Senior Software Engineer : ils sont responsables de la conception et de la réalisation de systèmes complexes, assurent le mentorat et la direction au sein de l'équipe, participent à la planification stratégique des projets et représentent souvent l'équipe dans la communication avec les clients et autres parties prenantes. Généralement, ils ont entre 5 et 10 ans d'expérience.
- 🧠 TechLead : il est responsable du résultat technique final du projet, dirige le développement, résout les tâches les plus complexes, veille au respect des standards techniques et coordonne l'activité des développeurs.
- 🏆 Principal Software Engineer : il travaille au plus haut niveau technique, participe souvent à la définition de la stratégie technique de l'entreprise, au développement de solutions innovantes et à l'établissement des standards techniques, sert de mentor principal pour les leaders techniques et est un expert clé dans les questions techniques complexes.
C'est intéressant. Dans les grandes entreprises, il peut y avoir des rôles et sous-rôles supplémentaires. Par exemple, chez Google, il y a :
- Staff Software Engineer (L6) : 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 la direction stratégique du développement technologique de l'entreprise.
2. Produits Lego
Il y a longtemps (en 1975), Niklaus Wirth, créateur du langage Pascal, a écrit un livre intitulé « Algorithms + Data Structures = Programs ». Depuis, beaucoup de choses ont changé. Le produit logiciel moderne n'est pas ce qu'il était il y a 10 ans, et certainement pas ce qu'il était il y a 20 ans. Parler de 1975 n'a pas de sens — cela fait 50 ans ⏳
Le programmeur moderne ne code plus manuellement. Il assemble plutôt des programmes à partir de composants prêts (bibliothèques) et écrit du code qui permet à ces composants d'interagir🧩. Les produits logiciels modernes peuvent consister en dizaines ou centaines de programmes. Certains tournent sur l'ordinateur de l'utilisateur ou ses appareils mobiles, mais la majorité tourne sur des serveurs dans des data-centers.
Beaucoup de ces programmes, comme un web-server ou une base de données, sont déjà écrits. Il suffit de les configurer correctement pour qu'ils fonctionnent comme il faut. Mais avec le temps, le processus de configuration peut devenir tellement complexe qu'il ressemble à du développement. 🤦♂️
Les programmeurs se battent constamment avec eux-mêmes. Au lieu de réécrire du code similaire dans différentes applications, ils écrivent des bibliothèques qu'on peut configurer (adapter) à ses besoins, puis on les inclut partout où c'est nécessaire.
Au cours des 20 dernières années, des millions de bibliothèques, frameworks et dépôts open-source ont été créés. Leur nombre est énorme. Aujourd'hui, écrire tout le code à partir de zéro est considéré comme une mauvaise pratique. Il faut plutôt assembler un programme à partir de solutions éprouvées — bibliothèques, frameworks, packages et modules 🧱
Mais cette approche devient aussi obsolète. La tendance des 10 dernières années — c'est le passage au cloud, avec de grands data-centers qui fournissent tout ce dont vos programmes ont besoin. Vous voulez une base de données ? On en a des centaines. Vous cherchez un web-server unique ? Il y en a aussi ! Tout pour votre argent.
3. « Je suis ingénieur » © Elon Musk

Plus besoin d'écrire soi-même des choses compliquées et ennuyeuses. Si vous avez besoin d'une fonctionnalité, il existe déjà des bibliothèques et frameworks prêts à l'emploi. Votre tâche : a) connaître leur existence, b) choisir la bonne option (il y en a souvent plusieurs, avec des qualités et des nuances différentes), c) comprendre comment l'intégrer dans votre projet 🎓
Le travail devient alors beaucoup plus intéressant. Maintenant, vous pouvez ajouter de nouvelles fonctionnalités 10 fois plus vite. Il y a 30 ans, si vous aviez besoin d'un web-server, vous l'auriez écrit de zéro. Il y a 20 ans, vous l'auriez acheté, installé et configuré. Et aujourd'hui — il suffit d'aller sur le portail cloud Azure ou AWS et d'activer le service voulu 🌐
C'est d'ailleurs une des raisons pour lesquelles le langage C# est si populaire. Il est parfait non seulement pour écrire de grandes solutions, mais aussi pour « coller » différents composants — grâce à .NET, il existe des intégrations avec presque tout : bases de données, microservices, REST API, queues de messages ou services cloud.
En conséquence, la profession de C#/.NET developer s'est longtemps transformée en Fullstack .NET Software Engineer. Un développeur moderne doit comprendre comment fonctionne une base de données (SQL Server, PostgreSQL, MongoDB, etc.) pour construire une interaction efficace. Il doit aussi connaître le frontend (HTML, CSS, JavaScript/TypeScript, Blazor) pour configurer l'échange avec le backend en C#. Et bien sûr, Docker est incontournable aujourd'hui — c'est la norme dans l'industrie. 🐳
Le développement moderne est très différent de ce qu'il était il y a 20 ans. Le programmeur écrit du code moins de 50% du temps — le reste consiste à lire la documentation, apprendre de nouvelles technologies, faire de la conception et travailler en équipe lors de réunions. Les programmeurs solitaires sont désormais plutôt rares.
GO TO FULL VERSION