S'entraîner par le biais de différents exercices et challenges est important car cela va vous permettre d’améliorer plusieurs branches de votre spectre de compétences:
- Algorithmie (ne pas non plus s’attendre à une progression incroyable 😟).
- Améliorer votre vitesse d’exécution (fluidité pour écrire le code).
- Pratiquer (et potentiellement découvrir) des fonctionnalités du langage. À noter que dans ce cas-là il est important de synchroniser la découverte avec une volonté de vous documenter (articles, talks, ebook).
- Vous permettre de découvrir une part non négligeable de notre quotidien et des difficultés auxquelles nous devons faire face.
Note
Je vous recommande de vous faire régulièrement des sessions de code plus ou moins intensives. Je vous joins une vidéo de la chaîne de Tony qui parle de son expérience et son parcours sur son apprentissage autour des algorithmes.
Les liens suivant vous permettront d’effectuer un ensemble de workshops et challenges:
- EN [Débutant] https://www.freecodecamp.org/
- FR [Débutant] https://nodeschool.io/ (Il y a plus d’une dizaine de workshops vraiment très intéressants à faire, voir la section suivante).
- FR [Débutant] https://www.thearenaproject.co/ Challenge tes compétences en shell, algorithme et TypeScript dans l'arène le tout accompagné d'une communauté française sur Discord.
- EN 🆕 [Débutant] JavaScript Algorithms Crash Course - Learn Algorithms & "Big O" from the Ground Up!
- EN [Intermédiaire] https://jskatas.org/
- EN [Intermédiaire] https://warriorjs.com/
- EN [Intermédiaire] Challenge “Build Your Own Array in Javascript!”
- FR [Avancé] https://github.com/fraxken/test-challenge (Des mini-challenges où l’objectif est l’écriture de test unitaire.. n’hésitez pas à prendre contact avec moi si besoin).
En France il y aussi le Battle Dev qui est organisé fréquemment. Les membres de la communauté JS participent depuis quelques éditions.
Si vous êtes débutant ou que vous ne connaissez pas encore les workshops de Nodeschool, je vais vous guider dans les différents choix qui s’offrent à vous.
Noter que vous allez devoir devenir à l’aise avec les instructions en ligne de commande 😬 (c’est une bonne occasion pour vous y mettre si ce n’est pas encore le cas).
Warning
Certains workshops ne sont plus maintenus à jour. En 2023 les workshops Nodeschool ne sont malheureusement plus très pertinent!
Parmis les workshops que je vous recommande (plus ou moins dans l’ordre) :
- JavaScripting (relativement simple)
Learnyounode- How to npm (découverte)
- Functional JavaScript
- Planet proto (découverte)
- Count to 6 (relativement simple)
- Promise it won't hurt (important)
- Learn generators
- Bytewiser
Stream Adventure(un peu plus difficile)
Il y a d’autres workshops (libre à vous de regarder s’ils vous intéressent). A noter qu’il existe aussi un évènement NodeSchool Paris avec l’excellent orateur Christophe PORTENEUVE (mais avec le COVID forcément il n’y a plus d’éditions pour le moment).
Attention, ces défis sont très difficiles (et nécessitent également des connaissances en Node.js et V8).
- Jour 1: Surviving the Freeze (Warmup)
- Jour 2: Cleaning up the mess
- Jour 3: Disappearing Act
- Jour 4: Silent connection, holy connection
- Jour 5: Are we done yet?
- Jour 6: Is anybody listening?
- Jour 7: Under the ice
- Jour 8: Immaculate coercion
- Jour 9: Bundlers Hate This
- Jour 10: Back to Algorithms
- Jour 11: The old switcheroo
- Jour 12: You say goodbye, I say hello
Divers sites internet proposant divers challenges et exercices:
- EN https://www.codingame.com/
- EN https://www.codewars.com/
- EN https://leetcode.com/
- EN https://www.hackerrank.com/ (Il y a notamment des catégories pour les Mathématiques et Algo).
Je n'ai pas forcément de recommandation pour ceux-ci (en ce qui me concerne je n’accroche pas forcément avec ces sites).
Si certains d’entre vous sont des grands motivés et que vous souhaitez vous orienter dans les compétitions de code (ou que les mathématiques et la résolution d’algorithmes c’est votre truc ^^) eh bien je vous recommande les liens suivants :
- EN What is Competitive Programming?
- EN Competitive Programmer’s Handbook
- EN Starting Competitive Programming - Steps and Mistakes
- EN How to start Competitive Programming? For beginners!
- EN Fundamentals of algorithms
- EN Codeforces
C’est un domaine qui vous demandera de travailler très sérieusement les mathématiques et d’étudier très longuement les diverses structures et algorithmes existants.
⬅️ JavaScript: 📕 Dédier un temps quotidien à la lecture | ➡️ JavaScript: 🌌 Cours en ligne, talks et articles