version originale
traduction : P.E.Allary
Pour toute suggestion quant ma traduction : peallary@voila.fr

Apprenez à programmer en dix ans


Pourquoi être si pressé ?

Entrez dans n'importe quelle librairie et vous verrez " Apprendre Java en 7 jours" aligné à côté d'une immense collection d'ouvrages sur le même thème : "Apprenez Visual Basic/Windows/Internet... en quelques jours/heures". La recherche suivante lancée sur Amazon.com :

        pubdate: after 1992 and title: days and
        (title: learn or title: teach yourself)
      
retourne 248 résultats. Les 78 premiers sont des livres d'informatique (le 79ème est Apprenez le bengalais en 30 jours). En remplaçant "jour" par "heures", on retrouve des résultats étonnamment similaires : 253 livres dont les 77 premiers sont consacrés à l'informatique (le 78ème étant Apprenez la grammaire et le style en 24 heures. Sur les 200 premiers résultats de la recherche, 96% sont des livres d'informatique.

Deux conclusions s'imposent : soit les gens sont très pressés d'apprendre l'informatique, soit cette discipline est incroyablement plus facile à apprendre que n'importe quelle autre. Aucun livre n'enseigne comment apprendre Beethoven, la physique quantique ou bien le dressage des chiens en quelque jours.

Analysons ce qu'un titre comme "Apprenez le Pascal en trois jours" peut vouloir dire :

Apprenez à programmer en dix ans

Des chercheurs (Hayes, Bloom) ont mis en évidence qu'il faut environ dix ans pour devenir expert dans une multitude de domaines aussi variés que le jeu d'échecs, la composition musicale, la peinture, le piano, la natation, le tennis ou la recherche en neuropsychologie et en topologie. Il ne semble pas y avoir de raccourci : même Mozart, prodige à l'age de quatre ans, ne commença à produire des oeuvres de premier plan que treize ans plus tard. Dans un autre genre, les Beatles ont semblé apparaître sur scène du jour au lendemain en 1964 dans le Ed Sullivan show. Mais leurs véritables débuts datent de 1957 et leur première oeuvre majeure, Sgt. Peppers, est sortie en 1967. Pour Samuel Johnson, il en faut bien plus : "Dans quelque domaine que ce soit, l'excellence ne s'atteint qu'au prix du travail d'une vie entière; elle ne s'achète pas à moindre prix.". Et Chaucer d'ajouter : "La vie est si courte, le métier si long à apprendre."

Voici ma recette pour devenir un bon programmeur :

Compte tenu de toutes ces remarques, on peut se demander ce que l'on peut apprendre en lisant simplement des livres. Avant la naissance de mon premier enfant, j'ai lu tous les livres "Comment faire pour...?" Je ne me sentais pas plus avancé. 30 mois plus tard, quand mon second enfant arriva, suis-je retourné à mes lectures ? Non. J'ai préféré faire confiance à mon expérience, qui s'est avérée bien plus utile et satisfaisante que des milliers de pages écrites par des experts.

Fred Brooks, dans son essai No Silver Bullet ("Pas De Solution Miracle"), isole trois facteurs pour identifier de bons développeurs :

Tout ceci suppose qu'une personne du groupe possède déjà ces qualités. Tout l'art consiste à organiser le reste de l'équipe autour de lui. Alan Perlis résume : "On peut apprendre à n'importe qui comment sculpter : Michel-Ange n'en n'aurait pas eu besoin. Il en est de même pour les programmeurs"

Vous pouvez donc acheter ce livre sur Java, vous lui trouverez certainement une utilité. Mais ne rêvez pas, il ne changera pas votre vie, pas plus qu'il ne changera radicalement votre vision de la programmation en 24 heures, quelques jours ou même quelques mois.

Références

Bloom, Benjamin (ed.) Developing Talent in Young People , Ballantine, 1985.
Brooks, Fred, No Silver Bullets , IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.
Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.
Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life , Cambridge University Press, 1988.

Réponses

Temps nécessaire à l'exécution de différentes opérations sur un PC 1GHz (été 2001) :
execute single instruction 1 nsec = (1/1,000,000,000) sec
fetch word from L1 cache memory 2 nsec
fetch word from main memory 10 nsec
fetch word from consecutive disk location 200 nsec
fetch word from new disk location (seek) 8,000,000nsec = 8msec

Notes


version originale : Peter Norvig (Copyright 2001)
dernière mise à jour : 24/05/2004
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.