Pourquoi j'ai commencé #100DaysOfCode

Bon, j’ai commencé cet article en avril 2018. Il se trouve que je ne l’avais jamais fini jusqu’à maintenant, mais faites comme s’il avait été publié en avril 2018. Il traite de ma situation à cette époque et non de celle d’aujourd’hui.

Les ordinateurs m’ont passionné depuis aussi longtemps que je m’en souvienne. Fasciné par leur fonctionnement, j’ai toujours cherché à mieux le comprendre. J’adore apprendre et j’adore améliorer ma maîtrise de l’informatique, que je considère comme un formidable outil pour rendre le monde meilleur.

Je me suis introduit à la programmation en sixième grâce à Scractch ; j’ai appris les rudiments de Java un an plus tard. En quatrième, ma curiosité m’a fait découvrir les joies du développement Web avec HTML et CSS. Depuis, j’ai fini par plus ou moins maîtriser ces deux langages fondamentaux du Web et j’ai essayé de plonger dans le grand bain en m’attaquant à JavaScript.

Le problème, c’est que c’est dur.

J’ai commencé par apprendre les bases du langage et de sa syntaxe, mais, une fois celles-ci maîtrisées, je me suis retrouvé désemparé. Je me sentais un peu perdu face à tout ce qu’il semblait rester à apprendre. Et surtout perdu face à l’absence d’un chemin clair à emprunter.

Mon but était d’apprendre à créer des applications Web complètes et je ne savais pas vraiment comment y arriver.

J’avais l’impression de plutôt bien connaître le langage JavaScript lui-même et la plupart des concepts de programmation importants. Je savais faire des petits scripts et algorithmes, manipuler des variables ou des noeuds HTML et afficher des messages à l’écran, comme l’apprennent tous les tutoriels sur les bases de JavaScript.

Cependant, je n’avais aucune idée de comment passer d’une connaissance basique de JavaScript à la capacité de développer des applications Web full-stack. Je sentais bien que simplement connaître la syntaxe de JavaScript ne suffisait pas pour s’attaquer au vrai développement Web, mais je ne savais pas quoi apprendre ni comment.

J’ai essayé d’apprendre Node.js, mais dès que je regardais le code d’une vraie application Web ou que je m’avançais un peu dans un tutoriel pourtant destiné à des débutants, je me sentais perdu. Que faisaient tous ces outils, ces middlewares, ces import, ces déclarations ? Était-ce une syntaxe JavaScript que je ne connaissais pas ou un outil externe ? Même dans des exemples simples, le fonctionnement de certaines choses restait parfois un mystère pour moi.

J’avais l’impression de ne pas m’y prendre de la bonne façon et surtout le sentiment désagréable de ne pas progresser malgré tous mes efforts.

J’ai continué à apprendre de nouvelles choses, mais, même si je comprenais rapidement les concepts de base, j’avais toujours l’impression de faire du bricolage et de ne pas vraiment maîtriser les outils. Bien que je puisse construire des sites Web statiques relativement décents avec React et Gatsby, je n’avais aucune idée claire de comment passer de cela à être capable de construire de vraies applications Web full-stack.

Il y a un phénomène que les gens appellent la JavaScript Fatigue. Pour moi, la JavaScript Fatigue c’était ne pas savoir quoi faire ni quelle route emprunter pour atteindre mon objectif.

Jusque là, j’allais aléatoirement de tutoriel en tutoriel, en espérant que je me mette à mieux comprendre et à progresser d’un coup. Mais je dois me rendre à l’évidence : il faut changer de méthode.

La seule façon de devenir un vrai développeur Web, c’est de développer des applications Web, de créer des choses, d’essayer. Construire des sites Web, produire quelque chose chaque jour, pour progresser. Ce n’est qu’ainsi que je pourrai éventuellement construire de vraies applications Web à partir de zéro. Aucune roadmap ni aucun guide n’aidera sans beaucoup de pratique.

J’ai bien trouvé quelques guides pour « vaincre la JavaScript Fatigue » ou des feuilles de route pour m’attaquer à cette histoire de développement Web full-stack, mais, si je ne me mets pas au travail pour de vrai, ça ne sera d’aucune utilité. J’avais l’habitude de regarder ces feuilles de route, de voir qu’il y avait pas mal de choses que je connaissais déjà et puis d’en chercher une autre. J’évitais de pratiquer et construire de vrais projets.

Donc plutôt que de continuer comme cela et de rester frustré par ma progression trop lente, j’ai décidé de changer de méthode.

L’idée, c’est d’arrêter de me promener sur le Web entre différents articles ou tutoriels et de passer le plus de temps possible à construire des choses, à coder pour de vrai.

Ça fait un petit moment que j’ai entendu parler d’un challenge qui propose justement une démarche intéressante, le 100 Days Of Code Challenge. Le principe est tout simplement de coder une heure par jour pendant 100 jours de suite. Seul le temps passé à programmer compte. La deuxième règle est de partager publiquement son progrès chaque jour et de s’encourager entre participants.

Le fait de coder tous les jours, même ne serait-ce qu’un petit peu, permet de progresser à un rythme palpable. Se fixer chaque jour un objectif atteignable permet d’accumuler de la satisfaction et de la motivation, car on sent qu’on avance. Le challenge incite à se discipliner soi-même. Changer un élément de son quotidien chaque jour pendant une certaine période est une très bonne manière de créer une habitude. En cela, le challenge est aussi un très bon entrainement pour apprendre à mettre en place des systèmes qui nous aident à atteindre nos objectifs.

Il y a toute une communauté autour de ce challenge et plein de ressources pour apprendre, ce qui rend la chose encore plus motivante. Je ne vais pas tout expliquer dans les détails, mais je vous laisse quelques liens en fin d’article pour vous documenter.

Ça fait quelques semaines que j’y réfléchis et j’ai décidé de m’y mettre et de coder une heure par jour, chaque jour. Je pense que ça m’aidera à progresser et que ça me permettra de dépasser ma frustration et ma confusion.

Je voudrais que la programmation soit la partie facile de mes projets.

J’ai créé un journal où je note chaque jour mon progrès, ce que je fais et la stratégie que j’ai adoptée. Vous pouvez le consulter ici : https://github.com/thomaskuntzz/100-days-of-code

NB : Comme précisé en début d’article, je parle ici de ma situation avant avril 2018. Elle a largement évolué depuis. Ici, je force un peu le trait pour essayer de décrire les difficultés que j’ai pu rencontrer et la stratégie que j’ai choisie pour y faire face.


“Join the #100DaysOfCode” — FreeCodeCamp Medium

“Boot Up 2017 with the #100DaysOfCode Challenge” — FreeCodeCamp Medium

“The unlikely history of the #100DaysOfCode Challenge, and why you should try it for 2018” — FreeCodeCamp Medium