Enseigner le Web

Teaching will make you more humble, because it will painfully show you how limited your knowledge is. Teaching is the best way to learn. Only by testing your knowledge against others are you going to learn properly. This will also make you more respectful regarding other developers and other technologies; every language, no matter how humble or arcane, has its place within the Tao of Programming (cache), and only through teaching will you be able to feel it.

Being A Developer After 40 (cache)

Contexte

Le titre est clairement pompeux, plus qu’enseigner le Web il s’agit d’un retour d’expérience sur ces deux dernières années où j’ai tenté de transmettre les concepts du Web et mes expériences de développeur à une cinquantaine d’étudiants. Ces apprenants étaient alors en troisième année de licence dans le domaine du Web mais n’avaient pour la plupart jamais fait de programmation. Ayant eu beaucoup de confiance et de liberté de la part de la responsable de la licence, j’ai pu essayer des choses.

J’ai eu cette proposition un peu par hasard et par bouche à oreille suite au désistement d’un intervenant, un premier coup de fil mi-septembre et un premier cours mi-octobre. Cela m’a laissé peu de temps pour préparer quoi que ce soit ce qui s’est révélé être intéressant pour la suite. Il s’agissait initialement de faire une initiation à HTML/CSS et cela s’est étendu à JavaScript et PHP au cours de l’année. La seconde année, j’ai réussi à écarter PHP pour me focaliser sur le web mobile. Au final, cela a représenté 150 heures d’enseignement.

Détail qui n’en est pas un, les promotions étaient composées à 80% d’étudiantes. J’avais besoin de vérifier à titre personnel à quel moment cette tendance s’inversait dans les équipes de développement web et si les études pouvaient être en cause (réponse : non, il faut donc remettre en question ce qu’il se passe ensuite mais ce n’est pas l’objet de cet article).

Attentes

J’avais une contrainte d’espace et de temps avec les créneaux horaires fixes et les salles de classe peu adaptées à l’accompagnement d’une acquisition de savoirs. J’avais aussi une contrainte au niveau des thématiques du contenu mais celle-ci était surtout guidée par mon expérience professionnelle. La responsable était consciente du décalage actuel entre ce qui était enseigné et la réalité du marché ce qui me conférait une grande liberté autant sur le fond que sur la forme, ses attentes portaient sur la pertinence des savoirs transmis.

De mon côté, je voulais voir ce que j’étais capable de partager en ayant été complètement autodidacte dans le domaine. Je voulais pouvoir essayer des choses et l’introduction de l’agilité dans des cours me motivait. Je trouvais important de documenter ces expériences afin de partager mes apprentissages et de constituer une mémoire de mon ressenti à ce moment là.

En ce qui concerne les étudiants, ils avaient vraiment du mal en début d’année à formuler leurs attentes qui se focalisaient beaucoup sur des technologies et/ou des connaissances superficielles. C’est assez déroutant au début et cela m’a fait réaliser à quel point l’apprentissage est guidé par le besoin, le rôle de l’enseignant devenant en quelque sorte de créer artificiellement ce besoin.

Je retiens toutefois qu’ils souhaitaient globalement devenir plus autonomes et améliorer la qualité de leurs productions ce qui est encourageant !

Valeurs

ABC de l’apprentissage

Je n’ai réussi à publier ces valeurs qu’à la fin de la première année et elles m’ont guidé lors de l’année scolaire suivante. Elles sont difficiles à mettre en pratique car elles sont assez éloignées de ce qui est mis en valeur lors d’un cursus scolaire.

Si le motto de Maria Montessori est « aide-moi à faire seul », j’ai essayé d’aller plus loin vu leur maturité et leur niveau de connaissances en allant vers le : Accompagne-moi pour faire ensemble.

Cela signifie changer de paradigme en passant de la compétition à la collaboration, ce qui pose notamment certains problèmes en matière d’évaluation.

Co-construction

A lot of what beginning programmers need isn’t just good learning materials, but confirmation that not knowing is normal.

@hcatlin sur Twitter

Il était important pour moi que les étudiants soient acteurs dans l’acquisition de leurs savoirs. Autant dans l’expérimentation que dans les choix de la matière qu’ils souhaitaient travailler. J’essayais de lister avec eux les différents sujets que nous étions capables d’aborder et nous établissions ensuite un ordre de priorité dans ces technologies/concepts.

C’était loin d’être évident car ils (on ?) avaient du mal à évaluer leur niveau collectif et l’inertie du groupe. Mais ce n’est pas grave, on s’autorisait à se planter comme lorsqu’on a voulu aborder Angular avant de comprendre JavaScript. D’autres fois, il était difficile pour moi de leur faire prendre conscience des bienfaits d’une bonne pratique car sa pertinence requerrait du temps de vie et de complexité. Tant pis, ils s’en rendront peut-être compte plus tard.

J’ai trouvé très intéressant de creuser avec eux le pourquoi de leurs choix. J’essayais dans la mesure du possible d’adopter une position de pair plus qu’une relation hiérarchique prof/élève. Je leur ai toujours dit que la somme de leurs savoirs et expériences dépassaient la mienne (cache) de plusieurs ordres de grandeur. Sans compter leur puissance de recherche et de réflexion. J’ai réussi à leur démontrer cela plusieurs fois.

Itérations

Je suis souvent intervenu par demi-journées que je découpais en six moments :

Les sessions étaient effectuées en groupe ou seul, avec plus ou moins de contraintes artificielles de ma part. Elles consistaient généralement en un concept technique à travailler avant une courte période théorique/magistrale pour mettre tout le monde au même niveau. Cette théorie pouvant être effectuée par un étudiant.

L’avantage de procéder par itérations est de pouvoir expérimenter de très nombreuses choses en un temps réduit. La prise de risque devient bien moindre lorsqu’on sait qu’elle sera limitée dans le temps et collectivement améliorée lors de l’itération suivante.

Un autre avantage est d’introduire de la répétition favorisant l’apprentissage. L’introduction de légères variations sur un même exercice permet de voir la classe progresser par paliers au cours d’une même session.

Agilité

Agile In Education (cache)

Tout ce travail itératif prend bien sûr ses sources dans les pratiques agiles et empreigne peut-être les élèves d’une autre culture. Une culture où l’échec est permis et où l’on essaye de travailler ensemble pour que l’intelligence collective du groupe fasse progresser chacun individuellement. Une culture où la réaction est plus importante que la défense.

C’est un vrai défi car les apprenants manquent cruellement d’outils pour collaborer. J’aurais aimé prendre le temps de les initier à Kanban ou Git(hub) mais notre capacité à assimiler de nouvelles choses est limitée et je ne voulais pas introduire trop de nouvelles notions qui ne pouvaient qu’être survolées.

Aussi les pratiques agiles ont davantage été des expérimentations agiles. Il y avait l’inspiration bien sûr mais après cela tout était à découvrir ensemble car ces approches sont peu employées/documentées par ailleurs.

Notation

Je suis contre les notations/classements mais il s’agit d’une contrainte forte dans l’univers scolaire. Aussi j’ai essayé de mettre les étudiants dans des situations qui pourraient leur servir rapidement à travers des candidatures spontanées, des critiques de sites ou des compte-rendus d’expérimentations techniques. Les résultats étaient parfois assez surprenants et les discussions suivant ces exercices toujours passionnées.

Ils avaient globalement du mal à faire le lien entre ce qu’ils avaient appris/expérimenté et la valeur qu’ils pouvaient apporter à une entreprise, se contentant de faire des lettres/CV génériques pour arroser le plus de boîtes possibles (ils font un stage de fin d’année). J’ai essayé de leur montrer qu’une autre voie est possible en ciblant quelques entreprises dans lesquelles ils voulaient vraiment travailler et en personnalisant leur approche : audit de performance, problèmes de validité, d’ergonomie, d’accès mobile, etc.

Ici j’avais beaucoup de mal à être pertinent car je n’ai jamais eu à faire cette démarche de recherche d’emploi/stage donc il était difficile de les accompagner. J’ai plutôt essayé de me mettre dans la peau de quelqu’un d’expérimenté qui recevrait une telle candidature par exemple.

Holisme

Ce qui m’a cruellement manqué au cours de ces années c’est l’impression de faire partie d’un tout au sein d’une formation cohérente qui permet à chaque étudiant de s’accomplir dans sa singularité. Mettre en pratique l’agilité d’un côté et voir qu’à la session suivante ils ont de la gestion de projet des années 90 c’est dur. Expliquer les failles de sécurité et regarder ce qu’ils codent en PHP par ailleurs c’est flippant. Si la communication est difficile entre élèves, elle est catastrophique entre enseignants.

Cela soulève tout un tas de problématiques sur la mise à jour des compétences, le financement de ces moments d’échanges, l’alignement dans les valeurs et les motivations, etc etc. Il y aurait beaucoup de choses à expérimenter dans ce domaine également. De la co-construction d’un programme cohérent à l’accompagnement d’étudiants dans leurs projets professionnels.

Peut-être aussi que cela demande de pouvoir suivre les étudiants pendant plusieurs années pour mieux les connaître et adapter les interventions en fonctions de leurs motivations.

Confiance

Years later, when I did well in programming classes in high school and college, a part of me was dismissive of those results. Because of that initial experience programming, I was subconsciously held back by the fear of finding another brick wall concept that I wouldn’t be able to grasp. It’s taken a decade to reverse this thinking and stop having a fixed mindset about my engineering abilities, but it’s been worth the effort. Now, because I believe that I can grow as an engineer, I’m motivated to invest in myself. The intrinsic belief that I can get better keeps me confidently striving in my career for more responsibility and new challenges.

On Confidence (cache)

Établir un climat de confiance au sein d’une promotion est difficile. Les groupes sociaux se forment rapidement et ajouter la contrainte de les mélanger à celle de collaborer demande parfois un effort trop important. C’est compréhensible et c’est le genre de moments où je ne sais pas s’il faut forcer la diversité qu’ils retrouveront peut-être dans leur futur emploi (ce n’est pas mon cas donc c’est difficile à imposer…).

A team is not a group of people that work together. A team is a group of people that trust each other.

Simon Sinek sur Twitter

En revanche, j’ai toujours essayé d’encourager les réflexions et les échanges de la part de tous les apprenants. Parfois une simple remarque fait l’objet de l’itération suivante pour confirmer ou réfuter une hypothèse en groupe. Je ne voulais pas forcément qu’ils aient confiance les uns envers les autres mais qu’ils aient de l’attention pour les questionnement de leurs pairs.

J’ai aussi été surpris du manque de confiance en eux qu’ils pouvaient avoir vis-à-vis de la programmation, ce qui m’a fait beaucoup réfléchir aux abstractions possibles. Je suis encore en plein doute sur le sujet.

Prise de recul

Le fait de donner des cours m’a permis de réaliser à quel point nos outils sont complexes et élitistes. L’expression japonaise 「灯台下暗し」 (tōdai moto kurashi) prendre du recul pour avoir de la lumière (littéralement : il fait sombre sous la lanterne) me semble appropriée, ce sont les étudiants qui sont arrivés avec leurs lanternes et ont commencé à me faire sérieusement douter. Je leurs suis extrêmement reconnaissant de m’avoir ouvert les yeux et d’avoir pu creuser ensemble quelques approches possibles pour simplifier l’apprentissage des briques du Web.

Simplicité par défaut

Les cours ont clairement été moteurs dans ma réflexion sur le minimalisme et l’esthétique puis la simplicité. Le fait de transmettre permet de se remettre en question sur l’intérêt de perpétuer certains concepts ou pratiques. J’ai dû reprendre certaines lignes de code caractère par caractère pour vérifier leur bien-fondé.

Ce qui m’a amené à une approche dirigée par le validateur pour ce qui est du HTML par exemple. À partir de quel moment une page s’affiche dans un navigateur ? À partir de quel moment devient-elle valide ? Est-ce qu’il y a vraiment besoin de plus ? Etc.

J’ai aussi pu reprendre JavaScript depuis zéro, questionner les abstractions et bien creuser ES6/2015/Next car je souhaitais leur enseigner le Web d’aujourd’hui et demain sans forcément leur mettre le fardeau de la rétro-compatibilité tout de suite.

Contraintes spatiales

La salle de formation est une cellule eucaryote : un noyau contenant l’ADN-livres, des ribosomes-élèves transformant l’information-ADN en connaissances-créations-protéines.

D’une sélection artificielle à une sélection naturelle dans un écosystème complexe (cache)

Là où Christian den Hartigh organise sa classe comme une cellule eucaryote, il faut bien voir que les élèves de l’IUT sont par défaut dans une configuration qui leur fait regarder un écran qui est adossé au mur. Autant dire qu’ils me tournent tous le dos ! On fait mieux en matière d’échanges (et de position de travail) à la fois avec moi mais aussi et surtout avec les collègues.

Pour inverser la tendance et essayer de recréer un centre d’intérêt j’essayais au moins de prendre un moment pour qu’ils viennent présenter leur travail au groupe de manière répétée et interactive. J’ai aussi ré-agencé les postes de travail lorsque c’était possible, les salles ayant des machines qui sont généralement boudées (à juste titre vu les limitations) par les étudiants qui préfèrent amener leur propre ordinateur.

Digital na(t)ives

Le niveau de votre classe est celui de la personne la plus faible techniquement. [Paraphrase]

Giving better code reviews (cache)

Les articles (cache) ne manquent pas (cache) pour rendre compte d’une génération qui utilise le Web comme de l’électroménager. J’ai malheureusement pu le vérifier également lors de mes interventions. Savoir enregistrer un fichier avec une autre extension que celle proposée par défaut ou un autre encoding n’est pas évident du tout. Jongler avec des navigateurs et des résolutions non plus. Taper certains caractères correctement peut même révéler quelques surprises…

La difficulté vient du grand écart de niveau qu’il y a entre les étudiants qui ont déjà des difficultés à savoir se servir d’un ordinateur et ceux qui font déjà des sites en auto-entrepreneurs !

Attention toutefois, ceux qui arrivent avec un certain bagage technique vont potentiellement mettre plus de temps à oublier certaines mauvaises habitudes. Ou à essayer de comprendre certaines de leurs lignes de code qu’ils copient-collent depuis un moment et qui marchent. Le désapprentissage est parfois douloureux.

Capitalisation

Teams are immutable. Every time someone leaves, or joins, you have a new team, not a changed team.

Richard Adalton sur Twitter

Pour une classe, c’est pareil, sauf qu’il y a 25 personnes qui partent. Autant dire que la capitalisation est bien maigre d’une année sur l’autre et ça a probablement été l’une de mes erreurs de partir un peu trop confiant la seconde année. La confiance acquise aurait davantage dû me motiver à expérimenter plein de nouvelles choses plutôt que de reproduire certains patterns qui avaient bien fonctionné la première fois.

Là où ça devient intéressant, c’est sur les différentes approches que j’ai pu tester.

Mémoire

Misleading headlines notwithstanding, no one really has the slightest idea how the brain changes after we have learned to sing a song or recite a poem. But neither the song nor the poem has been ‘stored’ in it. The brain has simply changed in an orderly way that now allows us to sing the song or recite the poem under certain conditions. When called on to perform, neither the song nor the poem is in any sense ‘retrieved’ from anywhere in the brain, any more than my finger movements are ‘retrieved’ when I tap my finger on my desk. We simply sing or recite – no retrieval necessary.

Your brain does not process information and it is not a computer (cache)

La façon de retenir des informations est encore très difficile à comprendre (cache). On dispose de quelques pistes via la discussion (cache) ou le jeux (cache) mais elles restent ténues. Ce constat est génial, il y a tout à tester !

Notre profession est particulière car on a le savoir technique à portée de clavier. Cela ne signifie pas que l’on sache l’exploiter pour autant ni en connaître toutes les applications pratiques mais c’est un bon début. Une fois que l’on considère que la technique est externalisée sur le web, il nous reste à assimiler les concepts pour assembler ces notions. Je pense que les mécanismes de mémorisation d’un développeur web sont très différents d’autres professions car il a affaire toute ses journées à des liens. Je me souviens bien souvent d’une chose que je sais pouvoir retrouver et cette simple croyance me suffit pour considérer cela comme une mémorisation. Il faudrait que je développe dans un futur billet.

Jeux

On a joué à Flexbox Froggy, Starwars ou Flexbox Defense qui ont été assez appréciés des étudiants. J’ai découvert plus tard Python Tutor qui n’est pas limité au langage Python. Une visualisation très intéressante de ce qu’il se produit au niveau de l’affectation des variables. Un bon candidat pour une prochaine expérience.

Pour des jeux que l’on qualifie de plus sérieux, j’ai tenté des Remember the future et je terminais régulièrement les cours — voir les itérations — par des rétrospectives pour identifier les points d’amélioration.

Après pour moi le Web est un jouet convivial par excellence. Mais ce n’est pas forcément partagé :-).

Disposition

Toute ma démarche est de les faire passer de la chaise au tableau, de l’écoute passive au partage actif. Pour favoriser cela, il faut briser la barrière entre la position assise de l’apprenant et celle debout du sachant. J’ai tenté de les faire participer en inversant souvent les rôles : si tu prends ma place, je prends la tienne, physiquement. J’ai tenté de changer la disposition de la salle. J’ai fait des rétrospectives en étant tous debout, souvent en cercle.

La simple disposition change souvent la façon de communiquer.

Certains auront davantage d’aisance lorsque l’on passe des questions-réponses à la discussion libre. D’autres vont avoir besoin de plus de temps pour préparer une intervention construite. La prise de parole en public devient moins stressante lorsqu’on est en situation de confiance/bienveillance et la disposition des individus est importante pour faciliter cela.

Communication

J’avais testé jadis des accompagnements sur Blog, Twitter, Facebook, mais je n’avais jamais été pleinement satisfait. J’ai conservé Facebook avec les élèves pour rester en relation avec les anciens, ceux qui le souhaitent, et les accompagner pour des aides ponctuelles, ou garder un simple contact.

Etendre la salle de classe hors des murs : Slack pour l’éducation et l’instruction (cache)

Je regrette de ne pas avoir pris le temps d’introduire Slack ou équivalent comme canal de discussion car même en annonçant que je réponds aux mails en dehors des heures de cours j’ai eu très peu de questions.

J’avais par exemple introduit un temps de veille qui était très apprécié la première année et qui n’a pas suscité la même appétence la seconde. Peut-être qu’un espace en ligne pour partager des liens eut été mieux accueilli plutôt que d’abandoner purement et simplement.

Retours

Les retours sont limités aux temps de cours et je n’ai malheureusement pas eu de mails une fois l’année terminée. C’est frustrant mais Christian m’expliquait avoir fait le deuil d’une quelconque impact une fois l’année écoulée. Il faut savoir se focaliser sur le présent et sur la relation qui se vit pendant les cours.

Il se trouve que j’ai du mal à lâcher prise là-dessus car j’ai besoin de ce feedback pour pouvoir m’adapter. Je n’ai jamais travaillé en agence et mes 3 mois en SSII sont bien éloignés aussi les conseils que j’ai pu leur donner sont potentiellement à côté de la plaque. Je ne veux surtout pas leur mettre mes propres œillères.

J’aurais aussi aimé pouvoir suivre des étudiants sur plusieurs années pour répondre individuellement à leurs souhaits et construire quelque chose de cohérent ensemble.

Durée

Être en position de transmettre n’est pas une carrière mais un bref état transitoire.

Transmission et durée

Je suis tiraillé sur cette partie, car d’un côté la classe change totalement d’une année sur l’autre et l’on peut apprendre de nouvelles choses à chaque cours. Mais de l’autre j’ai besoin d’avoir davantage d’inspirations d’une année sur l’autre pour avoir le sentiment de faire un accompagnement qui soit utile. Cela me fait penser au temps nécessaire entre deux conférences, je ne pourrais jamais faire plusieurs fois la même intervention. J’aurais l’impression de m’ennuyer et donc d’ennuyer le public. J’ai besoin de reconstruire une réflexion à chaque fois. De refaire le vide pour avoir l’espace de cuisiner de nouvelles idées.

Est-ce que j’aurais continué sans mon départ au Canada ? J’ai du mal à répondre à cette question (tiens au passage, si vous avez envie de partager vos connaissances sur Arles, il y a une place qui se libère, contactez-moi :-)). Outre le temps que ça prend, l’enthousiasme des apprenants est un peu en dent de scie et c’est difficile à gérer et à s’en contenter.

D’un autre côté, j’ai toujours envie de ré-expérimenter dans d’autres contextes d’apprentissage.

Conclusion

Je dirais que la plupart des expériences biographiques sont de ce type. La plupart du temps, nous allons là où le monde social nous aurait envoyés de toutes façons, mais nous y allons contents. C’est ce qu’on appelle la vocation. Il y a évidemment des exceptions, et elles sont très importantes : il suffit qu’il y en ait une seule pour que cela change tout – et c’est la liberté.

Pierre Bourdieu

Je ne sais pas vraiment s’il y a une conclusion à cette expérience. J’avais soumis le sujet à ParisWeb pour pouvoir en discuter avec davantage de personnes mais il n’a malheureusement pas été retenu. Ç’eut été l’occasion de débattre de ces problématiques car je sais que d’autres travailleurs du web font leurs propres expérimentations, peut-être qu’un espace d’échange dédié serait plus adapté. L’initiative TrainDrop mériterait d’être étendue avec un espace de discussion pérenne pour échanger sur nos expériences, nos doutes et pourquoi pas aider de nouvelles personnes à se lancer. Qui serait motivé ?

Je vais profiter d’être à SudWeb pour insuffler un peu d’énergie dans le projet. Retour sur l’atelier.