Apprendre la programmation tout seul en 10 ans
- Une interrogation sur les raisons de cette précipitation dans l’apprentissage de la programmation.
- Les librairies débordent de livres comme « Apprenez Java en 24 heures », et de nombreux ouvrages affirment qu’on peut apprendre le C, le SQL, Ruby ou les algorithmes en quelques jours, voire quelques heures.
- En recherchant sur Amazon, depuis 2000, des livres contenant les mots « enseigner », « soi-même » et « temps », 512 résultats ont été trouvés. Parmi les 10 premiers, 9 étaient des livres sur la programmation.
- Même en remplaçant « enseigner soi-même » par « apprendre » et « temps » par « jours », on obtient des résultats similaires.
- La conclusion est que les gens sont pressés d’apprendre la programmation, ou que la programmation est perçue comme plus facile à apprendre que n’importe quel autre domaine.
Ce que signifie « Apprendre le C++ tout seul en 24 heures »
- En 24 heures, il n’y a pas assez de temps pour écrire plusieurs programmes importants et apprendre de ses réussites comme de ses échecs.
- Il n’y a pas non plus le temps de travailler avec des programmeurs expérimentés et de comprendre ce que signifie vivre dans un environnement C++.
- Un tel livre ne peut parler que d’une familiarité superficielle, pas d’une compréhension en profondeur.
- On peut peut-être y apprendre une partie de la syntaxe du C++, mais pas comment utiliser réellement le langage.
- Alan Perlis disait que si un langage n’influence pas votre manière de penser la programmation, il ne vaut pas la peine d’être appris.
Apprendre la programmation tout seul en 10 ans
- Selon la recherche, il faut environ 10 ans pour devenir expert dans des domaines variés comme les échecs, la composition musicale, l’exploitation du télégraphe, le dessin, le piano, la natation, le tennis, la neuropsychologie ou encore la recherche en topologie.
- L’essentiel, c’est la pratique délibérée : pas simplement répéter, mais se confronter à des tâches au-delà de son niveau actuel, essayer, exécuter, analyser sa performance pendant et après l’exécution, puis corriger ses erreurs.
- Devenir un véritable expert peut même prendre toute une vie.
Si vous voulez devenir programmeur
- Il faut s’intéresser à la programmation et programmer avec plaisir.
- Discuter avec d’autres programmeurs et lire d’autres programmes est plus important que n’importe quel livre ou cursus de formation.
- Vous pouvez passer 4 ans à l’université ou davantage encore en études supérieures, mais si l’école ne vous convient pas, vous pouvez acquérir une expérience comparable par un effort personnel ou en entreprise.
- Il faut mener des projets avec d’autres programmeurs et apprendre plusieurs langages de programmation.
- Puisque « computer science » contient « computer », il faut savoir combien de temps met un ordinateur à exécuter des instructions.
- Participer à un travail de normalisation des langages peut aussi être une bonne idée, mais il vaut mieux arrêter dès que possible.
- Apprendre uniquement à partir de livres ne suffit pas.
Annexe : choisir un langage
- Des conseils sur le choix du premier langage de programmation à apprendre.
- Il est recommandé d’utiliser le langage que vos amis utilisent, de rester simple et d’apprendre de manière interactive.
- Python ou Scheme sont recommandés comme premier langage de programmation.
Annexe : livres et autres ressources
- Tout en soulignant qu’« apprendre uniquement avec des livres ne suffit pas », l’auteur recommande plusieurs livres et pages web.
- Il recommande des livres et des ressources pour apprendre la programmation avec Scheme et Python.
L’avis de GN⁺
- Cet article met en avant une approche réaliste de l’apprentissage de la programmation et met en garde contre les fausses promesses selon lesquelles on pourrait devenir expert en très peu de temps.
- En présentant des recherches montrant qu’il faut 10 ans, ou 10 000 heures, de pratique délibérée pour développer une expertise, il propose une perspective de long terme sur l’apprentissage.
- Il souligne que, pour acquérir une compréhension profonde de la programmation et progresser réellement, il faut participer à divers projets, apprendre plusieurs langages de programmation et comprendre les principes fondamentaux de l’informatique. Cela offre des conseils utiles aux ingénieurs logiciels débutants qui envisagent d’apprendre la programmation.
1 commentaires
Avis sur Hacker News
Un utilisateur raconte avoir acheté en 1999 le livre "Sams Teach Yourself C++ in 24 Hours" et que la personne à la caisse, en le voyant, a ri en lui parlant d’un certain article. Une autre fois, à 16 ans, alors qu’il feuilletait des livres de programmation chez Borders, quelqu’un lui a tendu "The C Programming Language", ce qui a changé sa vie. Sa carrière a été largement façonnée par les rencontres avec des développeurs et d’autres personnes intéressées par la programmation.
Un autre utilisateur explique que l’essai qu’il a lu pour la première fois à l’adolescence a une signification particulière pour lui. En le relisant, il a remarqué une référence à Malcolm Gladwell et une mention de Ratatouille, ce qui lui a fait comprendre que l’article avait été mis à jour depuis sa publication en 1998. L’original reste disponible dans les archives et est bien plus court.
Un autre utilisateur dit qu’il apprend souvent à partir des livres, mais que cette approche l’aide davantage dans des domaines non liés à l’informatique qui évoluent lentement, comme les mathématiques ou la physique. Il critique un livre récent d’O'Reilly sur la programmation quantique, estimant qu’il n’explique pas suffisamment en détail les circuits quantiques pour aider à comprendre concrètement ce que l’on fait. Selon lui, les livres ne sont qu’un outil d’apprentissage, et les projets personnels peuvent être plus efficaces grâce à l’expérience pratique. Les livres sont utiles pour indiquer la bonne direction, mais il faut bien sûr trouver ceux qui correspondent à ses besoins. Il estime aussi que certaines personnes n’ouvrent un livre que si elles peuvent le lire en entier, et que c’est une attitude absurde. Il a commandé le livre Generative Deep Learning d’O'Reilly, en espérant en tirer quelque chose, et considère que même ne retenir que quelques informations au cours d’une carrière reste bénéfique.
Un utilisateur se dit profondément impressionné que les anciens liens Amazon.com présents sur la page renvoient encore des résultats pertinents. Il cite cela comme un bon exemple de "Cool URIs don't change".
Un autre utilisateur partage une liste de fils de discussion des 16 dernières années, en précisant qu’un repost après un an est acceptable et que ces liens sont là pour satisfaire la curiosité des lecteurs.
Un autre utilisateur souligne l’importance de la pratique délibérée : il ne suffit pas de répéter, il faut s’attaquer à des tâches au-delà de son niveau actuel, essayer, exécuter, analyser ses performances pendant et après, corriger ses erreurs, puis recommencer.
Un utilisateur se souvient d’une vidéo vue il y a 5 à 6 ans, qui mentionnait que le nombre de programmeurs augmentait et que la plupart avaient moins de 5 ans d’expérience. Il estime que cela a du sens à mesure que l’IT et le web prennent une place plus importante dans nos vies. Avec ses 20 ans d’expérience, il dit connaître beaucoup de choses que ceux qui ont moins de 5 ans d’expérience n’auront probablement jamais besoin de savoir, mais que l’expérience reste utile, tout en reconnaissant que les programmeurs moins expérimentés sont aussi capables de faire énormément de choses difficiles à imaginer.
Un autre utilisateur suppose qu’un texte daté de 1998 a probablement été mis à jour, puisqu’il contient des références à Clojure et Go.
Un utilisateur pense qu’apprendre la programmation devient de plus en plus artistique, jusqu’à relever finalement de l’art, et qu’il suffit de 2 à 3 ans d’engagement pour maîtriser les bases.
Enfin, un utilisateur souligne l’importance d’apprendre la programmation par soi-même, en rappelant qu’il s’agit d’un métier qui exige un apprentissage continu. Ce qu’on a appris il y a 5 ans peut encore s’appliquer aujourd’hui, mais il peut aussi être nécessaire d’apprendre de nouvelles choses adaptées au contexte actuel.