Progression verticale et progression horizontale
Dans le domaine de l’apprentissage j’ai déjà eu l’occasion de tomber sur la distinction entre progression verticale et progression horizontale.
Avec une progression verticale, on reste toujours dans le même domaine, mais en devenant de plus en plus pointu. On devient expert sur le sujet.
Avec une progression horizontale, on apprend des choses différentes, sur plein de sujets, mais en allant moins en profondeur. On est pas expert pointu mais on a une vision plus large.
Les deux approches ont de la valeur, mais une valeur différente. Et elles sont complémentaires.
Par exemple en musique (car c’est pour ce domaine que j’ai rencontré l’idée), un guitariste fan de Metallica qui apprendrait tous les morceaux du groupe, d’abord les riffs les plus simples, puis les plus complexes, puis les solos, puis chercherait d’autres groupes dans le même genre, avec peut-être des morceaux un peu plus difficiles (Megadeth, Iced earth, …), est dans une approche de progression verticale. Notre guitariste devient très fort pour les riffs avec sextolets sur corde à vide et les solos dans la gamme mineure naturelle. Par contre son horizon se limite à un type très précis de musique, il a un profil spécialisé, et une culture profonde mais étroite.
Maintenant si le même guitariste a envie de changer un peu de répertoire, et qu’il décide d’apprendre du jazz manouche (Django Reinhardt), ou de la guitare classique à deux voix (par exemple la bourrée de Bach), ce sera un challenge pour lui, même les morceaux « faciles » de ces styles lui paraîtront compliqués puisqu’il n’a pas l’habitude de jouer de genre de choses, il va donc apprendre là aussi, et surtout, en tant que musicien son horizon est plus large et cela lui ouvre des possibilités (par exemple composer le premier cross-over Reinhardt/Metallica). C’est de la progression horizontale.
Vous l’aurez compris, ici le but est de faire le parallèle avec la veille technique. Un programmeur Java par exemple peut étudier très en détail l’API Java SE, le comportement du garbage collector, etc… Mais il peut aussi s’intéresser aux autres langages existants (Groovy, Scala, Ceylon, mais aussi Javascript, Erlang, Clojure, Prolog, …), il y a apprendra d’autres façon de programmer, de nouveaux concepts, qui enrichiront sont intellect, son intuition, sa créativité au jour le jour.