Avant de passer aux comparaisons, il serait important de souligner ce qu’Hanselman met en exergue afin de comprendre la phrase « je voudrais apprendre à coder ». « Quelle est la question sous la question ? La personne veut-elle faire des sites web ? En faire le design ? Veut-elle faire des applications mobiles et les rendre effectives ? Veut-elle créer un gadget qui va lui faire parvenir un message texte dès lors qu’elle laisse la porte du garage ouverte trop longtemps ? Ce sont là de différents objectifs et il y a plusieurs excellentes façons de commencer si nous creusons un peu » estime-t-il.
Comprendre ce que les gens font peut amener les autres à mieux comprendre le travail de quelqu'un. Dans le cas de l'aspirant-étudiant-de-code, Hanselman met en avant quelques questions qui peuvent les lancer sur le chemin où résident leurs intérêts :
- Êtes-vous intéressé par le développement Web?
- Ou êtes-vous intéressé par le Hardware?
- Peut-être êtes-vous intéressé par le code et l'histoire sous-jacente au code que vous utilisez tous les jours?
- Peut-être êtes-vous déjà un technophile mais que vous voulez apprendre à la dure?
- Ou êtes-vous simplement intéressé dans le fait de devenir un développeur bien aguerri ?
Une fois que vous savez ce que quelqu'un fait, alors vous pouvez vous amuser à trouver la terminologie.
Il faut dire que Daniel Kaplan, développeur logiciel, ne partage pas le même point de vue puisque, pour lui, dans un billet intitulé « Coder contre programmeur contre ingénieur logiciel contre architecte contre … » où il s’adresse à des personnes qui ne sont pas issues du monde technique mais qui doivent travailler avec des techniciens et veulent mieux comprendre leurs titres, « 9 fois sur 10 vous pourrez considérer ces titres d’emploi comme étant synonymes. La principale spécialité des trois est qu’ils vont écrire du code pour concevoir des logiciels personnalisés. Si vous rencontrez quelqu’un qui parle de lui comme étant un codeur et un autre comme un programmeur, vous pouvez penser qu’ils font la même chose ». Il précise quand même que « l’ingénieur logiciel a une connotation qui évoque la tendance à traiter le développement de logiciel comme un art qu’il cherche constamment à améliorer. Il ne réunit juste pas les choses de façon insouciante, il fait de l’ingénierie de ce qu’il conçoit. Cela ne signifie pas que les autres soient négligents, juste que l’ingénieur logiciel à une connotation de quelqu’un qui n’est pas insouciant ».
La vision d’Hanselman est quelque peu différente puisqu’il estime que les codeurs vont comprendre et faire le travail qui leur est assigné bien que, même si la solution qu’ils proposent marche, elle ne « sera pas esthétique ». Un genre de description qui rappelle celle que faisait Alan Skorkin, développeur logiciel, quelques années auparavant dans un billet intitulé « la différence entre un développeur, un programmeur et un informaticien » lorsqu’il présentait le travail des informaticiens comme ceci : « cela pourrait ne pas être le plus esthétique ou le meilleur code mais cela fait l’affaire ».
Une fois qu’il évoque le terme ‘développeur’, Hanselman dépeint une image un peu plus méliorative puisqu’il estime qu’ils « sont les meilleurs généralistes » et peuvent « utiliser un tas de systèmes et de langages différents et les faire communiquer ». Il va plus loin dans les éloges lorsqu’il dit qu’ils sont de vrais professionnels qui travaillent bien en équipes et communiquent aisément. Il fait écho à Skorking qui, bien qu’il estime que les développeurs sont « des généralistes sans aucune spécialisation vraiment prononcée », « sont experts dans l’art de contourner les problèmes et de relier des composants ensemble pour remplir un ensemble d’exigences ».
Si nous progressons dans le domaine du programmeur, Hanselman estime qu’ils « écrivent le code et comprennent les algorithmes », code qui marche « souvent tout seul et bien ». Skorking pour sa part estime que « les programmeurs écrivent du bon code. Le rendre clair et avec le minimum d’erreurs possibles sont des facteurs très importants mais qui ne doivent pas primer sur le fait de faire la tâche assignée. Il s’agit de connaître la signification de ‘bon code’ dans leur domaine ».
Source : blog Hanselman, blog Alan Skorking, blog Daniel Kaplan
Et vous ?
Qu'en pensez-vous ? Ces termes sont-ils interchangeables ? Partagez vous l'opinion de l'un de ces auteurs ? Sinon quelles différences faites-vous entre ces termes ?