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