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

Publicités

2 Commentaires

  1. Comme d’hab, très bon post (que j’avais raté dans mes RSS…). Le point clé, je pense, est qu’il ne faut pas oublier en progressant que ce qui compte est l’obtention d’un résultat dans des délais raisonnables, même s’il n’est pas parfait.

    Après, apprendre de nouveaux langages, pourquoi pas. Je commence un peu à m’en lasser quand ils n’apportent pas de nouvelle façon de voir les choses (« A language that doesn’t affect the way you think about programming, is not worth knowing. » – Perlis). Par exemple, connaitre Python, Ruby *et* Perl a peu d’intérêt. Du coup, en ce moment je m’intéresse plus à de nouveaux algos et/ou domaines d’application.

  2. Un dev senior qui fait du tdd ira plus vite qu’un dev junior qui en fait pas je dirais plutot

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :