Autoformation à la programmation en 10 ans (1998)
(norvig.com)- On n’acquiert pas de vraies compétences en programmation avec un manuel d’initiation en 24 heures ou 21 jours ; ce qu’on obtient avec un apprentissage court relève le plus souvent d’une familiarité superficielle
- Les recherches sur l’expertise dans des domaines variés comme les échecs, la composition, la peinture, la natation ou la recherche montrent qu’il faut environ 10 ans pour atteindre un haut niveau, et que l’essentiel n’est pas la simple répétition mais la pratique délibérée
- Pour devenir un bon programmeur, il faut garder le plaisir d’apprendre, construire des choses soi-même, lire le code des autres, travailler avec des personnes plus expérimentées et recevoir des retours
- L’université et les livres peuvent apporter diplôme, structure et profondeur, mais ils ne remplacent pas l’expérience de vrais projets, où l’on corrige des échecs et va jusqu’à la maintenance
- Pour choisir un premier langage, on peut se baser sur ses amis et la communauté, la simplicité et un environnement d’exécution interactif ; l’important est d’en choisir un et de commencer régulièrement
Les limites des promesses d’un apprentissage rapide de la programmation
- En librairie et en ligne, on trouve beaucoup de livres qui promettent d’enseigner Java, C, SQL, Ruby, les algorithmes, etc. en quelques jours ou quelques heures
- Dans la recherche avancée d’Amazon, après 2000, les livres dont le titre contenait
teach yourself hoursétaient au nombre de 512, et 9 des 10 premiers étaient des livres de programmation - On obtient des résultats similaires en remplaçant
teach yourselfparlearnouhourspardays
- Dans la recherche avancée d’Amazon, après 2000, les livres dont le titre contenait
- Ce type de titre donne l’impression que les gens veulent apprendre la programmation dans l’urgence, ou que la programmation est bien plus facile à apprendre que d’autres disciplines
- How to Design Programs de Felleisen et al. tourne cette tendance en dérision avec une formule du genre : « La mauvaise programmation est facile. Même les idiots peuvent l’apprendre en 21 jours. »
Ce que peut réellement vouloir dire “Teach Yourself C++ in 24 Hours”
-
Teach Yourself
- En 24 heures, on n’a pas le temps d’écrire plusieurs programmes significatifs, d’apprendre de ses réussites et de ses échecs, de travailler avec des programmeurs expérimentés, ni de comprendre ce que signifie vivre dans un environnement C++
- Ce qu’on peut acquérir, donc, ce n’est pas une compréhension profonde, mais plutôt une familiarité de surface
-
C++
- Si l’on connaît déjà un autre langage, on peut apprendre une partie de la syntaxe du C++ en 24 heures
- En revanche, il est difficile d’apprendre à quoi C++ est bon, à quoi il l’est moins, et comment utiliser réellement le langage dans la pratique
- Comme le disait Alan Perlis : « Un langage qui ne change pas votre façon de penser la programmation ne vaut pas la peine d’être connu »
-
24 Hours
- On peut apprendre un peu de C++, de JavaScript ou de Processing pour se connecter à un outil précis
- Dans ce cas, on apprend moins la programmation en elle-même que la manière d’accomplir une tâche spécifique
L’expertise prend du temps
- Les travaux de Bloom, Bryan & Harter, Hayes, Simon & Chase et d’autres montrent qu’il faut environ 10 ans pour construire une expertise dans de nombreux domaines
- Parmi les domaines étudiés : les échecs, la composition, la télégraphie, la peinture, le piano, la natation, le tennis, ainsi que la recherche en neuropsychologie et en topologie
- Le point clé n’est pas la simple répétition, mais la pratique délibérée (deliberative practice)
- Choisir des tâches légèrement plus difficiles que son niveau actuel
- Analyser les résultats pendant l’exécution et après coup
- Corriger ses erreurs puis recommencer
- Mozart était un enfant prodige à 4 ans, mais il lui a encore fallu 13 ans pour produire une musique de niveau mondial
- Les Beatles ont attiré l’attention en 1964 avec l’émission d’Ed Sullivan et leurs tubes classés n°1, mais ils jouaient dans de petits clubs de Liverpool et de Hambourg depuis 1957, et Sgt. Pepper’s, leur grand succès critique, n’est sorti qu’en 1967
- Malcolm Gladwell a popularisé l’expression des 10 000 heures, mais l’important n’est pas tant le chiffre exact que la pratique régulière sur plusieurs années
- Pour K. Anders Ericsson, les 10 000 heures servent surtout à donner un ordre de grandeur : même une personne talentueuse a besoin de nombreuses années à raison de 10 à 20 heures par semaine pour atteindre le plus haut niveau
- Un seul chiffre ne peut pas tout expliquer
- Il est difficile de soutenir que la programmation, les échecs, le jeu de dames et la musique exigent exactement le même temps
- Il est tout aussi difficile de penser que tout le monde apprend à la même vitesse
Comment devenir programmeur
- Il faut ressentir un intérêt pour la programmation et commencer par plaisir
- Il faut que ce plaisir tienne assez longtemps pour y consacrer 10 ans ou 10 000 heures
- Il faut programmer soi-même
- La meilleure façon d’apprendre est d’apprendre en pratiquant
- Un apprentissage efficace exige des tâches claires, d’une difficulté adaptée à la personne, des retours utiles, ainsi que des occasions de répéter et de corriger ses erreurs
- Il faut parler avec d’autres programmeurs et lire les programmes écrits par d’autres
- C’est plus important que n’importe quel livre ou cursus
- Si on le souhaite, on peut passer quatre ans à l’université ou poursuivre davantage en cycle supérieur
- Un diplôme permet d’accéder à des métiers qui exigent des qualifications et peut donner une compréhension plus profonde du domaine
- Si l’on n’aime pas l’école, on peut aussi obtenir une expérience comparable seul ou sur le terrain, avec suffisamment d’engagement
- Apprendre uniquement par les livres ne suffit pas
- Il faut travailler sur des projets collaboratifs avec d’autres programmeurs
- Sur certains projets, on peut être le meilleur programmeur et tester son leadership ainsi que sa vision
- Sur d’autres, on peut être le moins expérimenté et apprendre ce que font les experts, et ce qu’ils refusent de faire
- Il faut aussi prendre en main des projets existants après le départ d’autres programmeurs
- On apprend ce qu’il faut pour comprendre et corriger des programmes écrits par d’autres
- Cela pousse aussi à réfléchir à la manière de concevoir pour les personnes qui devront maintenir le code plus tard
Une expérience large des langages et des systèmes
- Il faut apprendre au moins six langages de programmation
- Des langages qui mettent l’accent sur l’abstraction par classes : Java, C++
- Des langages qui mettent l’accent sur l’abstraction fonctionnelle : Lisp, ML, Haskell
- Des langages qui prennent en charge l’abstraction syntaxique : Lisp
- Des langages qui prennent en charge les spécifications déclaratives : Prolog, templates C++
- Des langages qui mettent l’accent sur le parallélisme : Clojure, Go
- Il faut se souvenir que computer science contient bien computer
- Il faut connaître le temps nécessaire pour exécuter une instruction, récupérer un mot en mémoire, subir un cache miss, lire séquentiellement sur disque ou effectuer un seek disque
- Il peut aussi être utile de s’impliquer dans des activités de standardisation des langages
- Cela peut être un grand effort comme le comité ANSI C++, ou quelque chose d’aussi local que décider s’il faut indenter avec 2 ou 4 espaces dans un style de code
- On y apprend ce que les autres aiment dans un langage, et pourquoi ils y tiennent autant
- Il faut aussi avoir le discernement de s’en retirer le plus vite possible
Les livres et l’enseignement ne suffisent pas
- Même si l’on lit beaucoup de livres sur l’éducation des enfants, on peut se sentir débutant à la naissance du premier, puis, à l’arrivée du deuxième, s’appuyer davantage sur son expérience personnelle que retourner aux livres
- Dans No Silver Bullet, Fred Brooks propose un plan en trois parties pour trouver d’excellents concepteurs logiciels
- Identifier le plus tôt possible et de manière systématique les concepteurs exceptionnels
- Leur attribuer un mentor de carrière chargé de leur progression et de la gestion de leur dossier professionnel
- Offrir aux concepteurs en progression des occasions d’échanger et de se stimuler mutuellement
- Alan Perlis disait : « Tout le monde peut apprendre la sculpture, mais pour Michel-Ange il aurait sans doute fallu apprendre à ne pas sculpter »
- Il existe peut-être chez les grands programmeurs des caractéristiques internes qui dépassent la simple formation, mais il est impossible d’affirmer avec certitude qu’elles sont innées ou développées par le travail
- Les livres sur Java, Ruby, JavaScript ou PHP peuvent être utiles, mais ils ne changent ni une vie ni une expertise complète en 24 heures ou en 21 jours
- Travailler sérieusement à s’améliorer pendant 24 mois constitue en revanche un point de départ significatif
Ordres de grandeur du temps de fonctionnement d’un ordinateur
- Sur un PC ordinaire, les temps approximatifs de diverses opérations sont les suivants
- Exécution d’une instruction classique : 1 nanoseconde
- Récupération depuis le cache L1 : 0,5 nanoseconde
- Échec de prédiction de branchement : 5 nanosecondes
- Récupération depuis le cache L2 : 7 nanosecondes
- Verrouillage/déverrouillage d’un mutex : 25 nanosecondes
- Récupération depuis la mémoire principale : 100 nanosecondes
- Transfert de 2 KB sur un réseau à 1 Gbps : 20 000 nanosecondes
- Lecture séquentielle de 1 MB en mémoire : 250 000 nanosecondes
- Seek vers une nouvelle position sur disque : 8 000 000 nanosecondes
- Lecture séquentielle de 1 MB sur disque : 20 000 000 nanosecondes
- Aller-retour d’un paquet entre les États-Unis et l’Europe : 150 millisecondes, soit 150 000 000 nanosecondes
Critères pour choisir son premier langage de programmation
- Il n’existe pas de réponse unique à la question du premier langage
- On peut se baser sur ses amis et la communauté
- C’est comparable à la réponse qui consiste à choisir le système d’exploitation utilisé par ses amis
- L’avantage de pouvoir apprendre avec ses amis peut compenser les différences propres au système d’exploitation ou au langage
- Il faut aussi regarder si le langage choisi dispose d’une communauté active, de livres, de sites web et de forums en ligne
- La simplicité est importante
- C++ et Java ont été conçus pour des programmeurs expérimentés travaillant en équipe sur du développement professionnel à grande échelle, et comportent des aspects complexes liés à l’efficacité d’exécution
- Cette complexité n’est pas nécessaire pour quelqu’un qui débute
- Un environnement d’exécution interactif facilite l’apprentissage
- C’est comme le fait qu’il soit plus facile d’apprendre le piano quand on entend le son dès qu’on appuie sur une touche, plutôt que d’attendre la fin du morceau dans un fonctionnement par lots
- En programmation aussi, les langages offrant un mode interactif ont un avantage
- Selon ces critères, Python ou Scheme sont recommandés comme premier langage
- JavaScript peut aussi être un choix, non parce qu’il aurait été conçu parfaitement pour les débutants, mais parce qu’il existe beaucoup de tutoriels en ligne
- Par exemple, les tutoriels de Khan Academy
- Les très jeunes apprenants peuvent préférer Alice, Squeak ou Blockly, que des apprenants plus âgés peuvent aussi apprécier
- L’important est d’en choisir un et de commencer
Livres et ressources recommandés
- Les livres seuls ne suffisent pas, mais les ressources suivantes peuvent aider à apprendre
-
Structure and Interpretation of Computer Programs
- Structure and Interpretation of Computer Programs est un excellent livre d’introduction à l’informatique, qui enseigne la programmation comme une manière de comprendre l’informatique
- On peut consulter les vidéos de cours et le texte intégral en ligne
- C’est un livre exigeant, qui peut écarter certains apprenants qui réussiraient mieux avec une autre approche
-
How to Design Programs
- How to Design Programs est l’un des bons livres qui expliquent comment réellement concevoir des programmes de façon élégante et fonctionnelle avec Scheme
-
Python
- Python Programming: An Intro to CS est une bonne introduction utilisant Python
- Python.org propose plusieurs tutoriels pour débutants
-
Oz
- Concepts, Techniques, and Models of Computer Programming est parfois considéré comme un successeur moderne d’Abelson & Sussman
- Il couvre largement les grandes idées de la programmation et, même s’il utilise Oz, un langage peu connu, il peut servir de base pour apprendre d’autres langages
1 commentaires
Commentaires sur Hacker News
En 1999, j’ai acheté chez CompUSA "Sams Teach Yourself C++ in 24 Hours", et la personne à la caisse s’est mise à rire en le voyant avant de me parler de cet article
À 16 ans, je regardais des livres de programmation chez Borders quand quelqu’un m’a tendu "The C Programming Language", et ça a changé ma vie
Une grande partie de ma carrière s’est construite au fil de rencontres fortuites, dans le monde réel, avec des développeurs ou des personnes intéressées par la programmation
La dernière fois que j’ai ressenti ça, c’était en sortant de Microcenter avec un nouveau MacBook et un iPod Touch, en me disant que j’étais prêt à créer le prochain Angry Birds
Environ 8 ans plus tard, quand j’ai acheté Turbo Pascal, tout le nécessaire était aussi inclus, ce qui m’a permis d’apprendre rapidement, et quand j’ai commencé Linux en 1995, les pages man et la documentation info suffisaient à m’apprendre presque tout ce qu’il fallait pour programmer sur ce système
Je me souviens aussi d’avoir lu le manuel EGCS du début à la fin vers la fin des années 90
Cette époque où les logiciels étaient livrés avec toutes les informations nécessaires me manque, et je trouve dommage qu’aujourd’hui il faille fouiller Google pour trouver une page produit ou un manuel
Dans cinq ans, j’ai l’impression qu’on en viendra même à regretter la recherche Google utilisée à la place des manuels, parce que toutes les infos pertinentes ne seront publiées que sur Discord et ne seront pas indexées
J’ai aussi appris la programmation réseau sous Linux et FreeBSD au début des années 2000 uniquement avec les pages man, et quand j’ai lu plus tard le livre de Stevens, je l’ai parcouru très vite grâce à ces pages man et à l’expérience acquise en écrivant quelques programmes
J’avais téléchargé Visual Basic 3.0 sur AOL en 100 pièces jointes d’e-mail et je voulais apprendre à faire du punter/prog
J’ai recopié le code du livre pour essayer de jouer un fichier son au démarrage du programme, et j’ai été complètement bluffé quand ça a vraiment marché
Pouvoir ensuite faire carrière dans le développement logiciel a été un immense privilège
Dans les années 90, il était assez courant de ne recevoir, au mieux, aucune aide, et au pire qu’une réaction d’incrédulité
Tous les développeurs devraient lire et apprendre C et K&R au moins une fois, même s’ils oublient vite le C ensuite
J’ai lu cet article pour la première fois à l’adolescence, quand je commençais tout juste à apprendre à coder, donc il a une signification particulière pour moi
En le relisant, j’ai été surpris d’y voir Malcolm Gladwell, parce que je gardais le souvenir que Outliers n’était devenu célèbre que bien plus tard
C’est seulement en voyant la référence à Ratatouille que j’ai compris que le texte avait été mis à jour après sa publication en 1998, et l’original est conservé dans les archives, bien plus court : https://web.archive.org/web/19980206223800/https://norvig.co...
Le fait que Peter Norvig ait continué à retravailler son texte pendant des années force le respect
Il est cité beaucoup trop souvent, et la règle des 10 000 heures ressemble désormais à un simple mème
Aujourd’hui, j’ai appris la programmation en autodidacte, mais le parcours a été bien plus difficile et sinueux que je ne l’imaginais à l’époque
J’apprends bien avec les livres, mais cette approche fonctionne souvent mieux dans des domaines non informatiques comme les maths ou la physique, où les choses changent moins vite
Un mauvais exemple récent a été le livre d’O'Reilly sur la programmation quantique, qui n’entrait pas assez dans le détail pour que je comprenne vraiment ce que je faisais avec les circuits quantiques
Cela dit, c’est peut-être aussi la faute du côté prétentieux de l’informatique quantique elle-même, et le Nielsen/Chuang que je lis en ce moment est très théorique, mais ses explications sont extrêmement claires, donc j’y reviendrai peut-être plus tard
Les livres ne sont qu’un outil d’apprentissage, et les projets perso peuvent même être un outil encore plus efficace, puisqu’ils permettent aussi d’accumuler de l’expérience
Malgré tout, le savoir, c’est le pouvoir, et les livres sont excellents pour donner la bonne direction, à condition d’avoir trouvé le bon livre pour ses besoins
Je connais aussi des gens qui n’ouvrent même pas un livre s’ils ne sont pas sûrs de le lire jusqu’au bout, et je trouve cette attitude absurde
Je viens justement de commander Generative Deep Learning chez O'Reilly, et si j’en retire ne serait-ce que quelques éléments utiles pour ma carrière, ce sera déjà largement rentable
Au minimum, il fera belle figure sur l’étagère
On voit sortir un nouveau framework frontend chaque semaine, mais au final ils produisent tous du HTML
Il s’agit de fils de discussion couvrant 16 ans
Les republications semblent acceptables au bout d’environ un an, et les liens vers d’anciens fils sont là pour les lecteurs qui veulent creuser davantage
Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=33287618 - octobre 2022, 112 commentaires
Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=27411276 - juin 2021, 115 commentaires
Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=20543495 - juillet 2019, 87 commentaires
Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=16574248 - mars 2018, 51 commentaires
Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=9395284 - avril 2015, 61 commentaires
Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=5519158 - avril 2013, 86 commentaires
Teach Yourself Programming in Ten Years by Peter Norvig (2001) - https://news.ycombinator.com/item?id=3439772 - janvier 2012, 29 commentaires
Teach Yourself Programming in 10 Years. - https://news.ycombinator.com/item?id=1060176 - janvier 2010, 32 commentaires
Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=191235 - mai 2008, 19 commentaires
Norvig: Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=43243 - août 2007, 7 commentaires
Il est impressionnant de voir que l’ancien lien Amazon.com présent sur la page, malgré des paramètres de requête assez complexes, renvoie encore aujourd’hui des résultats pertinents
C’est un bon exemple de « Cool URIs don't change »
[0] http://www.amazon.com/gp/search/ref=sr_adv_b/?search-alias=s...
[1] https://www.w3.org/Provider/Style/URI
J’ai rencontré pas mal de gens qui demandent comment décrocher un poste de programmeur au travail ou ailleurs.
Quand je leur raconte mon parcours — avoir commencé jeune, en avoir fait un grand hobby, puis avoir suivi un diplôme d’informatique et des stages — ils sont surpris et déçus d’apprendre qu’il n’y a pas de raccourci.
Ou alors, existe-t-il un raccourci ? Je me demande si quelqu’un a réussi en terminant avec succès un bootcamp pour passer de 0 à 1.
J’avais suivi quelques cours de programmation au lycée et à l’université pour le plaisir, mais mes connaissances étaient très limitées.
Ce bootcamp tenait ses promesses ; les horaires officiels étaient de 9 h à 17 h, mais beaucoup arrivaient à 7 h du matin et repartaient à 22 h.
On y allait aussi le week-end, avec parfois seulement le dimanche de repos.
J’ai volontairement choisi un bootcamp dans une autre ville pour ne pas être distrait par ma vie sociale.
Je me suis concentré sur Ruby et JavaScript, puis j’ai décroché quelques mois après le diplôme un stage en C#/.NET.
J’ai choisi un stage parce qu’obtenir directement un poste de développeur junior semblait difficile à défendre, et j’ai été promu développeur junior au bout de deux semaines.
L’école a disparu après avoir été rachetée par Kaplan.
J’ai appris seul les bases de JavaScript pendant 8 mois dans le sous-sol de la maison de ma mère, et j’ai pu trouver un emploi.
Ensuite, j’ai consacré énormément de temps à la programmation, au point de cumuler des dizaines de milliers d’heures jusqu’à aujourd’hui.
J’ai travaillé sur des compilateurs, la 3D, les semi-conducteurs et des moteurs de jeu.
Mon expérience semble aller dans les deux sens.
Vers 2012, on pouvait entrer dans le secteur relativement facilement avec peu d’expérience, mais depuis, devenir un bon ingénieur que des gens avec des projets intéressants ont envie d’embaucher a demandé un effort énorme.
D’après des données limitées, c’est très variable — comme avec des développeurs issus d’une formation traditionnelle.
Les meilleurs résultats venaient de personnes formées de manière classique en physique, chimie ou ingénierie et souhaitant se reconvertir ; elles se rapprochaient de juniors avancés avec une courbe d’apprentissage rapide.
Si vous voulez intégrer un débutant motivé dans un domaine du logiciel où la programmation pure est moins importante, cela peut être un excellent recrutement.
L’écart-type est important, mais je ne sais pas s’il l’est davantage que chez les diplômés de cursus en deux ans.
À l’université, j’avais étudié les sciences humaines et je n’avais jamais codé.
Les deux premières années ont été vraiment difficiles, et comme je n’avais pas les bases, j’avais constamment l’impression de nager à contre-courant.
Ce n’est qu’à la fin du programme de deux ans que j’ai eu le sentiment de pouvoir apporter de la valeur de manière autonome.
Mes connaissances sont assez orientées application, et comme il me manque les bases en informatique théorique, je dois apprendre les fondamentaux en cours de route, ce qui rend parfois les choses plus difficiles.
Cela dit, mon poste actuel est celui de data engineer, donc les domaines classiques de l’informatique comme les structures de données et les algorithmes y sont relativement moins demandés.
Le cœur du sujet, c’est la pratique délibérée.
Il ne s’agit pas simplement de répéter, mais de s’attaquer à des tâches légèrement plus difficiles que son niveau actuel, d’essayer, d’analyser pendant et après l’exécution, de corriger ses erreurs, puis de recommencer.
Pour continuer à apprendre, il faut se mettre au défi et sortir de sa zone de confort.
Après l’avoir utilisé pendant quelques mois, j’ai été déconnecté par hasard, et j’ai fini par trouver précieux le léger inconfort de devoir consulter la documentation officielle.
La première semaine, j’ai été surpris de me sentir beaucoup plus lent.
Passer par cette étape supplémentaire pour apprendre à partir de sources primaires, et parfois apprécier l’inconfort, est important pour progresser comme programmeur.
En particulier, si quelqu’un a réalisé ses devoirs de première ou deuxième année uniquement avec Copilot, il risque d’automatiser sa propre utilité jusqu’à la faire disparaître.
D’un autre côté, on a tenu des discours similaires sur les « enfants de l’iPad ».
L’iPad a aussi un système de fichiers, et les apps continuent de gagner en fonctionnalités dans le cadre approuvé par Apple, donc je ne pense pas que ce soit une mauvaise approximation d’un ordinateur portable.
Moi aussi j’utilise Copilot, mais surtout comme une autocomplétion intelligente pour configurer des variables ou gérer de petites tâches répétitives.
Cela sert à gagner du temps qu’il vaut mieux consacrer à mettre la résolution de problèmes en contexte et à interagir avec ses coéquipiers, pas à remplacer les ingénieurs.
L’expertise vient de l’expérience, et l’expérience ne s’accumule que si l’on y revient sans cesse.
Certaines personnes peuvent se pousser à souffrir indéfiniment, mais pour la plupart, il est plus sage de commencer par trouver une facette du logiciel qu’on peut vraiment aimer, puis de la cultiver.
J’ai vu des gens clairement plus intelligents que moi quitter le domaine du code parce qu’ils étaient trop intelligents.
Soit ils ne trouvaient plus cela assez stimulant, soit ils se lassaient de faux défis comme « attendre que les autres rattrapent leur retard ».
C’étaient souvent des gens qui travaillaient sur des technologies de pointe devenant la norme quelques années plus tard.
Si la fascination est votre moteur, vous pouvez peut-être vous réjouir de ne pas être trop intelligent.
Le texte est indiqué comme datant de 1998, mais comme il mentionne Clojure et Go, il semble avoir été mis à jour par la suite.
Bon texte
Pour atteindre 10 000 heures sur une base de 8 heures par jour et 40 heures par semaine, il faut 250 semaines
Même en programmant presque sans arrêt, cela fait environ 5 ans, et en pratique on est plus proche de 10 ans pour atteindre cet objectif
Si on programme beaucoup, atteindre 3 000 heures par an est assez facile
La plupart des jours, je programme 12 heures par jour, 6 à 7 jours par semaine la plupart des semaines
Les jours où je suis vraiment très motivé, j’en fais même 18
Je vis comme ça depuis presque 10 ans, avec parfois un mois de pause où je réduis à 3 ou 4 longues journées par semaine
Même avec une estimation prudente, ça fait autour de 3 500 heures par an
Si je travaille autant, c’est parce que j’adore vraiment programmer, et qu’à part surfer le matin, il n’y a rien que j’aie plus envie de faire
Cela dit, il semble globalement juste qu’il faille autour de 10 ans de carrière pour devenir un développeur solide
Je n’ai jamais vu quelqu’un réellement atteindre ce niveau en 5 ans
Les personnes qui s’y sont consacrées de façon obsessionnelle depuis l’adolescence peuvent parfois gagner quelques années, mais à un certain point ces périodes finissent aussi par se recouper
Bien sûr, il y a aussi la vieille formule sur le problème de « répéter 10 fois une année d’expérience »
J’ai aussi vu beaucoup de développeurs avec plus de 10 ans d’expérience qui n’étaient pas solides
On a l’impression qu’il suffit d’entrer dans un poste junior, de travailler 5 ans et de progresser ensuite
L’intuition se construit en s’attaquant à des problèmes de plus en plus difficiles
À un moment, on devient capable de relier et d’appliquer à un domaine ce qu’on sait d’un autre, et c’est là que la créativité commence à entrer en jeu
Je ne retrouve pas la source d’une vidéo que j’ai vue il y a 5 ou 6 ans, mais l’idée était qu’avec l’augmentation du nombre de programmeurs, la majorité avait moins de 5 ans d’expérience
Dans le contexte où l’IT et le web prennent une place de plus en plus grande dans nos vies, cela avait du sens
[0] https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM retrouvé grâce au commentaire de wild_egg
Après 20 ans, je constate qu’il y a désormais pas mal d’informations que je n’ai plus besoin de connaître, et probablement beaucoup d’autres qui ne seront jamais utiles aux personnes avec moins de 5 ans d’expérience
Mais l’expérience reste l’expérience, et savoir comment les choses sont construites et pourquoi elles existent est toujours utile
Il y a aussi beaucoup de programmeurs moins expérimentés que moi qui peuvent faire énormément de choses que je ne pourrais même pas imaginer
Honnêtement, avec sa complétude de Turing, ce domaine est vraiment vaste
Je n’ai jamais appris la syntaxe par cœur, j’ai toujours programmé avec les pages man et les manuels ouverts
Mais chaque langage et chaque technologie que j’ai appris m’ont enseigné quelque chose d’utile sur les problèmes fondamentaux de l’informatique et des systèmes
La manière de traiter les problèmes change d’habillage, mais les problèmes eux-mêmes restent les mêmes
Il n’y a pas de raccourci, et je sais avec certitude qu’en tant que programmeur, je suis aujourd’hui de plusieurs ordres de grandeur plus compétent que je ne l’étais à ma cinquième année
Si j’ai plus hâte que jamais d’apprendre et de faire de nouvelles choses, c’est parce qu’elles ouvriront encore davantage de facettes de cette discipline
La seule chose qui m’inquiète, c’est le jour où mon corps et mon esprit ne suivront plus, pas le fait d’épuiser ce qu’il reste à apprendre ni d’être dépassé par les plus jeunes
https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM
On a encore l’impression d’être à l’époque des alchimistes
Un jour, des chimistes apparaîtront, systématiseront ces observations de fortune et en jetteront une grande partie
D’ici là… Newton aussi était alchimiste, et il a pourtant apporté une contribution assez considérable