Depuis quelque temps, les médias vantent la « pédagogie innovante » de certains établissements atypiques d'enseignement de l'informatique. En résumé, on laisse les étudiants se débrouiller et interagir, et ils deviennent des programmeurs, sans avoir à suivre de cours, sans nécessiter d'enseignants. Le sous-entendu est évident : les méthodes classiques d'apprentissage universitaire (cours, travaux dirigés, travaux pratiques) sont inadaptées, les enseignants universitaires dépassés, les apprentissages peu réalistes par rapport aux attentes industrielles…

J'ai une certaine expérience de l'enseignement de la programmation. Je discute avec mes collègues. Voici comment cela se passe, souvent, dans une vraie séance de travaux pratiques (TP) :

Un étudiant se plaint que « ça ne fonctionne pas » et que l'ordinateur s'est trompé (alors qu'évidemment l'erreur est dans ce qu'il a écrit).

Un étudiant dit qu'il n'y a pas de documentation, ou se plaint que celle-ci est en anglais (à peu près toutes les documentations techniques de programmation sont en anglais).

Un étudiant asiatique tape du code sans jamais essayer de l'exécuter car il ne sait pas comment faire et n'ose pas demander.

Un étudiant copie du code sans le comprendre depuis un autre programme.

Un étudiant se plaint que « ça ne marche pas », on lui dit de lire les messages d'erreur et notamment le premier, il ne le fait pas et continue de regarder son écran en disant « ça ne marche pas ! ».

D'une façon générale, un TP de programmation débutants, c'est pour l'enseignant entendre un flux interrompu de « monsieur ! » (et pour l'enseignante, « madame ! ») et courir d'un étudiant à l'autre, chacun coinçant sur son problème.

Autant dire que quand on a cette expérience, on éprouve un certain scepticisme quant à la portée d'une pédagogie fondée sur le travail autonome, sans enseignants. Non que cela soit impossible — on connaît bon nombre de gens ayant appris la programmation par eux-mêmes, c'est d'ailleurs mon cas — mais manifestement cela ne convient pas à de très nombreux étudiants, sans doute la majorité.

Une telle pédagogie convient à des étudiants autonomes, débrouillards, ayant un niveau minimal de lecture en anglais. Que faire des autres ? Et même pour des personnes débrouillardes, il y a le risque de perdre du temps sur des blocages qui se régleraient vite en recourant à un enseignant.

Voici pour la programmation. On voit d'autres évoquer ce type de pédagogie pour enseigner « l'algorithmique » à des étudiants sans prérequis. Or, au-delà d'un certain point en algorithmique (notamment quand on veut justifier le bon fonctionnement de certains algorithmes, ou encore borner le nombre d'opérations qu'ils effectuent), on est obligé de faire appel aux mathématiques. Ceci nécessite une certaine aisance : notations, concepts, comment on rédige une démonstration…

Il est vrai que de nombreux métiers de l'informatique n'exigent guère de connaissances d'algorithmique — une bonne partie de la programmation d'applications consiste à assembler des composants rédigés par d'autres et qui contiennent les éventuelles parties proprement algorithmiques. Quoique… à vouloir assembler des composants sans comprendre comment ils fonctionnent et notamment dans quelles circonstances ils sont efficaces ou inefficaces, on obtient parfois des systèmes qui ne supportent pas la montée en charge ! Bref, former à la programmation sans algorithmique, ou à l'algorithmique sans mathématiques, me semble former à des métiers d'exécutants qui auront besoin de personnels à la formation plus complète pour concevoir les parties plus délicates et dimensionner les systèmes.

Passons aux clichés sur l'enseignement universitaire. On voit des gens parler comme si à l'université l'informatique se faisait en cours magistraux, sans manipuler d'ordinateur ! Je ne connais aucun établissement français où cela soit le cas, quoiqu'en raison des restrictions budgétaires les TP se font maintenant en très grands groupes et que dans certains endroits on doit mettre 2 voire 3 étudiants par machine…

On entend également qu'à l'université on apprendrait des technologies dépassées. Ici, il convient de rappeler quelques faits relatifs aux choix pédagogiques en informatique « pratique » et notamment aux choix de langages de programmation utilisés en enseignement.

Certaines technologies sont pérennes. Par exemple, on enseigne les langages de programmation C et C++ parce que, bien que ceux-ci évoluent, ils existent depuis les années 1970 et 1980 respectivement et vont probablement continuer à être largement utilisés pendant des décennies. En revanche, certaines technologies sont lancées en grande pompe par un industriel, ne « prennent » pas et sont abandonnées (que l'on songe à Microsoft Silverlight, lancé en 2007, coulé en 2012). Dans les cursus, on va tenter d'enseigner des technologies pérennes et non la dernière mode du moment.

Par ailleurs, une partie du public étudiant n'a pas une vision très claire sur ce qui est ou non une technologie d'actualité. Je me rappelle cet étudiant qui me reprochait d'enseigner Java, selon lui un vieux truc, alors que « tout le monde fait du C++ » — Java était le langage à la mode, plus récent que C++. « Tout le monde utilise X » peut vouloir dire « l'entreprise où travaille mon frère utilise X ».

Derrière ces reproches faits à l'université, derrière la promotion sans réflexion ni recul de méthodes d'enseignement censément innovantes, qu'il y a-t-il ? Le dénigrement de l'enseignement public sert bien entendu la communication de l'enseignement privé (et ce n'est pas parce qu'une célèbre école privée est gratuite que d'autres ne sont pas à but lucratif). Il sert également les projets de ceux qui veulent démanteler le public au motif qu'il serait inefficace et dépassé.

Le fantasme de l'école sans enseignants, et pourtant « plus efficace », rejoint celle des MOOCs, ces cours en ligne déjà quelque peu passés de mode. L'accroissement de la productivité depuis la Révolution industrielle est passée par l'automatisation : là où il fallait de nombreux paysans, un seul suffit pour conduire une machine ; on a remplacé caissiers et guichetiers par des automates ; un seul chauffeur, bientôt aucun chauffeur, conduit un camion qui transporte bien plus que les charrettes d'antan. Pour l'enseignement, on en reste à payer une personne pour s'occuper d'un certain nombre d'étudiants. Il est donc tentant de chercher à automatiser cela.

Là encore, il y a beaucoup de naïveté. Que l'on puisse remplacer un cours magistral en amphithéâtre de 500 places par une vidéo, pourquoi pas — on ne peut pas dire qu'il y a beaucoup de rapport entre l'enseignant et son public dans une telle configuration, bien qu'il soit tout de même possible d'observer le regard des étudiants et d'en déduire s'ils suivent ou pas. Mais comment remplacer des travaux dirigés ou pratiques ? Là où il suffit de poser une question à l'enseignant et obtenir une réponse rapide, il faut lancer une question en ligne… Et si l'université doit payer des enseignants pour répondre à ces questions (avec tous les risques d'incompréhension inhérents à la communication distante), quelle économie est vraiment réalisée ? Enfin, quelle discipline de fer est supposée de la part des étudiants !

Il est possible que des solutions d'étude en grande autonomie soient efficaces en formation initiale, pour des publics dégoûtés par le fonctionnement scolaire habituel, ou en formation continue, pour des personnes déjà expérimentées et qui veulent avoir la liberté de leur emploi du temps. Il me semble en revanche parfaitement irréaliste de supposer qu'elles forment une solution miracle pour l'enseignement de masse.