29/06/2016
Le paradoxe de la programmation

Ces derniers temps, nous entendons (et surtout lisons) beaucoup de grandes annonces du genre:

« tout le monde peut apprendre à coder, c’est facile »

Bien souvent, cela provient de personnes qui elles-mêmes ne savent pas (encore ?) programmer. Et, en miroir de ces annonces, je commence à voir apparaitre des retours qui évoquent une certaine difficulté à passer un cap dans l’apprentissage de la programmation, ou des difficultés à se faire embaucher en tant qu’autodidacte.

Tout cela me fait beaucoup penser à, d’une part, Seymour Papert qui évoque dans ces ouvrages et autres conférences que les enfants, à partir de 5 ou 6 ans, peuvent programmer. Et de l’autre à Peter Norvig qui nous explique qu’il faut 10 ans pour apprendre la programmation. Un paradoxe il me semble non ? Et si la vérité était entre les deux ? Ou plutôt sur un autre plan ? Et si tous les deux avaient raison ?

Dans le contexte qu’évoque Seymour Papert, la programmation est un outil pour apprendre. Nous ne parlons pas ici de faire un système complexe, un programme qui piloterait votre voiture où même simplement un site de vente en ligne. Non, ici nous parlons de découvrir comment construire un texte à partir de la programmation, d’expérimenter, de représentation physique de concept avec du matériel électronique. C’est une programmation pédagogique. Il est vrai qu’il existe aujourd’hui (et de plus en plus) des environnements de programmation accessibles, encadrés, permettant d’obtenir un résultat intéressant de façon assez rapide. Papert travaille sur le Logo, le fameux langage qui permet de faire bouger une tortue (entre autres), nous avons également Processing pour dessiner facilement, le fameux Scratch du MIT (comme le Logo de Papert). Programmer devient facile dans ce genre de contextes, et ça permet d’explorer d’autres sujets. En général, l’idée n’est pas d’apprendre à programmer ici, mais bien d’explorer autre chose à l’aide de l’outil informatique.

Peter Norvig parle lui d’un contexte professionnel. Celui où nous n’avons que peu de temps pour se former, celui dans lequel il faut trouver la meilleure solution le plus rapidement possible, celui dans lequel des personnes attendent un résultat (plus ou moins de pied ferme). C’est aussi un contexte dans lequel nous travaillons généralement à plusieurs sur l’assemblage de plusieurs programmes pour bâtir un système complexe capable de dialoguer avec les humains mais aussi avec d’autres machines. C’est une programmation professionnelle, celle pour laquelle il y a souvent des enjeux et des attentes fortes. Là, il n’est pas question d’un environnement agréable, isolé, permettant d’essayer gentiment un changement de variable «pour voir ce que ça donne». Non, le parallèle souvent entendu est plutôt issu du vocabulaire militaire : «projet en environnement hostile», «chasse au bug», «équipe commando», «tuer les features», … Fini les petits blocs de couleurs sympas.

Heureusement, ce n’est plus tout à fait vrai, en tout cas par rapport au vocabulaire. L’ambiance dans le contexte de la réalisation d’un logiciel reste cependant à des années-lumière du contexte dans lequel on se place pour apprendre quelque chose. L’objectif est clairement de programmer, d’assembler un logiciel qui saura résister au temps qui passe, aux changements d’équipes, aux changements d’avis, aux changements d’envies, aux changements de chefs, aux utilisateurs un peu bruts, aux serveurs un peu légers.

Un programme en environnement pro se doit de pouvoir évoluer facilement, nous ne pouvons pas le jeter à la fin de la journée comme nous le faisons généralement après un atelier scratch

Le problème de ce paradoxe c’est que certaines personnes créent des écoles ou des formations en pensant former les programmeuses et programmeurs de demain, mais ne font qu’utiliser la simplicité d’accès à la programmation en pensant que cela suffira pour l’environnement pro. Idit Harel en parle assez bien dans un article à propos de toutes ces démarches d’heure de code, ou de code à l’école. (La référence au Pop Computing est issue d’une interview d’Alan kay, merci Bernard ;-)).

Faire en sorte que tout le monde comprenne mieux l’univers numérique qui nous entoure est important, voire indispensable. Mais faire croire que des personnes formées en un temps si court seront embauchées en sortant me paraît bien utopique.

J’aimerais bien voir les fameuses nombreuses offres d’emploi qui sont évoquées quand on parle du manque de profil numérique. J’entends souvent parler de milliers de postes à pourvoir !

Au 24 juin 2016, fin de journée, quand je fais une recherche sur Pôle Emploi, je trouve 150 offres (et c’est tout confondu, pour la France entière). Bon, c’est vrai, les développeurs sont souvent rangés dans la catégorie «cadre».

Voyons sur l’APEC (même jour). 5542 offres d’emploi. C’est mieux déjà effectivement (c’est toujours France entière). Bon, déjà il faut enlever les «développeurs commerciaux», la «direction d’entreprise», le «marketing» et la «gestion finance». Gardons la fonction «recherche études et développement». C’est souvent le terme consacré pour les personnes qui programment en entreprise. Déjà, il n’en reste que 316. Super, sur l’APEC, il y a un critère «expérience». Regardons combien d’offres sont ouvertes aux débutants (après quelques mois de formation, c’est votre niveau) : 14… 14 offres d’emploi ouvertes aux débutants sur la France entière.

Alors oui, l’APEC et l’ANPE ne sont peut-être pas les sites de référence pour le recrutement dans ce domaine, mais quand même.

Essayons sur RemixJobs 20 annonces par page en développement, sur 26 pages (toujours le même jour). Tout confondu, France entière, cela fait 250 offres. Il y a des stages, des offres freelances, des contrats pro…. Même des offres qui datent de novembre 2014 (certainement pourvues ?). En ajoutant «junior» comme mots-clefs, je tombe à moins de 40 offres en tous genres. Le mot-clé «débutant» propose royalement 6 offres.

L’avantage restant pour ces formations, c’est de permettre à chacun de mieux comprendre l’informatique qui nous entoure, de sensibiliser à tous ces problèmes de vie privée, de logiciels privateurs, de réseau mondial, … Mais ces personnes n’auront pas toutes un boulot en sortant de là. Et j’imagine que moins de la moitié en aura un. Mon expérience personnelle me montre plutôt un ratio à 10% des élèves qui trouvent un boulot dans le domaine de la programmation en sortant.

Je rêve qu’un jour chacun comprenne mieux ce que programmer signifie, que oui, c’est accessible à tous, mais que les contextes professionnels sont pour le moment complexes à aborder. J’aimerais que ceux qui parlent de programmation le fassent après avoir programmé pour de vrai, et pas juste en faisant un tutoriel. Et par-dessus tout, j’espère que tous ceux qui souhaitent apprendre à programmer puissent le faire en sachant ce qui les attend, en sachant que s’ils veulent devenir pro, il y a beaucoup de boulot (des années), en sachant que s’ils veulent découvrir la programmation, c’est accessible à tous, en sachant que s’ils veulent utiliser la programmation pour expérimenter, c’est possible.

Je souhaite pouvoir parler avec tous ceux qui se posent des questions avant de se lancer, je serais ravi de vous aider.

Yannick François