Mais pour Peter Norvig, directeur de recherche chez Google, la programmation est quelque chose qu'on devrait normalement apprendre sur une période assez longue, 10 ans par exemple. C'est ce qu'il expliquait d'ailleurs dans un billet publié il y a quelques années et intitulé « Teach Yourself Programming in Ten Years ». Dans ce billet, il critiquait notamment les bouquins avec des titres comme « Apprendre X en Y heures/jours », par exemple « Teach Yourself C++ in 24 Hours ». Il disait avoir fait une recherche avancée sur Amazon pour répertorier les livres avec des titres de ce genre qui ont été publiés depuis l'année 2000. Et il en avait trouvé 512. Le point remarquable est que 9 des 10 premiers étaient des livres de programmation.
« Soit les gens sont pressés d’apprendre la programmation, soit la programmation est en quelque sorte fabuleusement plus facile à apprendre que toute autre chose », a-t-il conclu. Bien sûr, il pense que c'est plutôt parce que les gens sont pressés d'apprendre la programmation, mais il avertit qu'on ne peut rien apprendre de bon dans de courts délais, peu importe les techniques pédagogiques utilisées : « une mauvaise programmation est facile, les idiots peuvent l'apprendre en 21 jours, même s'ils sont des nuls », dit-il en citant des auteurs d'un bouquin en informatique.
Ses raisons sont évidentes. Dans un court délai, vous n'aurez pas le temps d'écrire plusieurs programmes significatifs, et d’apprendre de vos succès et échecs. Vous n'aurez pas non plus le temps de travailler avec un programmeur expérimenté et de comprendre ce que c’est de vivre dans cet environnement. En résumé, vous n’aurez pas le temps d’apprendre vraiment. Vous allez vous familiariser à la programmation ou au langage en question, sans avoir de connaissance approfondie. C'est ce.qu'il exprime par une citation du poète anglais Alexander Pope : « a little learning is a dangerous thing », ce qui peut se traduire en français par : « un peu d'apprentissage est une chose dangereuse ».
Peter Norvig, directeur de recherche chez Google
Cela dit, pour avoir du succès en tant que développeur, Peter Norvig propose, entre autres, de :
- s'intéresser avant tout à la programmation, et le faire parce que c’est agréable. Du moins, cela doit être suffisamment agréable de sorte que vous désiriez vouloir y consacrer 10 ans ;
- apprendre la programmation par la pratique ;
- échanger avec d’autres programmeurs et lire d'autres programmes. C’est, selon lui, plus important que n’importe quel livre ou cours ;
- suivre une formation informatique de 4 ans ou plus, ce qui va vous donner une compréhension plus approfondie du domaine et un accès à des emplois qui nécessitent des qualifications. Sinon, Peter Norvig pense que vous pouvez aussi suivre le chemin de l'autodidacte, pour acquérir des compétences similaires, mais estime que l'apprentissage par les livres ne sera pas suffisant ;
- travailler sur des projets avec d’autres programmeurs, en tant que numéro un pour certains projets et à la dernière place dans d'autres projets. A la tête d'un projet, vous allez tester vos habiletés à mener un projet, et à inspirer les autres par votre vision. Dans l'autre cas, vous allez apprendre ce que font les leads et apprendre ce qu’ils n’aiment pas faire (parce qu’ils vous le donneront à faire) ;
- travailler sur des projets après d’autres programmeurs, par exemple prendre le temps de comprendre un programme écrit par quelqu’un d’autre. Cela devrait vous permettre d'avoir une idée de l’effort nécessaire pour le comprendre et le corriger lorsque les programmeurs initiaux ne sont plus là. Cela devrait en outre vous faire réfléchir à la manière de concevoir vos programmes de manière à faciliter la vie de ceux qui vont les maintenir par la suite ;
- apprendre au moins une demi-douzaine de langages de programmation, y compris un langage qui supporte l’abstraction de classe (comme Java ou C++), un qui supporte l’abstraction fonctionnelle (comme Lisp ou Haskell), un qui supporte l’abstraction syntaxique (comme Lisp), un qui supporte les spécifications déclaratives (comme Prolog ou les templates C++) et un qui supporte le parallélisme (comme Clojure ou Go) ;
- toujours se rappeler que l’ordinateur fait partie intégrante de l’informatique. Peter Norvig estime en effet que vous devez savoir combien de temps cela prend à votre ordinateur pour exécuter une instruction, lire un mot dans la mémoire (qu’il soit déjà dans la mémoire cache ou pas), lire des mots consécutifs à partir du disque ;
- s'impliquer dans un projet de standardisation d’un langage. Il pourrait s'agir d'un projet de standardisation international ou juste de décider si votre style de codage local aura des indentations de 2 ou 4 espaces. De toute manière, Peter Norvig pense que cela va vous permettre de connaitre ce que les autres aiment dans un langage, à quel point ils y tiennent, et peut-être un peu sur leurs raisons.
Source : Peter Norvig
Et vous ?
Qu'en pensez-vous ?
Faut-il remplir toutes les conditions citées ici par Peter Norvig pour être un développeur expérimenté ou accompli ?
Quelles conditions sont les plus nécessaires ?
Vous considérez-vous comme un développeur accompli ou expérimenté ? Si oui, combien d'années cela vous a-t-il pris ?
Voir aussi :
Comment devenir un meilleur développeur ? La formation et l'expérience sont-elles suffisantes ? Vous êtes invités à partager votre avis
Que faire pour minimiser l'impact des interruptions sur l'activité de développement de logiciels ? Appliquer les méthodes Agile ?
Y a-t-il une corrélation entre diplôme et succès en tant que développeur de logiciels ? Un acteur de la sphère donne son avis
Pourquoi réécrire un projet en partant de zéro ? Parce que l'ancien code est un fatras ou qu'il est plus facile d'écrire que de lire un code ?
Que pensez-vous des formations intensives en programmation ? Sont-elles plus efficaces que les formations classiques en informatique ?