6.1 Échelle de carrière
Les programmeurs ont aussi des grades selon leur qualification. Autrefois, on utilisait des termes comme « codeur », « programmeur » et « hacker », mais maintenant on utilise des termes en anglais, empruntés de l'IT américain.
Pour le développeur, il y a 6 grades principaux :
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
D'un pays à un autre et même d'une entreprise à l'autre, certains paramètres peuvent varier, mais en gros, voici la situation :
Intern Software Engineer — ce sont des stagiaires. Ils sont en train d'apprendre la programmation, n'ont ni expérience commerciale, ni expérience de participation à de gros projets. En général, travaillent sous la supervision de collègues plus expérimentés. Leur tâche principale au boulot est d'apprendre la base de code et les fondamentaux du développement logiciel en accomplissant 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 avec moins d'un an d'expérience. Ils travaillent sous la direction de développeurs plus expérimentés, réalisant des parties de projets et 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 objectifs du projet.
Middle Software Engineer (ou simplement Software Engineer): 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 sur l'architecture. Généralement, ont 2 à 5 ans d'expérience pratique.
Senior Software Engineer: sont responsables de la conception et de la mise en œuvre 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 les interactions avec les clients et autres parties prenantes. Généralement ont 5 à 10 ans d'expérience.
TechLead: est responsable du résultat technique final du projet, dirige le développement, résout les tâches les plus complexes, assure le respect des standards techniques et coordonne les activités des développeurs.
Principal Software Engineer: travaille au plus haut niveau technique, participe souvent à la création de la stratégie technique de l'entreprise, à l'élaboration de solutions innovantes et à la définition 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. Les grandes entreprises peuvent avoir des rôles et sous-rôles supplémentaires. Par exemple, chez Google, il y a des rôles comme :
- Staff Software Engineer (L6): a 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 les orientations stratégiques du développement technologique dans l'entreprise.
6.2 Produits Lego
Il y a longtemps (en 1975), Niklaus Wirth, créateur du langage Pascal, a écrit un livre « Algorithmes + Structures de données = Programmes ». Depuis, beaucoup de choses ont changé.
Un produit logiciel moderne n'est plus ce qu'il était il y a 10 ans, et encore moins ce qu'il était il y a 20 ans. Quant à 1975, il ne faut même pas en parler — 50 ans se sont écoulés depuis.
Le programmeur moderne n'écrit plus de programmes à la main. Il les assemble plutôt à partir de parties prêtes (bibliothèques) et écrit du code qui aide ces parties à interagir.
Les produits logiciels modernes peuvent être composés de dizaines et de centaines de programmes. Certains d'entre eux s'exécutent sur l'ordinateur de l'utilisateur, ses appareils mobiles, tandis que la majorité s'exécute sur des serveurs dans un centre de données.
Beaucoup de ces programmes, comme un serveur web ou une base de données, sont déjà écrits. Il suffit de les configurer correctement pour qu'ils fonctionnent comme il faut. Bien que, avec le temps, le processus de configuration puisse devenir si complexe qu'il se transforme en développement. (*facepalm*)
Les programmeurs se battent constamment avec eux-mêmes. Au lieu de réécrire du code similaire dans différents programmes, ils écrivent des bibliothèques, qui peuvent être configurées (ajustées) selon leurs besoins, puis simplement les intégrer partout où c'est nécessaire.
Au cours des 20 dernières années, les programmeurs ont écrit énormément de bibliothèques, frameworks et dépôts open-source. Il y en a des millions. Et maintenant, écrire tout le code à partir de zéro est mal vu. Au lieu de cela, il faut assembler le programme à partir de solutions éprouvées et de qualité — bibliothèques, frameworks, packages et modules.
Mais même cette approche est déjà dépassée. La tendance des 10 dernières années est le passage au 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 à choisir. Vous voulez un serveur web rare et unique — nous en avons aussi ! Tout caprice pour votre argent.
6.3 « Je suis ingénieur » © Elon Musk
Il n'est plus nécessaire d'écrire des choses complexes et ennuyeuses. Si vous avez besoin d'une fonctionnalité compliquée cool, il y a déjà une bibliothèque pour ça. Vous devez juste : a) savoir qu'elle existe, b) trouver celle dont vous avez besoin (il peut y avoir des dizaines d'analogues de qualité différente), c) comprendre comment l'intégrer dans votre projet.
Ce type d'approche a rendu le travail encore plus intéressant. Maintenant, vous pouvez ajouter de nouvelles fonctionnalités au produit 10 fois plus vite. Il y a 30 ans, si vous aviez besoin d'un serveur web, vous deviez l'écrire. Il y a 20 ans, vous deviez l'acheter, l'installer et le configurer. Aujourd'hui, il vous suffit d'aller sur l'admin de votre « cloud » et de l'activer.
C'est d'ailleurs l'une des raisons de la popularité de Python. Il est très bien adapté non pas pour écrire de grandes et complexes solutions, mais pour « coller » diverses parties ensemble. Et, à en juger par sa popularité, il s'en sort très bien.
Et la profession de développeur Python s'est transformée en Python Fullstack Software Engineer. Un développeur Python moderne doit comprendre comment fonctionne une base de données pour bien l'utiliser. Comprendre HTML & JavaScript pour configurer le frontend pour qu'il fonctionne avec le backend Python. Et Docker est maintenant un standard de l'industrie.
Le développement moderne ne ressemble plus du tout à ce qu'il était il y a 20 ans. Un programmeur moderne écrit du code pas plus de 50 % de son temps. Le reste du temps, il lit des docs, apprend de nouvelles technologies et assiste à des réunions. Les programmeurs solitaires appartiennent au passé.
GO TO FULL VERSION