Article original : How learning a foreign language helps you learn to code
Par Dylan Attal
Le chemin pour devenir développeur logiciel est long et difficile, surtout pour des personnes comme moi qui viennent d'un milieu complètement non technique. Je suis une personne orientée communication. J'ai une passion pour parler des langues étrangères, m'immerger dans des cultures étrangères et essayer toutes sortes de nouveaux aliments.
Je suis un homme de lettres. Un homme de sciences humaines. Comment ai-je appris à coder ? Mon obsession pour les langues étrangères y est pour beaucoup.
J'ai grandi à Tampa, une belle ville sur la côte ouest de la Floride avec un riche héritage hispanique. Mon ascendance est écossaise-irlandaise et mes parents ont déménagé à Tampa il y a environ 30 ans depuis la Caroline du Nord. Mon père travaillait dans le célèbre restaurant Columbia où je me souviens avoir mangé du poulet et du riz jaune tout en regardant des spectacles de flamenco à un jeune âge.
Spectacle de flamenco au restaurant Columbia. Impressionnant et intense. Crédit à columbiarestaurant.
Beaucoup de mes amis à l'école ont grandi bilingues. Je les entendais parler espagnol avec leurs parents à l'heure de la sortie. Cela m'a toujours fasciné de voir comment ils pouvaient communiquer entre eux sans que je comprenne. C'était un certain pouvoir que je n'avais pas. C'était comme de la magie. De plus, mon meilleur ami était brésilien. Quand il parlait à sa famille en portugais, même mes amis hispanophones ne comprenaient pas. Je me souviens avoir promis en 6ème année qu'un jour je serais trilingue. Mon rêve était de maîtriser la magie de la langue.
Avance rapide d'environ 15 ans.
J'avais accompli mon objectif. J'ai étudié la linguistique, l'espagnol, le portugais, les études latino-américaines et l'enseignement de l'anglais comme langue seconde à l'Université de Floride (ALLEZ LES GATORS ! ?). J'ai passé du temps à Séville, Barcelone et Rio de Janeiro pendant mes études de langues. En tant que voyage post-diplôme, j'ai gravi le Machu Picchu au Pérou.
Ma connaissance des langues étrangères m'a ouvert tant de portes. J'ai établi des liens avec des personnes de cultures, de régions et de perspectives complètement différentes. J'ai dévoré des délices locaux : burgers d'alpaga, cœurs de vache, cochon d'Inde frit, lapin saisi, cœurs de poulet rôtis, et plus encore.
Cœurs de poulet brésiliens. TELLEMENT BON. Crédit à Brazilian Chef.
Mais finalement, j'ai décidé de ne pas poursuivre une carrière dans l'enseignement des langues étrangères comme je l'avais prévu. Les raisons derrière cette décision sont nombreuses, et pour un autre article entièrement.
J'ai fini par devenir développeur logiciel, et je ne pourrais pas être plus heureux. Cependant, il y a eu beaucoup de doutes en cours de route parce que j'ai fait un tel saut professionnel. Mais il s'avère que l'apprentissage de deux langues étrangères dans le passé m'a grandement bénéficié dans mon apprentissage de la programmation.
Je soutiens que toute personne ayant appris une langue étrangère est particulièrement adaptée pour apprendre à programmer. Il y a beaucoup de similitudes entre l'apprentissage d'une langue humaine et d'un langage de programmation. Je pense que ces similitudes peuvent être réduites à deux points principaux :
- Le processus d'apprentissage
- L'état d'esprit d'apprentissage
Le processus d'apprentissage
Les processus par lesquels vous apprenez une langue humaine et un langage de programmation sont remarquablement similaires. Vous devez passer par des étapes similaires dans le même ordre pour les apprendre efficacement.
Étape 1 : Apprendre les bases
Lorsque vous apprenez une langue étrangère, vous commencez par mémoriser des mots de vocabulaire. Les mots de vocabulaire sont les briques de la langue. Vous apprenez les mots les plus utilisés et les mots qui forment les bases de l'expérience humaine : noms, nombres, couleurs, membres de la famille, jours de la semaine, mois de l'année, etc.
Vous ne savez pas comment ces mots s'assemblent, mais vous les apprenez et leurs définitions. Vous pouvez même chanter des chansons ou les réciter pour les mémoriser.
En programmation, il y a une étape similaire. Comment le langage gère-t-il les nombres ? Comment effectuez-vous des opérations sur ces nombres ? Comment déclarez-vous une variable et stockez sa valeur ? Comment écrivez-vous "Hello, world" ?
Étape 2 : Assembler les briques
L'étape suivante dans l'apprentissage d'une langue étrangère est de mettre les mots ensemble. Il n'y a pas encore de réelle compréhension de la grammaire, mais vous commencez à comprendre que les mots s'assemblent pour créer un sens plus complexe.
Par exemple, Me llamo Dylan signifie Mon nom est Dylan. À ce stade de mon parcours en espagnol, je ne comprendrais pas que me est un pronom réfléchi attaché au verbe llamarse, et je ne comprendrais pas que llamo est la première personne du présent de llamarse, mais je saurais que la façon de dire votre nom est de dire la phrase Me llamo [nom].
De même, en commençant à apprendre JavaScript, vous ne comprendrez peut-être pas pleinement pourquoi le code suivant est écrit comme il l'est, mais vous comprendrez qu'il retourne les valeurs du tableau inférieures à 50 :
let prices = [25, 30, 80, 90, 100]
prices.filter(price => price < 50)
// retourne [25, 30]
Vous auriez pu écrire le code ci-dessus différemment. Je n'avais pas à l'écrire avec une fonction fléchée. Mais à ce stade, ces types de subtilités ne sont pas les plus importantes. La chose la plus importante est de réaliser que vous pouvez manipuler des tableaux à travers des fonctions.
Étape 3 : Apprendre la syntaxe
C'est le tournant dans l'apprentissage des langues. C'est là que vous apprenez à construire des idées significatives en utilisant la grammaire pour enchaîner des idées. Vous apprenez à conjuguer des verbes. Vous apprenez la différence entre les temps. Vous apprenez des mots purement fonctionnels — des mots qui ne veulent pas vraiment dire grand-chose par eux-mêmes, mais qui nous aident à connecter des phrases et des idées. Le mot espagnol que est un bon exemple. Il est souvent utilisé comme conjonction subordonnée, un mot qui connecte des clauses ensemble.
La grammaire est une partie difficile de l'apprentissage d'une nouvelle langue parce qu'elle est plus abstraite que l'apprentissage de mots qui ont des références dans la vie réelle. mesa en espagnol est table. C'est facile à imaginer. ni siquiera est une phrase qui signifie pas même, comme "Je ne sortirais pas avec lui pas même pour un million de dollars." Comment imaginez-vous l'idée de "pas même" ? Mais c'est un connecteur important placé à un endroit spécifique dans la phrase pour déterminer une relation entre le désir (ou le manque de celui-ci) de sortir avec lui et l'idée d'un million de dollars.
Mon exemple préféré de l'apprentissage de la syntaxe en programmation est this en JavaScript. C'est un sujet déroutant au début. Pourquoi écrivons-nous this avant les appels de fonction ? Que signifie this ? Pourquoi s'appelle-t-il this ? Les mots-clés comme this sont la grammaire de la programmation. this accède à l'objet de contexte dans lequel le code actuel est en cours d'exécution. Il ne signifie pas nécessairement quelque chose par lui-même, mais il nous aide à connecter des parties de notre code.
Il est intéressant de noter que la grammaire varie énormément d'une langue humaine à une autre. Cela vaut également pour les langages de programmation. Imaginez simplement les différences entre les langages orientés objet et les langages fonctionnels. Ainsi que les langages fortement typés et faiblement typés. Ils ont l'air et agissent différemment.
Étape 4 : Parler comme un natif
À cette étape, vous pouvez transmettre le message, mais cela semble bizarre. Les gens peuvent dire que vous n'êtes pas un locuteur natif. Peut-être avez-vous un fort accent. Peut-être que votre grammaire a du sens logiquement, mais ce n'est simplement pas la façon dont les gens exprimeraient normalement l'idée.
Travailler sur cette étape est le plus gratifiant mais aussi le plus difficile. Les étudiants en langues sont fiers de sonner natifs. Votre accent est une grande partie de cela, mais il y a beaucoup d'autres choses à garder à l'esprit. Utiliser des phrases idiomatiques en est une. Le choix des mots en est une autre. Le registre — quand être formel, quand être décontracté, quand être vulgaire — est une autre partie compliquée de sonner natif.
Quand j'étudiais à l'étranger à Rio de Janeiro, ma mère d'accueil me faisait visiter la ville le premier jour. Je vivais à Copacabana à trois rues de la plage. Je pensais à quel point ce serait beau de regarder le coucher de soleil depuis la plage, mais je ne connaissais pas le mot pour "coucher de soleil !" Alors j'ai demandé à la place, À quelle heure le soleil disparaît-il ? Horriblement formel, très raide façon de demander le coucher de soleil. Mais la façon dont j'ai demandé était complètement grammaticalement correcte, alors elle m'a jeté un regard bizarre et a répondu. Puis m'a poliment fourni pôr-do-sol comme le mot pour coucher de soleil.
Coucher de soleil sur la plage de Copacabana à Rio de Janeiro, Brésil. Crédit à Shutterstock.
Le codage est le même. Vous avez de nombreuses options (dans certains langages plus que d'autres) pour exprimer une idée. Il y a un côté créatif — peut-être même artistique — au codage en raison de la flexibilité avec laquelle vous pouvez accomplir vos objectifs.
Mais sonner natif en code est important aussi. J'ai appris tôt que votre code doit être lisible par d'autres développeurs. Personne ne veut lire du code qui est mal indenté ou où il y a des espaces blancs inutiles bizarres. Les gens veulent du code logiquement organisé. Les gens veulent des noms de variables qui ont du sens. Les gens veulent des commentaires utiles.
De même, suivre les conventions est important. Pouvez-vous utiliser des div pour faire des en-têtes et des pieds de page pour une page ? Oui. Mais pourquoi le feriez-vous ? HTML5 nous a donné des balises header et footer pour aider avec le SEO, l'accessibilité et la lisibilité du code par d'autres développeurs. Si vous continuez à utiliser des div, le code s'exécutera bien, mais les gens lèveront un sourcil.
L'état d'esprit d'apprentissage
Il faut un certain état d'esprit pour exceller en tant qu'étudiant en langues. Vous devez être enfantin : avide de comprendre le monde qui vous entoure, prêt à accepter de nouvelles informations au fur et à mesure que vous les découvrez, et sans crainte de faire des erreurs ou de paraître stupide.
Apprendre une langue étrangère est frustrant parce que vous devez apprendre certaines bases ou règles de la langue puis découvrir plus tard qu'il y a une tonne d'exceptions à ces règles. Par exemple, en espagnol, vous placez généralement l'adjectif après le nom. Donc pretty woman serait mujer bonita, où "bonita" est "pretty". Cela est maladroit pour les anglophones apprenant l'espagnol parce qu'en anglais, vous placez généralement les adjectifs avant les noms.
Il s'avère, cependant, qu'il y a beaucoup d'instances en espagnol où l'adjectif vient avant le nom ! En fait, certains adjectifs peuvent être placés avant ou après le nom, et le placement change le sens de la phrase :
Mi amiga vieja // Mon amie vieille (en termes d'âge)
Mi vieja amiga // Mon amie de longue date
Un étudiant en langues réussi est capable de surmonter la frustration qui accompagne ces changements de paradigme. Au lieu de penser, "Que voulez-vous dire les adjectifs peuvent venir avant les noms ?! Quelle perte de temps ! Vous auriez dû me le dire dès le début !" ils diraient, "Comme c'est intéressant ! Il s'avère qu'il y a des cas où un adjectif avant un nom ajoute une nuance au sens de la phrase. Je suis content d'avoir appris la règle générale d'abord puis les exceptions afin de ne pas être confus."
Un bon étudiant en langues ne cherche pas à comprendre une langue d'un seul coup. Ils réalisent que c'est une pratique constante. Et de plus, la compréhension d'une langue est une cible mouvante. Les langues évoluent constamment. En tant qu'étudiant en langues, vous devez accepter que les normes et les conventions changent constamment et vous devez rester à jour avec elles.
Vous avez besoin d'un état d'esprit d'apprentissage similaire lorsque vous apprenez à programmer.
Quand j'ai appris pour la première fois à itérer à travers des tableaux en JavaScript, je l'ai fait avec une boucle for. C'était la seule façon que je connaissais. Plus tard, j'ai découvert .forEach(), .filter(), et .map(). Cela m'a soufflé l'esprit à l'époque ! Encore plus tard, j'ai découvert .every(), .some(), et .reduce(). Il s'avère qu'il y a beaucoup plus de façons d'itérer à travers des tableaux que je ne le savais à l'origine, mais j'ai construit ma base de connaissances de l'itération avec des boucles for, puis j'ai ajouté et modifié ma compréhension de l'itération au fil du temps.
Tout comme les langues humaines évoluent, les langages de programmation aussi. J'ai entendu beaucoup de développeurs se plaindre de devoir apprendre de nouveaux frameworks tous les quelques années. Je ne comprends pas les plaintes. Les nouveaux frameworks rendent souvent l'utilisation du langage plus facile. C'est notre travail en tant que développeur logiciel de rester à jour sur les meilleures pratiques et les nouvelles tendances au sein des langages de programmation.
Les développeurs logiciels doivent également rester à jour avec la sortie de nouvelles versions de langage. Par exemple, avec la sortie d'ES6 JavaScript, les fonctions fléchées sont devenues (à juste titre) populaires. Souvent, elles rendent le code plus facile à lire et à écrire. Pourquoi rester avec la syntaxe ES5 quand il y a une meilleure alternative ? Cela n'a pas de sens de rester bloqué dans les anciennes méthodes.
Peut-être que le trait de caractère le plus important chez un apprenant de langue réussi est la capacité à faire des erreurs.
La peur nous retient d'apprendre. La peur de l'échec. La peur de paraître stupide. La peur de ne pas être à la hauteur des attentes. La peur de faire des erreurs. Donc beaucoup de gens gardent leur bouche fermée. Ils pensent que s'ils ne parlent pas dans une langue étrangère, ils ne peuvent pas faire d'erreurs. C'est, bien sûr, une mauvaise stratégie puisque l'essentiel de l'apprentissage d'une langue étrangère est de parler.
Je pense que c'est une des raisons pour lesquelles les enfants sont de si bons apprenants. Ils n'ont pas peur ! Ils font erreur après erreur et ne se sentent pas honteux. Ils disent des choses insensées tout le temps. Ils babillent. Ils inventent des mots. Ils racontent des histoires sans but clair ou intrigue. Ils expérimentent. Et à travers tous leurs ratages et essais et erreurs, ils découvrent les schémas acceptés de leur langue maternelle.
C'est beaucoup plus difficile pour les adultes d'adopter cet état d'esprit avec une deuxième langue, mais je crois que si vous apprenez à rire de vous-même, vous pouvez enlever la piqûre des erreurs et profiter du voyage d'apprentissage.
Je me souviens de l'été où j'ai étudié à l'étranger à Séville, en Espagne. Je venais de commencer à prendre l'apprentissage de l'espagnol au sérieux. J'étais si excité d'être dans le beau sud de l'Espagne, mais quelle chaleur ! Et je viens de Floride, alors c'est dire quelque chose !
Un soir, je rentrais d'un bar avec un groupe d'Espagnols et quelques amis américains. Nous transpirions tous, il faisait si chaud même avec le soleil couché. J'en avais assez, et j'ai exclamé ¡Dios mío, estoy caliente! ce qui se traduit par Oh mon dieu, je suis excité ! ??♂️
Après un moment de silence choqué, ils ont éclaté de rire. Ce que j'aurais dû dire était ¡Dios mío, tengo calor!. C'est une erreur courante parmi les anglophones apprenant l'espagnol. J'étais embarrassé, mais je riais aussi fort qu'eux une fois que j'ai réalisé mon erreur. C'est devenu une de nos histoires préférées à raconter à la maison. Et croyez-moi, je n'ai jamais oublié comment dire J'ai chaud depuis.
Plaza de España à Séville, Espagne. Quelle belle ville. Crédit à HandLuggageOnly.
Conclusion
N'ayez pas peur d'apprendre à coder si vous êtes une personne de lettres comme moi. De nombreuses équipes de développement recherchent des personnes avec de solides compétences interpersonnelles !
Votre parcours est une épée à double tranchant. Vous devrez certainement rattraper votre retard, mais d'un autre côté, vous êtes prédisposé à apprendre la programmation très efficacement. Et la meilleure nouvelle est que vous apportez toute une gamme de compétences douces à la table que les programmeurs traditionnels pourraient ne pas avoir.
Apprendre une deuxième langue peut être amusant, gratifiant et épanouissant. J'ai trouvé que l'apprentissage de la programmation peut être amusant, gratifiant et épanouissant aussi. Avec une compréhension du processus d'apprentissage et la bonne attitude, vous pouvez réussir — et apprécier — les deux.