L'erreur du choix de JavaScript
Tags: javascript, beginners, programming, learning
Published: 2023-08-30 12:34:31

Personne ne devrait commencer l'apprentissage de la programmation avec JavaScript. 

Une fois cette provocation faite, laissez-moi vous présenter mes réflexions menées en sortie de bootcamp, une formation intensive en 6 mois orientée JavaScript pour obtenir le titre professionnel CDA. Avant cela, j'ai découvert le développement et suivi le CS50 d'Harvard, en travaillant sur des langages comme C, puis Python. 

## **L'attrait de JavaScript**

Il est indéniable que JavaScript est l'un des langages les plus populaires et les plus demandés sur le marché actuel: quel autre langage peut promettre aux développeurs une si grande montée en compétence, avec une documentation et une communauté si solide? Sa modernité, sa syntaxe simple et sa capacité à gérer des applications multi-plateformes en un temps record en font un langage de choix pour de nombreux développeurs débutant dont j'ai fait partie.

Que se cache-t'il derrière ces promesses ? Y'a t'il un revers de médaille? JavaScript est un langage dit de haut niveau d'abstraction, c'est à dire qu'il  simplifie des opérations qui seraient autrement plus compliquées dans des langages de plus bas niveau. Cette simplicité a un coût : elle masque de nombreux détails nécessaires à l'apprentissage du fonctionnement de nos langages, nos algorithmes et nos outils. Cette découverte s'est faite au cours de ma formation:  bien que le fait de débuter sur ce langage m'ai fait évolué vite il a aussi ralenti ma progression sur la résolution de problème algorithmique et de culture générale autour des Computer Sciences, qui m'avaient intéressés lors de la découverte de C.

## **Pourquoi ne pas choisir JavaScript pour débuter**

Avec JavaScript, beaucoup de complexité est masquée derrière une haute abstraction. Commencer avec JavaScript — et le même reproche pourrait être fait à d'autres langages comme Python ou Ruby — c'est potentiellement ne jamais être confronté à la gestion de mémoire, aux pointeurs ou même à l'architecture d'un ordinateur. 

Ex-psychologue, j'ai compris à travers mes études que la connaissance de tout domaine doit passer par un approfondissement de l'apprentissage. Les phénoménologues appellent cela l'épochè, un terme qui désigne la suspension du jugement (coucou les pros-JS) pour examiner les choses en profondeur. Deux choix s'offrent à chacun : prioriser un apprentissage en profondeur (et devenir le nouvel expert en algorithmie!), ou s'épanouir dans la découverte quotidienne de nouveaux outils et devenir un vrai fullstack. 

## **Le dilemme des jeunes développeurs**

Le dilemme auquel sont confrontés les jeunes développeurs aujourd'hui est de choisir entre la profondeur de la connaissance et la rapidité de la production. Javascript en est l'exemple type, mais cette réflexion est applicable à tous nos outils du quotidien. A quel point est-ce important de connaître l'engine de notre ORM favori ? A quel point la connaissance du fonctionnement de Docker nous aidera à la mise en place d'applis ? Comment Git sauvegarde nos projets et gère l'historique ? 

Ce que l'on va chercher dans son quotidien, c'est atténuer ce dilemme en combinant des approches théoriques et pratiques: Pourquoi ne pas s'imposer un exercice d'algorithmie par jour?  Dois-je coder cette feature sur mon projet perso ou approfondir ma culture en Computer Science ? Aucune de ces questions n'aura de réponse fixe. Chaque développeur développe son propre style selon ses intérêts.

## **Conclusion**

Il est certain qu'un titre de ce type joue sur la provocation. Par cet exemple simple je souhaitais faire part d'une réflexion sur la manière d'appréhender l'apprentissage dans le monde du développement. JavaScript reste un des meilleurs langages pour débuter, et l'apprentissage de tel ou tel langage ne doit se faire qu'en fonction des besoins, et surtout du plaisir à évoluer avec!

Tout développeur, qu'il soit jeune ou non ne peut connaître l'ensemble des éléments constitutifs de son monde de travail, j'encourage toutefois chaque personne à trouver son équilibre dans l'apprentissage qui lui permettra de rester rapide et évolutif, aidés par la connaissance de concepts fondamentaux. Je suis convaincu que seul cet équilibre permet une avancée concrète et une réelle montée en compétence.