Combien de langages un expert (en C++) doit savoir parler ?

Article original : How many languages should a (C++) expert speak? | Belay the C++ (belaycpp.com)
Traductrice : Chloé Lourseyre

Cet article est une relecture du Lightning Talk que j’ai donné à l’occasion de la CppCon 2020 : How many languages a (C++) expert should speak ? – Thomas Lourseyre – CppCon 2020 – YouTube

Je vais essayer d’élaborer ce que cet interlocuteur (au demeurant stressé et fébrile) essaie de montrer dans cette présentation.

Pourquoi apprendre d’autres langages ?

Je vais partir du principe que vous êtes un(e) développeur(se) C++ et expliquer pourquoi vous devez connaître d’autres langages de programmation en utilisant deux citations.

Si tout ce que vous avez est un marteau, tous les problèmes ressemblent à un clou.
– Marteau de Maslow

Disons qu’on vous donne la tâche de résoudre un problème, un fait technique ou un dilemme de programmation. Une des premières questions que vous aurez à vous poser sera « Quel langage devrais-je utilise pour résoudre cela ? ». Si vous ne connaissez que le C++, vous ne pourrez répondre que « C++ ». Mais, de manière assez évidente, le C++ ne peut pas être toujours la bonne réponse.

Même si vous n’êtes pas expert(e) dans d’autres langages, si vous connaissez les bases et êtes capable de dire « Conceptuellement, ce langage est plus adapté à ce problème », alors vous n’aurez plus qu’à trouver un expert dans ledit langage et le tour sera joué. C’est une forme de recul que vous ne pouvez pas avoir si vous ne vous intéressez qu’à un seul langage.

Ceux qui ne peuvent se souvenir du passé sont condamnés à le revivre.
– George Santayana

L’industrie du développement logiciel n’est pas un paradis rose et sucré où tous les projets commencent avec tous les outils dont on peut rêver dans leur version la plus récente. Parfois (voire souvent, en fonction de comment vous vous positionnez dans l’industrie) vous devrez travailler sur du code legacy. Parfois, il sera écrit en C++ et vous devrez le porter dans un autre langage. Et parfois, il sera écrit dans un autre langage et vous devrez le traduire en C++.

Dans tous les cas, vous ne pourrez faire ce travail que si vous connaissez d’autres langages que le C++.

Posons la vraie question

Tout cela étant dit, je peux affirmer sans crainte que la vraie question n’est pas « Devrais-je apprendre d’autres langages ? » mais plutôt :

Combien d’autres langages devrais-je apprendre ?

Le tableau de répartition des connaissances

J’ai conçu un petit tableau permettant de classer les langages de programmation qu’une personne connaît en fonction de leur niveau de connaissance :

Niveau de connaissanceDétailsExemples personnels
ExpertC’est pas grave si vous n’en connaissez qu’un seulC++
PratiqueLes langages que vous aimez et pratiquez sur une base régulière.Python, C, Rust, Bash
DocumentationLes langages que vous avez pratiqué mais que vous n’aimez pas. Vous êtes capable vous documenter.Java, C#, js, basic, perl
Hello word!Vous ne connaissez pas grand chose à leur propos.Ruby, AS, Go, etc.

Vous pouvez d’ailleurs remarquer (en comparant avec la vidéo) que mes exemples personnels ont évolué depuis l’année dernière – ce qui est rassurant.

Les niveaux de connaissance

  • Expert : Ce sont les langages pour lesquels vous avez une expertise poussée et fiable. Beaucoup de développeurs ne sont pas particulièrement experts et la plupart de ceux qui le sont n’ont qu’un seul langage d’expertise. Il est possible d’en avoir plusieurs bien sûr, mais c’est assez rare et requiert beaucoup d’efforts.
  • Pratique : Ce sont les langages que vous pratiquez sur une base régulière, sans pour autant en être un(e) expert(e). Souvent ce sont des langages que vous aimez bien et que vous utilisez lors de vos projets personnels.
  • Documentation : Il y a probablement des langages que vous avez essayés, mais qui ne vous ont pas spécialement plu. Ou bien des langages que vous avez dû apprendre pour un projet spécifique, mais vous êtes empressé(e) d’oublier après. Ce sont des langages dont vous connaissez au moins les bases et pour lesquels vous êtes capable de vous documenter si nécessaire.
  • Hello world! : Ce sont les langages dont vous ne savez que très peu de choses. Souvent vous les connaissez de nom, peut-être avez déjà rédigé un Hello world!, mais sans plus. Vous n’êtes ainsi pas capable de citer les spécificités fondamentales du langage.

Les seuls niveaux de connaissances utiles sont expertpratique et documentation. À partir du moment où vous êtes capable de savoir où et comment consulter la documentation d’un langage, vous pouvez en faire quelque chose. Le niveau Hello world! est lui inutile.

Comment promouvoir un langage

Votre but est donc maintenant de « promouvoir » les langages pour les faire monter dans le tableau. Mais les efforts nécessaires à cela varient en fonction de là où se trouve chaque langage :

  • De pratique à expert : Devenir un expert est une tâche longue et difficile, quel que soit le domaine. Vous n’avez pas à devenir expert(e) dans un langage à moins que vous ne vouliez y dédier une partie conséquente de votre carrière ou de votre temps libre. C’est un gros gaspillage d’effort de devenir expert dans un langage juste pour être plus polyvalent.
  • De documentation à pratique : Si vous vous forcez à pratiquer un langage que vous n’aimez pas, il y a une bonne chance pour que vous finissiez par le détester encore plus. Bien sûr, vous pouvez toujours avoir une bonne surprise (et vous rendre compte que vous aimez un langage que vous détestiez au départ), mais cela n’arrivera pas souvent. On ne peut pas forcer l’amour, si vous tentez de sur-pratiquer un langage que vous n’aimez pas pour être plus polyvalent est une forme de souffrance assez inutile.
  • De Hello world! à documentation : Qu’est-ce qu’il en coûte d’essayer un langage dont vous ne connaissez que peu de choses dans le but de vous faire un avis ? En l’espace de quelques heures, vous pourrez lire la note d’intention du langage, apprendre les bases et savoir où se trouve la documentation. Peut-être n’aimerez-vous pas ce langage, mais au moins vous en saurez un peu plus à son propos.

La promotion la plus rentable est la dernière, de Hello world! à documentation. Si vous êtes curieux(se) et essayez d’apprendre le pourquoi du comment du plus grand nombre de langages possibles, alors vous aurez une vue beaucoup plus large du monde de la programmation.

Du coup, combien de langages devriez vous savoir parler ?

La réponse que je vais vous donner aujourd’hui est la suivante : autant que ce que votre curiosité vous le permet.

Une des plus grandes qualités qu’un expert peut avoir (que ce soit en C++ ou non) est sa curiosité. Ce qui nous pousse à en apprendre plus, chaque jour, à propos de n’importe quel sujet. Tant que vous serez curieux(se), vous vous enrichirez et grandirez.

Ne gaspillez pas votre curiosité sur un unique sujet, la curiosité est une qualité mieux employée en largeur qu’en profondeur. D’après moi, un bon expert est aussi un polytechnicien.

Avec quelle régularité devriez-vous apprendre des nouveaux langages et entretenir ceux que vous connaissez ?

La réponse à cette question est très dépendante du temps libre que vous voulez allouer à la programmation.

Si, à un moment donné, vous avez juste une heure de temps libre que vous voulez investir dans la programmation, prenez un langage dont vous ne connaissez rien (ou presque). Lisez la note d’intention et écrivez un petit programme simple. Normalement, ce sera suffisant pour que vous sachiez si vous voulez y investir plus de temps ou non. Si c’est non, gardez en tête comment accéder à la documentation, ça pourra toujours être utile.

Si un langage que vous venez de découvrir vous plaît, essayez d’évaluer combien de temps vous pouvez passer pour vous y entraîner. Vous pouvez faire des tutoriels, des exercices, des projets personnels.

Il y a un bon moyen de s’entraîner dans vos langages favoris : les plateformes comme CodinGame vous propose de l’entraînement, des défis et des compétitions de codage. Essayez, c’est très addictif !

Coding Games and Programming Challenges to Code Better (codingame.com).

Est-ce un exercice réservé aux experts ?

Je peux entendre supprimer certains d’entre vous derrière votre écran, « Je ne suis même pas expert(e) en C++, dois-je vraiment prendre la peine d’apprendre un autre langage ? ».

Tous les arguments que j’ai détaillés dans cet article sont valables pour les non-experts aussi bien que pour les experts. La différence est que, selon mon expérience personnelle, les personnes « non-expertes » sont plus à même de changer de langage au cours de leur carrière. Connaître plusieurs langages vous permettra donc d’avoir de l’avance et un peu plus de recul sur les possibilités qui pourront s’offrir à vous.

La curiosité est une excellente qualité, dans le développement logiciel.

Merci de votre attention et à la semaine prochaine !

Article original : How many languages should a (C++) expert speak? | Belay the C++ (belaycpp.com)
Traductrice : Chloé Lourseyre

Laisser un commentaire