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é.