Tiens, faute d'arguments, on s'attaque à ma personne...
J'ai bouffé bien d'autres trucs, j'a mis en place des choses compliquées dans oracle que j'avais découvert la veille, j'ai fait en 2 jours des programmes qui avaient été chiffrés à 10 jours, j'ai mis en place des chaines complètes qui tournent encore comme du papier à musique 5 ans plus tard, je me suis fadé un maximum de théorie par mes propres moyens, bref, j'ai prouvé à de nombreuses reprise que je savais faire des choses propres. Qui marchent. Qui respectent les standards du métier. Et en qui les gens ont confiance.
Ah mais je ne dis pas le contraire. Je dis juste qu'on peut déjà être efficace sans cette théorie(même si elle est utile, et même si je continue régulièrement à m'auto-former, y compris à la théorie). Et qu'un sacré paquet de gens qui ont mangé cette théorie pendant 5 ans sont des gnous. Incapables de s'adapter à un problème auquel ils n'ont jamais été formés. Incapables de comprendre l'environnement du problème qu'ils sont en train de résoudre. Incapable de concevoir un algorithme complexe.
Le langage est important, oui, il m'est arrivé(rarement, mais violemment) de souffrir de l'aspect, euh, restons polis, peu dynamique du cobol(aucune collection, et des tableaux de taille toujours statique). C'est pour ça qu'un ingénieur(un vrai, quelqu'un qui en a l'esprit, pas forcément le diplôme), cherchera toujours à trouver de nouvelles techniques. Je me suis mis aux regex, récemment. rien que sur ce micro-sujet, il y a énormément de choses à apprendre. On pourrait passer toute sa carrière rien qu'à se former à l'immense univers du JAVA. Mais à un moment, il faut quand même être productif. Et c'est ça qui compte. Et les connaissances tant langagières que théoriques sont certes utiles, mais, de mon expérience, moins que la capacité brute à faire de l'algorithmique et à remettre tout ça dans son contexte.
Connaitre les 3 grands paradigmes, ça fait un meilleur programmeur. Donc je me suis farci de l'objet (C#, notamment) et du fonctionnel(LISP, scheme), et des langages multiparadigmes(Python). D'autres les apprennent sur les bancs de l'école. Peu importe. On peut déjà être bon sans ça. Et mauvais avec. C'est pour ça que les tests "techniques" sont importants. Quelqu'un qui ne connait pas le langage mais est capable de l'apprendre au fur et à mesure que se déroule le test aura bien plus de valeur que quelqu'un qui a mis deux ans à péniblement apprendre les rouages dudit langage.
Frédéric Latour a mieux expliqué que moi(et avec plus de billes) pourquoi le niveau était médiocre actuellement(je ne suis pas sur qu'il aie été meilleur avant, mais je n'ai pas de recul à ce sujet). Quand à ma remarque sur le niveau scientifique, je suis désolé, mais je la maintiens. La science, c'est partir des faits(i.e. l'écart moyen de productivité entre diplômés et non-diplômés est faible, celui entre diplômés eux-mêmes - ou entre non-diplômés, d'ailleurs, est bien plus fort) pour en tirer des hypothèses. Que l'on gardera ou que l'on écartera en fonction de l'évolution des faits. La science, ce n'est pas de partir d'une hypothèse, même séduisante(sans diplôme, on ne sait rien faire), pour ensuite essayer de la faire coller aux faits.
Je suis prêt à accepter d'avoir tort, mais il faut m'amener des arguments un peu plus sérieux que mon propre CV(un poil daté, en plus).