La puissance et le contrôle
En développement, comme dans beaucoup d'arts martiaux, on peut devenir fort assez rapidement. On peut se fixer des objectifs (une ceinture, une victoire / maitriser une technologie ou réaliser un projet perso) et les atteindre rapidement selon le language, le maître et l'implication qu'on y met.
Certains langages, tout comme certains arts martiaux, poussent à l'efficacité, à la rigueur ou aux résultats rapides. En Tae Kwon Doe ou en Jujitsu, on aura tendance à privilégié la rapidité d'execution et les résultats seront assez rapide. Pour utiliser des termes usuels : la courbe d'apprentissage n'est pas très raide, et on peut avoir des résultats imparfait dès le début. En revanche, en Karaté Shotokan, on aura tendance à privilégier un apprentissage long et arride à base de Kata, il suffit de regarder le karaté-kid (vieille version) pour comprendre qu'il y a plus trippant comme apprentissage des bases...
On comprends facilement la parallèle avec la programmation, les langages de scripting (Python, PHP, ...) se concentrant plus sur les résultats et l'execution, et les langages historiques comme Java/C++ étant plus orienté rigueur.
Mon point est le suivant, la puissance s'acquière rapidement à la fois en informatique et en arts martiaux, mais l'évolution et le travail fait qu'on lui substitue la maîtrise de notre art. Je m'explique : si on prends la programmation cette fois, au début on commence par le langage, seulement le langage, on avance et on s'habitue aux design patterns, on prends en main des architectures usuelles, des technologies afférentes, ensuite des méthodes de travails - des méthodes de tests.
Seulement pour un oeil non-averti qu'est ce qui va différencier un développeur sénior qui travaille en TDD - d'un junior “confirmé” qui a acquis la puissance mais pas la maîtrise. Très clairement le développeur sénior mettra plus longtemps, à specs équivalente, pour réaliser le travail, à cause du TDD, à cause de la rigueur et de la précision des gestes qu'il va chercher à atteindre. Vous allez me dire qu'en terme de qualité il n'y aura pas photos, très certainement. Mais un travail parfait sans bug n'existe pas en temps raisonnable et quelques tests basiques (réalisés par la QA) permettent souvent d'élaguer les erreurs usuelles.
La maîtrise, à terme, se substitue, souvent trop, à la puissance et à l'efficacité.
C'est peut-être là le rôle de ré-apprendre de nouveaux langages au fur et à mesure de son évolution, pour avoir non-seulement de nouveaux points de vue à explorer (chaque langage ayant son paradigme), mais aussi pour redécouvrir la puissance que l'on obtient au début en récompense d'avoir appris.
Sur ce,
Vale