Dans Ce que sait
la main de Richard Sennett, l'auteur rappelle que l'apprentissage
passe par la répétition des gestes.
Dans l'activité de développement logiciel, cela me fait immédiatement
penser aux outils de complétion automatique de code: quand le
développeur commence à taper le nom d'une méthode, d'une fonction,
d'un identifiant, l'éditeur de code propose de terminer la saisie
de l'identifiant, voire suggère lui-même certains identifiants.
A ce point, ce n'est plus seulement le développeur qui écrit le code, mais
en partie la machine, en suggérant et complétant.
Cependant, ce qui ne devait être qu'une aide à la saisie devient un
handicap pour l'apprentissage, par le développeur, des fonctions, méthodes, ...,
disponibles dans une bibliothèque logicielle.
En effet, sans ce genre d'outil, la pratique du développeur est d'aller
parcourir la documentation pour trouver la fonction dont il a besoin.
Ce faisant, et par la répétition de ce geste, le développeur se construit
une représentation de la bibliothèque, assimile son organisation. Il
aperçoit et découvre également d'autres fonctions, qui lui donneront éventuellement
d'autres idées sur la façon d'aborder le problème qui l'occupe, etc.
Le remplacement du geste de parcours "manuel" de la documentation par
des suggestions automatiques par la machine ne permet plus cet apprentissage.
Pire, il peut être source d'erreurs. J'assistais un jour à un
un exposé d'un enseignant sur l'utilisation de l'environnement
Eclipse pour le développement en Java dans un cours, avec notamment cette
possibilité de complétion automatique. Je lui demandais si
les programmes finaux se révélaient plus ou moins bogués que sans cette fonction.
Selon lui, il y avait davantage d'erreurs, dans l'emploi des fonctions justement:
fonction de même type utilisée à la place d'une autre, etc.
Je ne condamne pas ce genre d'outils, mais ils doivent à mon avis être utilisés
avec parcimonie. Personnellement, la seule complétion que j'utilise dans mon éditeur
de code est une complétion "à la demande" sur les identifiants que j'ai déjà
tapés. Cela me permet de ne pas hésiter à utiliser parfois de longs identifiants,
plus explicites: Je ne suis pas rebuté par le nombre de caractères à taper, car
je peux utiliser la complétion à la demande pour compléter seulement lorsque je le
désire.
Je n'ai jamais utilisé de complétion automatique pour les noms des
bibliothèques, cela ne m'intéresse pas, pour la raison suivante: Si c'est l'une des
premières fois que je dois utiliser une fonction, je veux lire la documentation
associée; si ce n'est pas la première fois, le fait de l'avoir utilisée
plusieurs fois auparavant fera que je m'en souviendrai. Je n'aurai
donc nul besoin de complétion, ni du risque de choisir la mauvaise suggestion.
Il serait bon d'enseigner aux étudiants en informatique le côté pharmacologique
de toute technique/technologie. Cela leur permettrait d'avoir une réflexion sur
leurs propres pratiques d'une technologie. Je ne crois pas que cela soit enseigné.