Les personnes âgées n'ont pas leur place ici ? La programmation après trente-cinq ans

Bonjour, je m'appelle Antoine, j'ai 35 ans. J'entendais souvent dire que le métier de programmeur était réservé aux jeunes. Cependant, l'été dernier, j'ai reçu une invitation de Google et je suis parti travailler à Montréal.
Dans cet article, je voudrais aborder la question qui a été discutée à plusieurs reprises sur le forum : dans quelle mesure est-il réaliste d'être un programmeur après 35-40 ans ? Pas en tant qu'architecte principal, pas en tant que chef d'équipe, pas en tant que chef de projet, mais en tant que programmeur ? Je ne suis pas d'accord avec l'opinion selon laquelle la programmation est le destin des jeunes. Je trouve cela dommageable et je vais vous dire pourquoi.
Ce mythe est fondé sur plusieurs raisons. Examinons-les en détail.
Explication 1. Il faut des nerfs et des réactions.
On nous dit : "La programmation demande de l'énergie, ce qui n'est typique que des jeunes. À un âge mûr, vous n'avez plus l'énergie pour ça".
C'est comme si on faisait un compliment aux programmeurs en les mettant sur le même plan que les pilotes d'essai et les astronautes. D'ailleurs, ce n'est pas par hasard que j'ai évoqué les pilotes. Mesdames et messieurs, regardez cet homme :

C'est le célèbre Chesley Sullenberger, qui, à 58 ans, est devenu un héros des États-Unis, lorsqu'il a posé l'avion sur le fleuve Hudson.
Pour être juste, je dois dire qu'il y a vraiment des domaines de la programmation où il est difficile de passer la quarantaine, mais pas parce que tout est trop abscons et lourd, mais à cause des spécificités de ces domaines particuliers. Par exemple, dans l'industrie du jeu où il y a souvent des ruptures de stock : les gens travaillent plus de 100 heures par semaine. Si vous pouvez encore le faire quand vous êtes jeune, à l'âge de 40 ans, votre santé ne vous le permettra guère. Cependant, la question ici s'adresse plutôt aux entreprises qui pratiquent le crunching. Un programmeur peut écrire des jeux même à 40 ans, mais pas d'une manière aussi épuisante et nuisible.
Explication 2. Apprendre, apprendre et apprendre encore
On nous dit que "les connaissances des programmeurs sont constamment dépassées et qu'à l'âge de 30-35 ans, ce que vous avez appris à l'université n'est peut-être plus utile à personne, mais il est trop tard pour se recycler".
Encore une fois - ça semble plutôt flatteur. La profession est tellement intellectuelle et élitiste qu'il faut constamment être à la pointe du progrès.
Mais il y a d'autres professions où il faut continuellement apprendre. Et personne ne chasse les quadragénaires.
Pensons aux avocats. La législation est constamment dépassée. C'est la norme. En outre, leur situation est encore plus difficile que celle des programmeurs. Lorsque la norme C++20 sera publiée, personne ne licenciera ceux qui ont écrit conformément à la norme précédente et ne leur demandera de se recycler immédiatement. Mais un juriste n'a pas le choix : avec une nouvelle version du Code civil, il doit le lire, le mémoriser et l'utiliser.
On peut dire la même chose des médecins : ils doivent constamment mettre à jour leurs connaissances. Pour savoir jusqu'à quel âge un chirurgien doit étudier, lisons par exemple l'avis du chirurgien cardiaque en chef du pays, Leo Bokeria :
Cela a toujours été le cas avec les médecins : les gens veulent être traités par un médecin expérimenté. En Amérique, par exemple, les chirurgiens cardiaques ne sont admis à la table d'opération qu'à l'âge de 37 ans, et à l'âge de 40 ans en tant que chirurgien indépendant, la question reste entière. Elle concerne les médecins, les scientifiques, les enseignants, les personnes qui font un travail intellectuel, ainsi que les travailleurs de la plus haute qualification.
Faites attention aux "personnes ayant un travail intellectuel" - les programmeurs appartiennent-ils à cette catégorie, j'espère ? Ce qui signifie que l'expérience est tout aussi importante ici que dans tout autre domaine intellectuel.
Dans quelle mesure une personne peut-elle maîtriser de nouvelles choses à un âge mûr ? Je ne suis ni éducateur, ni psychologue, ni neurobiologiste et je ne suis donc pas qualifié pour répondre à cette question. Cependant, la pratique montre que cela est tout à fait possible. Il y a beaucoup de gens qui sont à la pointe du progrès même après quarante ans. Si nous faisons abstraction de l'industrie informatique, nous pouvons nous souvenir de Sergei Korolev, par exemple. Ses principaux développements, il les a faits après quarante-cinq ans - à peine sur la base des connaissances qu'il a obtenues avant l'âge de 30 ans.
Il existe également des connaissances implicites. Vous ne pouvez pas l'obtenir à l'université et le récupérer dans la littérature. Il est nécessaire de travailler pendant plus d'un an (parfois même des décennies) dans un secteur particulier. Un programmeur de 40 ans sait comment programmer, et aussi (s'il a participé aux projets dits désespérés) comment ne pas programmer et quelles sont les erreurs à éviter lors du choix de l'architecture logicielle et de l'écriture du code. Voir cet article sur les cas de reconversion en dev web.
Explication 3. Un programmeur à 35 ans ne donnera pas naissance à quelque chose de valable.
Ils disent : "Oui, vous pouvez être un programmeur à l'âge de 35-40 ans, mais un tel programmeur ne sera plus capable de faire quoi que ce soit de sérieux".
Il faut commencer par les bases, par l'ordinateur. Eckert et Mockley l'ont créé. Eckert avait 25 ans à l'époque, et Mokely 35.
Et puis on passe aux personnes qui ont fait quelque chose de sérieux après 35 ans. Commençons par Donald Knuth, qui est célèbre et respecté des programmeurs. Il a développé la première version de son célèbre système TeX en 1978, à l'âge de 40 ans. Un peu plus tard, en 1981, il a créé le concept de programmation lettrée.
Revenons à une époque plus récente. Martin Odersky est né en 1958 et a commencé à écrire Scala en 2001 - après plus d'une décennie de travail sur Pizza et Funnel (et sur le compilateur GJ, qui était le précurseur de javac).
C'est un autre exemple de programmeur qui était bon dans sa jeunesse et qui l'est toujours dans sa vieillesse. Anders Heilsberg a écrit la première version du compilateur Pascal en 1981, à l'âge de 21 ans. Il a commencé à développer C# en 2000, alors qu'il avait déjà la quarantaine. Et en 2012 (à l'âge de 62 ans), Heilsberg a commencé à développer TypeScript. Pour mon intérêt, je regardais le dépôt de ce langage - il y a pas mal de commits par Anders.
En outre, certains pensent que l'âge de 40 à 55 ans est le plus fructueux pour les spécialistes en ingénierie, car ils ont acquis de l'expérience et rien ne les distrait du travail : une personne a une famille, les enfants ont grandi...
En outre, il ne faut pas oublier que tout pionnier se tient sur les épaules non seulement d'une douzaine de géants, mais aussi d'une masse de bons travailleurs. Ils ont créé un ensemble d'infrastructures qui ont rendu possible le travail des pionniers. Quelqu'un écrit des pilotes pour les cartes vidéo, et sans pilotes, les développeurs de jeux ne pourraient rien faire. Quelqu'un travaille sur les protocoles de mise en réseau, et sans eux, les développeurs du multijoueur auraient de nouveau peu de chances de parvenir à quelque chose. Il s'agit d'une énorme quantité de travail, qui, pour la plupart, n'est pas révolutionnaire et n'est souvent pas considéré comme quelque chose de sérieux dont on peut être fier. Cependant, sans ce travail, tous les géants n'auraient rien accompli.
Explication 4 : Vous n'êtes toujours pas un cadre ?
On nous dit : "Le programmeur n'est que la première étape de votre carrière. A trente, trente-cinq ans au plus tard, vous devriez réussir en tant que cadre si vous avez le cerveau et les capacités."
C'est l'explication la plus insultante. Par exemple, on peut s'adonner à la programmation quand on est jeune, mais après trente ans, il faut faire quelque chose de sérieux.
Il est facile de comprendre l'absurdité de ce point de vue si l'on essaie de l'appliquer à d'autres professions. Essayez de dire à un avocat de 50 ans : "Vous n'avez toujours pas votre propre cabinet ?" Essayez de dire à un chirurgien de 50 ans : "Vous n'êtes toujours pas chef de la chirurgie ?" Essayez de le dire à Sullenberger, enfin : "Vous avez fait atterrir un avion dans l'Hudson à 58 ans ? Les gens normaux de votre âge possèdent leur propre compagnie aérienne depuis longtemps."
Programmeur et gestionnaire de projet informatique sont des professions différentes, même si les gestionnaires sont souvent issus des programmeurs.
Je pense que la position "Programmeur est un métier pour les jeunes" est très néfaste, car elle réduit considérablement la motivation. D'accord, il est difficile d'étudier dur pendant cinq ans à l'université, si vous pensez que plus tard vous serez un programmeur aussi pendant cinq ans maximum. Imaginez que vous soyez obligé d'étudier pendant huit ans pour devenir médecin, mais qu'on vous dise : "Médecin, c'est une profession pour les jeunes ; après la trentaine, il faut passer à un poste de direction. À quoi servent toutes ces années d'études rigoureuses ?
D'où vient le mythe "programmeur est une profession pour les jeunes" ?
J'ai essayé de le découvrir en mon temps et j'ai indiqué deux sources :
Les débuts de la programmation. Ces années romantiques où l'on écrivait des programmes non pas en assembleur, mais en code machine, et non pas dans un IDE normal, mais sur des cartes perforées. À l'époque, le développement de logiciels demandait beaucoup plus de travail qu'aujourd'hui. Et j'admets volontiers que ce processus particulier était plus facilement toléré par les jeunes.
Cependant, la situation est différente aujourd'hui. On n'est plus dans les années 50, le développement n'est pas si difficile.
C'est une particularité de la Russie. L'âge d'or de Runet s'est produit dans les années zéro : la sphère informatique s'est développée rapidement, tout a été automatisé, chaque entreprise a obtenu son propre système d'automatisation du flux de travail, des entreprises étrangères sont venues dans le pays... En outre, c'était une période glorieuse pour gagner les concours ACM. À cette époque, l'industrie se développait très rapidement. Vous pourriez travailler comme programmeur pendant cinq ans après l'obtention de votre diplôme, puis devenir un chef de projet. Peut-être qu'à cette époque, il y avait une perception que le programmeur est une étape transitoire dans la carrière.
Cependant, la situation est différente aujourd'hui. Il y a de nombreuses raisons à cela, mais la plus importante, à mon avis, est le fossé démographique. Avant Paris, j'ai eu la chance d'enseigner dans une université de province et de travailler dans des entreprises informatiques de province. Je peux en témoigner personnellement : dans les régions, la pénurie de personnel était déjà très aiguë en 2010. Il y avait beaucoup moins de jeunes, et les universités ne pouvaient tout simplement pas fournir le nombre requis de programmeurs. Cela ne se ressent peut-être pas à Montréal et à Paris, mais c'est le cas dans d'autres villes. Il n'y a personne pour remplacer tous les programmeurs de 30 ans. Il est évident qu'ils ne peuvent pas aller vers d'autres postes - qui va programmer ?
L'échec démographique a conduit au fait que la limite d'âge d'un programmeur en région a commencé à augmenter tranquillement mais régulièrement. La question de savoir si cela se produit dans la capitale reste ouverte.
Voir le cas de cet élève de 50 ans qui apprend la programmation sur PHP avec H2Prog
Conseils aux étudiants en informatique
Comment traiter votre profession ? Que faut-il étudier pour qu'à trente-cinq ans, on ne soit pas dépassé et qu'on ne regrette pas le temps perdu au collège ? Voici ce que j'en pense.
Ne considérez pas votre profession comme temporaire, sinon vous aurez des difficultés. Il faut étudier dur pour être programmeur, et il n'est pas difficile d'étudier quelque chose que l'on ne considère pas comme le travail de toute une vie : quand on prévoit d'y consacrer cinq ans maximum, et de faire ensuite les choses vraiment intéressantes comme la gestion de projets. Décidez si vous allez vraiment être un programmeur Javascript toute votre vie. N'oubliez pas que si vous percevez votre profession comme purement temporaire, la probabilité que vous la maîtrisiez superficiellement augmente considérablement.
Ne négligez pas la programmation de bas niveau comme l'assembleur et les langages tels que C/C++, notamment les pointeurs. Si vous ne le maîtrisez pas, vous vous coupez automatiquement d'un certain nombre de domaines de développement. L'exemple le plus évident est le développement de systèmes d'exploitation. S'il vous semble qu'il s'agit d'un domaine très spécialisé, pensez à l'infographie pour les jeux : elle existe aussi. Ou des pilotes pour les appareils modernes. Et des choses comme nginx seront problématiques à écrire. En termes de travail, n'oubliez pas que pratiquement toutes les entreprises - ici et à l'étranger - possèdent une masse de microcontrôleurs, et qu'il est peu probable qu'ils soient programmés en Python dans un avenir proche.
Ne négligez pas la programmation fonctionnelle. Pendant longtemps, surtout dans les années 90, à l'apogée de la POO, ce style semblait être quelque chose d'académique, qui en pratique ne se rencontre pas dans le travail d'un programmeur ordinaire. Tout a changé depuis le milieu des années quatre-vingt-dix, et Twitter peut confirmer avec autorité qu'il est possible de développer des systèmes à forte charge en Scala. En général, les concepts de la programmation fonctionnelle sont utilisés beaucoup plus largement que ne le pensent de nombreux étudiants. Pratiquement tous les langages de programmation, qui ont fait leur apparition au cours des dix dernières années, contiennent des éléments de programmation fonctionnelle. Ses concepts pénétreront longtemps encore dans diverses sphères. Pour ma part, je recommande le cours d'Abelson et Sussman. C'est le cours classique du MIT des années 80, après lequel les langues modernes sont beaucoup mieux maîtrisées.
Pour en savoir plus sur le sujet :
- Rôle de l'Intégrateur Web
- Focus sur la formation développeur web et mobile
- Le salaire d’Intégrateur Web
- Choisir ses langages de programmation en développement web
- Gérer un projet d’intégration Web
- La Gestion de Projet Agile
- Les Bases de données en développement web