-
Notifications
You must be signed in to change notification settings - Fork 0
Apprendre à programmer, la méthodologie
ATTENTION : J'ai foutu des idées en vrac complet là. Cet article me tient à coeur et je n'ai pas le temps de l'écrire, mais j'ai souhaité mettre ici toutes les idées qui m'étaient venues pendant les 10 ou 15 minutes que j'avais de dispo. D'ici peu, j'aurai le temps de le finir correctement.
Cet article a pour objectif de vous présenter une méthodologie d'apprentissage pour la programmation. Bon nombre d'étudiants qui apprennent à programmer n'ont pas les bons outils méthodologiques et finissent par prendre du retard ou se perdre dans tout ce bordel qu'est le monde de l'informatique.
Notions à voir :
- L'autonomie
- Debugging
- L'algorithme d'apprentissage
- La motivation d'un projet (mini-projet pour l'effet tunnel)
- S'entourer de développeurs et de gens motivés
- Conclusion
Il est impératif de devenir autonome. Vous devez arriver à travailler seul et à programmer sans l'aide de personne. Bien sûr, les premières fois, vous devrez demander de l'aide pour comprendre. Seulement, ensuite, vous allez devoir coder et chercher à comprendre par vous-même. Savoir debugger un programme est très important. Lorsque vous ne comprenez pas un algorithme, que vous ne trouvez pas une erreur, ou que vous utilisez une nouvelle librairie, vous devez savoir debugger votre programme et trouver le problème ou comprendre sa structure par vous-même. Je vais essayer de donner un exemple ici pour que vous compreniez.
Il est impératif de maîtriser les bases de la programmation pour réaliser des algorithmes complexes. Sans la maîtrise de cet base, réaliser un code simple ou débugger un code plus compliqué s'avère infaisable seul. Or, il est impératif que vous appreniez à coder seul, sans aide de quiconque, sauf peut-être de google pour quelques aides syntaxiques et autres. Pour cela, vous avez un bon nombre de TPs en cours ou des petits projets/exercices sur le net. Je vous invite à les faire en suivant l'algorithme suivant :
- je fais l'exercice seul, sans aide extérieure (ami, internet, code déjà fait etc.), si je bloque, je vais à la seconde étape, si je ne bloque pas, je vais à la troisième.
- si je bloque, je regarde la correction et essaye de la comprendre pour me débloquer. Une fois que j'ai fini, je reviens à la première étape
- si j'arrive au bout de l'exercice seul, je peux me féliciter, j'ai certainement maîtrisé les derniers aspects de mon code.
Apprendre à programmer demande du temps. Cela demande un investissement personnel qui va au-delà de vos cours si vous êtes étudiant. Vous allez devoir essayer des tas de petits codes. Vous allez être confrontés à plein de problèmes. Vous aurez parfois vos amis pour vous aider, mais très souvent vous serez seul, bloqué face à une erreur; et très souvent, cette erreur est bête. Garder sa motivation face au mur de l'apprentissage qui se dresse devant vous n'est pas chose aisée. Vous entendrez alors souvent des développeurs plus expérimentés qui vous diront :
Si tu veux apprendre à programmer, il te faut un projet qui te motivera
Et face à cette affirmation, je dis oui, mais attention. Il ne faut pas surdimensioner le projet. Un effet très connu en gestion de projet est l'effet tunnel. C'est l'effet que vous avez lorsque vous vous lancez dans un projet, sans objectif à cours-terme et que vous vous retrouvez démotivé parce que vous n'avez pas de résultat et que la charge de travail est trop élevée. IL FAUT FAIRE TRES ATTENTION A CET EFFET.
Ce que je vous conseille est donc de vous demander ce que vous aimeriez coder. C'est un peu comme se poser la question "pourquoi je veux apprendre à coder ?". Par exemple, lorsque j'étais en L1, je souhaitais développer des jeux vidéos MOBA ou RTS. Développer un jeu complet très compliqué n'était pas accessible pour moi. J'ai alors décidé de faire un petit Guitar Hero où des notes décendent et il faut appuyer sur les boutons au bon moment. C'est un jeu réalisable, mais assez compliqué tout de même. J'avais déjà un peu d'expérience en programmation et un ami plus expérimenté m'aider. J'ai pu le faire. Mais vous qui commencez peut-être, visez encore plus simple. Avant de faire ce jeu, j'avais déjà réalisé des petits jeux en console (terminal) où l'on déplaçait un personnage de case en case dans une matrice.
Puisque ce n'est pas évident de savoir quel type de jeu ou de projet est réalisable pour un débutant, je vous proposerai dans ce wiki un ensemble de mini-projets dimensions pour différents niveaux de difficultés.
Pour finir, il faut savoir s'entourer de développeurs plus expérimentés que vous.
Aussi, lorsque vous allez maîtriser les bases de la programmation, il faudra aller voir des codes sur github et analyser ce que d'autres ont fait. J'ai refusé de faire cela pendant mes trois années de licence et n'ai pas eu le temps pendant mon master en alternance. Je l'ai un peu regretté pendant ma thèse où je lisais le code d'autrui et où je me suis rendu compte que c'est infiniment plus formateur.
N'oubliez pas qu'apprendre un langage de programmation est comme apprendre à parler une nouvelle langue. Vous communiquez de manière non ambigü avec votre machine. Il faut alors apprendre des bases solides qui vous permettront de lire des programmes plus complexes. Je me permets de préciser ici que les mathématiques sont pareils. Si elles sont si rebutantes pour les étudiants, c'est parce qu'ils n'ont pas maîtrisé le langage mathématiques, les bases. La lecture des mathématiques devient alors compliqué, elle consomme de l'énergie, elle est frustrante. Mais une fois que vous maitrisez ce langage (pareil pour la musique), tout devient plus facile et plus amusant. J'en ai fait l'exprience. J'adorais la logique mais avais horeur des mathématiques à cause de l'écriture que je ne comprenais pas. J'ai fini par devoir apprendre pour certains projets et ai fini par me focalisé sur les bases. Une fois maitrisées, tout est devenu plus limpide. Je n'ai maintenant pas une connaissance exceptionnelle et très grande des mathématiques et de tous ses domaines, mais je peux m'adapter facilement parce que je sais les lire. La programmation est pareil. Lorsque vous saurez lire un programme, tout ne sera plus qu'une question de temps pour vous adapter à n'importe quel autre programme, quelque soit sa difficulté.