Apprentissage,  Programmation

Méthodes pour améliorer mon apprentissage

Depuis deux ou trois ans, je fais de la lecture sur le sujet de l’apprentissage. J’ai lu deux livres pendant l’été 2019 sur le sujet. Dans cet article, je vais aborder le sujet de comment apprendre la matière dont j’ai besoin d’apprendre pour devenir un scientifique de données. Mais avant, je vais expliquer un peu pourquoi le sujet est si important pour moi.

John Sonmez à Simple Programmeur a écrit dans son livre1 qu’un programmeur doit avoir beaucoup de connaissances.

C’est vrai aussi pour un scientifique de données. Celui-ci doit connaître la programmation et pas mal de maths et de statistiques s’il veut faire apprentissage machine. J’ai suivi pas mal de cours de maths et de statistiques lorsque j’ai fait mon bac en psychologie pendant les années 1980. Disons que j’ai besoin de me mettre à jour en maths. En plus, il me faut développer mes connaissances en programmation et les bases de données. Pas mal de pain sur la planche n’est-ce pas? Or, comment procéder? C’est le but de cet article.

Mes idées viennent des livres de Peter C. Brown2 Barbara Oakley3 et Scott Young 4. Le but n’est pas de répéter ce que les auteurs ont écrit dans leurs livres (en passant, il y a beaucoup en commun) ni de dresser une liste exhaustive des idées principales, mais de montrer comment j’applique ce que j’ai appris de ces auteurs dans mon apprentissage.

Procrastination

Oakley et Young en parlent dans leurs livres. Oakley consacre au moins un chapitre au sujet. Je ne répéterai pas tout ce qu’elle dit. Je le résume en disant que la procrastination est mauvaise, car elle nuit à l’apprentissage efficace. La procrastination existe sous au moins deux formes: une c’est d’attendre jusqu’à la dernière minute avant de faire le travail. L’autre, c’est de devenir distrait lorsqu’on essaie de concentrer sur notre travail. La distraction empêche le cerveau de concentrer qui est nécessaire pour l’apprentissage.

En conséquence, il me faut trouver des moyens de ne pas remettre à plus tard le travail à faire, car c’est un problème pour moi. J’ai tendance à naviguer sur le web et à faire d’autres choses que de me concentrer sur mon travail. Il y a plusieurs méthodes de contrer la procrastination. Oakley en parle dans son livre. Mais moi, j’en utilise deux.

Une méthode qui marche bien pour moi est simplement de commencer. Je suis le genre de personne qui a de la difficulté à commencer, mais une fois l’opération entamée, je n’ai pas trop de difficulté à rester concentré. J’ai trouvé intéressant d’apprendre de madame Oakley que je ne suis pas le seul à être comme ça. En fait, c’est commun.

L’autre méthode que j’utilise non seulement pour mater la procrastination, mais aussi pour optimiser mon apprentissage s’intitule la technique pomodoro. Pomodoro est le mot italien pour tomate. La personne qui a inventé (probablement italien) la technique avait un minuteur de cuisine en forme de tomate. La pratique consiste simplement de 25 minutes de concentration sur la matière sans distraction suivie par une pause de cinq minutes. La technique pomodoro est appuyée par la recherche et reconnue comme une méthode efficace pour apprendre. Apparemment, après environ 25 minutes de concentration intense, le cerveau connaît une baisse de régime. Voilà l’importance de prendre une petite pause.

Je peux vous dire la pomodoro marche bien pour moi et je trouve qu’elle donne de bons résultats. Cependant, je dois faire attention à ne pas prendre des pauses trop longues.

Être direct

C’est un sujet qui a attiré mon attention, car c’est très important pour les autodidactes. Le livre de monsieur Young est de loin le meilleur à ce propos. Il explique que le transfert de connaissances est un grand défi dans le domaine de l’enseignement. Les élèves ont souvent de la difficulté à appliquer ce qu’ils ont appris dans un contexte dans un autre. Il propose qu’un des moyens pour pallier ce problème est d’être direct dans son apprentissage.

C’est quoi d’être direct dans son apprentissage? Aller droit au but consiste à lier notre apprentissage le plus près possible à la situation ou le contexte dans lequel nous l’appliquons. Par exemple, supposons qu’on veut mieux parler une langue. Dans ce cas, on va entamer les conversations avec les gens qui parlent la langue.

Cela peut sembler évident. Mais le milieu d’enseignement n’applique pas souvent ce principe. Par exemple, lorsque j’étudiais au cégep les élèves devaient suivre un cours de statistique et des cours de réseautique. Or, si l’élève trouve un emploi comme programmeur web, pas sûr qu’il va se servir de statistiques. Un programmeur qui développe des programmes pour les ordinateurs de bureau n’a pas besoin de savoir grand-chose sur la réseautique. Comme monsieur Young a écrit que ça ne donne rien de résoudre des problèmes complexes qu’on ne rencontrera jamais dans la vraie vie.

Monsieur John Sonmez a fait une vidéo qui s’intitule « Here’s Why You CAN’T LEARN PROGRAMMING (Learn To Code Faster 2020) » dans lequel il a dit qu’on a besoin d’apprendre X pour faire Y. Il a dit aussi que ça ne donne rien d’apprendre quelque chose qu’on ne va pas mettre en pratique, car on finit par l’oublier. Cela correspond à ce que monsieur Young a écrit dans son livre.

Ce point avait des conséquences très importantes pour moi en tant qu’autodidacte. Je veux devenir un scientifique de données et je m’intéresse au domaine de marketing. Selon des conseils de monsieur Young, comment devrai-je procéder? J’embarquerai dans les projets qui appliquent la science de données dans le domaine de marketing. Supposons que je rencontre des lacunes dans mes connaissances en bases de données pour réaliser le projet. Dans ce cas, j’irai apprendre la matière nécessaire pour combler mes lacunes. Je ne suivrai pas un cours au complet sur les bases de données, ni lire un livre au complet sur le sujet. Je développerai les savoir faire nécessaire pour compléter ce dont j’ai besoin de faire.

L’apprentissage machine joue un rôle important dans le domaine de la science de données et il s’applique de plus en plus dans le domaine du marketing. L’apprentissage automatique demande aussi beaucoup de connaissances en mathématiques, l’algèbre linéaire, le calcul de variables multiples, les statistiques et la probabilité. Est-ce que je vais suivre des cours sur tous ces sujets? Non. Est-ce que je vais lire des livres au complet sur tous ces sujets? Non. Qu’est-ce que je vais faire? Je vais embarquer dans les projets de marketing dans lesquels je dois appliquer l’apprentissage machine. Si je rencontre une lacune dans mes connaissances en algèbre linéaire pour réaliser le projet, je vais consulter des livres, cours sur des vidéos, etc. pour combler la lacune.

Aller droit au but m’a beaucoup aidé, car j’avais tellement de choses à apprendre et je ne savais pas par où à commencer. Il s’agit d’établir des priorités. En plus, il faut savoir quand j’ai appris assez sur le sujet en question.

Est-ce qu’on peut être direct dans notre apprentissage quand on veut apprendre la théorie ou les notions plus abstraites? Monsieur Young croit que oui. Il nous conseille d’écrire une thèse ou créer un cours sur le sujet.

Monsieur Young croit qu’aller droit au but règle en grande partie le problème de transfert de connaissances, car nous l’appliquons nos connaissances là où nous avons besoin de les utiliser. Je partage son opinion.

Exercices

Dans la section d’« être direct », j’ai parlé des lacunes dans mon apprentissage. Monsieur Young aborde la question de comment combler nos lacunes et c’est avec des exercices pratiques. Je trouve que ses conseils très pertinents. Je m’explique, faire la programmation demande beaucoup de compétences en même temps. Il faut appliquer plusieurs notions et il faut être capable de se débrouiller à travers tout ça. Quand j’ai commencé à programmer, il fallait savoir comment utiliser l’environnement de développement (EDI), savoir comment des méthodes travaillent avec d’autres méthodes qui sont ailleurs dans le programme. Puis, il y a le débogage à travers ça ainsi que la syntaxe, etc. Si le programme fait appel à des fichiers, des librairies et des classes, il faut savoir comment tout ça travaille ensemble.

L’application de plusieurs éléments conjointement fait en sorte que je deviens débordé et mêlé lorsque je fais de la programmation. À l’école, les mathématiques ont toujours été parmi mes sujets préférées. Mais, j’ai trouvé la programmation beaucoup plus difficile, et c’est justement à cause du fait qu’il y a davantage de facteurs à considerer en même temps. Or, comment dois-je gérer ce défi?

Monsieur Young m’a fourni de précieux conseils. Isoler les éléments qui ralentissent le plus le progrès de notre projet avec des exercices. Celles-ci nous permettent de nous concentrer sur nos points faibles et les surmonter. Puis, nous revenons à notre projet et nous intégrons la nouvelle compétence acquise dans l’activité que nous faisions.

Monsieur Young aborde plusieurs façons de faire des exercices. Je suis à mes débuts au sujet de la mise en pratique de ses suggestions, mais pour l’instant l’exercice que j’utilise à profusion s’intitule « enchaîner les préalables » [traduction libre] qui consiste à essayer de faire un exercice même quand je sais que je n’ai pas tous les préalables pour la réussir. Une fois que j’échoue, je retourne en arrière et j’apprends un des sujets de base. Puis, je répète l’exercice. Autrement dit, je commence trop difficile. Puis, j’apprends les préalables au fur et à mesure que j’en ai besoin. Ainsi, j’épargne du temps, car je n’ai pas besoin d’apprendre les éléments d’aptitudes qui ne contribuent pas à une performance accrue.

Mon premier projet de Web scraping illustre très bien l’utilité des exercices. J’avais beaucoup de problèmes à faire du débogage. D’abord, je devais apprendre comment écrire des programmes en python avec Vim. Une fois que j’ai appris comment configurer Vim avec le linteur flake8, je devais apprendre comment faire la journalisation, car celle-ci s’est avérée la meilleure méthode pour suivre le déroulement du code. Ces deux éléments étaient les préalables pour devenir efficace dans le débogage. Une fois que j’ai trouvé la cause du problème grâce au débogage, j’étais en mesure de développer les connaissances nécessaires pour le corriger.

Un point important à noter à propos des exercices: elles se situent toujours dans un contexte. Une fois que je trouve ce qui cause le goulot d’étranglement qui m’empêche d’avancer dans un projet, les exercices servent à un nouvel objectif et elles me permettent d’avancer dans le contexte en question.

J’aurai probablement d’autres choses à dire à propos des exercices. Par exemple, monsieur Young explique comment doser les exercices et comment en choisir les bonnes. Mais je ne suis pas encore rendu à cette étape dans ma démarche.

Conclusion

Cet article est loin d’être exhaustif sur le sujet de l’apprentissage. Par exemple, je n’ai pas mentionné la récupération qui joue un rôle primordial dans l’apprentissage. Cela dit, mon but est de montrer où je suis rendu et comment j’avance. Les conseils dans cet article m’aident beaucoup, car je sentais déborder à cause de la quantité de matière à apprendre. Je ne savais pas la meilleure méthode pour combler mes lacunes. J’espère pouvoir aider les autres.

  1. « The Complete Software Developer’s Career Guide: How to Learn Your Next Programming Language, Ace Your Programming Interview, and Land The Coding Job Of Your Dreams »
  2. « Mets-toi ça dans la tête !: Les stratégies d’apprentissage à la lumière des sciences cognitives » de Mark A. McDANIEL, Henry L. ROEDIGER et Peter C. BROWN
  3. « A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra) »
  4. « Ultralearning: Master Hard Skills, Outsmart the Competition, and Accelerate Your Career » Scott YOUNG
Commentaires fermés sur Méthodes pour améliorer mon apprentissage

Programmation, science de données et marketing