DEV Community

Code en musique: Ce que le Piano peut vous apprendre sur la programmation

La période de fête arrive, comme chaque année en décembre, vous ne pouvez pas échapper à deux choses :

  • L’AventOfCode si vous êtes développeur.
  • Jingle Bell Rock si vous allez dans un centre commercial.

C’est comme ça, ce n’est pas moi qui fais les règles.

L’AventOfCode, ce sont des puzzles de programmation, un peu comme ce qu’on peut retrouver toute l’année sur LeetCode. Le but affiché est de devenir un « meilleur programmeur ». Et je dis bien programmeur, pas développeur.

Alors, comment devenir meilleur en programmation ? Est-ce que je dois faire du LeetCode tous les jours ? Je n’ai jamais eu à réimplémenter un merge sort au boulot, dois-je vraiment apprendre à le faire ?

WOW, doucement !

Tiens, d’ailleurs, vous savez que piano veut dire doucement en italien ? Ça tombe bien, avant de parler de programmation, on va parler de piano. Mais restez, ça va être bien.


Jouer du piano

Quand je ne suis pas derrière un clavier d’ordinateur, vous pouvez sans doute me trouver derrière un piano (clavier, piano, ordinateur, vous l’avez ? Ok, vous l’avez).

Et figurez-vous qu’en apprenant le piano, on peut faire pas mal de comparaisons avec la programmation.

Jouer du piano, qu’est-ce que c’est ? Ce n’est pas connaître le nom ou le son de chaque touche par cœur. (On sait en général où se trouve le do. Ensuite, par la position des mains par rapport à la note do, on sait quelle note jouer. Mais on n’est pas obligé de savoir exactement où se trouvent le la et le si, par exemple).

Jouer du piano, c’est réussir à enchaîner les bonnes notes, dans le bon rythme. C’est vraiment la combinaison des deux. Si vous enchaînez plein de notes aléatoires, vous faites du bruit, mais pas de la musique.

Si vous enchaînez les bonnes notes, mais qu’il y a 10 secondes de silence entre chaque, on n’a pas de musique non plus, car il n’y a pas de rythme.

Pour travailler ces deux compétences, on a plusieurs exercices. Pour les bonnes notes, on va, par exemple, jouer très len-te-ment, hors rythme donc, car le but est d’identifier : la note à lire sur la partition et le doigt à utiliser pour jouer cette note. Sachant que parfois, les mains se déplacent, il faut donc aussi s’entraîner à repositionner ces mains. Pour obtenir cette mémoire musculaire, on va jouer plusieurs notes ou mélodies de façon lente, voire très len-te.

Pour travailler le rythme, on va jouer des notes ou des enchaînements simples. Car le but n’est pas tant de jouer une mélodie que de jouer des notes dans le temps imparti.

Et bien sûr, plus on progresse, plus les exercices deviennent difficiles, mais le but final est toujours le même : être prêt, à un moment, pour jouer une musique en combinant justesse des notes et rapidité pour garder le rythme.

Quand vous avez un niveau moyen au piano, et que vous jouez pour la première fois une musique, si elle est facile (une comptine pour enfants, par exemple), vous pourrez la jouer quasiment parfaitement du premier coup ou avec très peu d’entraînement.

À l’inverse, si vous essayez une musique plus complexe (du jazz, par exemple), vous allez devoir faire plus d’exercices de justesse des notes et de rythme en lien avec cette musique en particulier.

Autre fait intéressant : vous pouvez apprendre à jouer une musique exigeante, ne plus y toucher pendant quelques mois et tenter de la jouer à nouveau. Vous serez probablement très mauvais au premier essai, mais très vite, vous retrouverez vos marques et serez capable de la rejouer parfaitement sans refaire toute la phase d’apprentissage.

Si vous voulez progresser au piano, vous allez aussi devoir sortir de votre zone de confort. Vous pouvez jouer des comptines pour enfants toute votre vie, mais cela ne vous aidera pas à jouer du jazz ensuite sans entraînement. Il faut donc jouer différents styles, de différents niveaux, avec des rythmes variés.

Bref, pour apprendre à jouer du piano, vous devez :

  • Faire différents exercices pour améliorer les différentes compétences nécessaires pour jouer de la musique.
  • Jouer des morceaux variés avec une difficulté crescendo.
  • Rejouer de temps en temps des musiques pour reprendre vos marques rapidement et travailler votre mémoire musculaire.

Et la programmation dans tout cela ?

Eh bien, pareil.

Voila, merci de m'avoir lu, a la semaine prochaine


Et la programmation dans tout cela ?

Les puzzles type LeetCode, par exemple, sont de petites mélodies. Pour les réussir, il faut à chaque fois utiliser les bonnes structures de données et les bons algorithmes (c’est l’équivalent des notes de piano), et le faire dans le temps imparti (c’est notre rythme).

Si vous vous lancez pour la première fois sur un LeetCode qui demande d’effectuer un merge sort, vous devriez d’abord, hors puzzle, aller apprendre ce qu’est un merge sort, comment il fonctionne, comment le coder. Len-te-ment. Ensuite, vous pouvez tenter de le faire le puzzle dans le temps imparti. Peut-être qu’au début, vous serez hors délai, mais à force d’entraînement, vous aurez le bon rythme.

Une fois cet exercice réussi (le bon algo, dans le bon temps), vous pouvez aller explorer d’autres puzzles, d’autres mélodies. Certains seront proches, d’autres moins. Augmentez la difficulté pour progresser, mais ne vous attendez pas à les réussir du premier coup. Ce n’est pas l’objectif.

Revenez dessus quelques mois plus tard (pour un projet ou pour un entretien). Vous verrez que, même si l’implémentation sera un peu plus longue au début, vous reprendrez très vite vos marques et réussirez le puzzle dans le temps imparti, très rapidement.


Je suis pianiste, pas musicien ; je suis programmeur, pas développeur

Maintenant, est-ce que les puzzles de code aident à devenir un meilleur programmeur ? Si vous en faites régulièrement, oui, sûrement. Mais est-ce que cela fait de vous un meilleur développeur ? Pas vraiment, car ce n’est pas la même chose.

Si je joue du piano, je peux jouer Jingle Bell Rock chez moi sans problème. Super, je passe du bon temps, et ça ajoute à l’atmosphère un parfum de fête. Cependant, jouer du piano ne m’apprend pas à :

  • Écrire mes propres musiques.
  • Jouer avec d’autres instruments.
  • Jouer dans un orchestre…

Bref, plein de choses. Jouer du piano ne fait pas forcément de moi un musicien. Je suis pianiste, pianiste amateur, c’est tout, et c’est déjà très bien.

Eh bien, être fort en programmation, c’est pareil. Ça ne vous apprend pas à être développeur (le métier). Ça ne vous apprend pas à structurer votre code, à écrire de la documentation ou à faire plein d’autres choses dont un ingénieur a besoin. Cela vous apprend seulement à résoudre des puzzles de programmation.

Alors oui, parfois ces problèmes peuvent être réutilisés dans un cadre professionnel (je parcours très souvent des arbres au boulot, par exemple, avec du DFS, du BFS), mais ça reste plutôt anecdotique par rapport à toutes les autres parties de mon job.


Joyeuse fête, si vous avez Jingle Bell dans la tête, c'est normal

Top comments (0)