Un rapide avant-propos
Apprendre en faisant: connaissances vs savoir-faire
Il y a une énorme différence de connaissances et de savoir-faire. C'est une erreur courante pour les nouveaux apprenants de penser que parce qu'ils peuvent «comprendre» un programme en le lisant, ils comprennent en fait le raisonnement pour que le programme soit écrit tel qu'il est.
Et la seule façon d'arriver à cette deuxième partie est de pratiquer. Asseyez-vous, ouvrez un éditeur de texte, une ligne de commande et allez-y.
Il est probable (et attendu) qu'à ce stade, votre capacité à comprendre comment plusieurs composants logiciels complexes interagissent entre eux est limitée. Et c'est en fait une bonne chose, car cela vous oblige à partir des bases. Ne sautez pas le pistolet et avancez au bon rythme: commencez par de petits exercices pour de petites tâches.
Pour être honnête, je n'ai jamais été convaincu que commencer à apprendre la programmation avec Java est la voie à suivre (j'avais l'habitude d'enseigner la programmation pour vivre à l'université, et je fais toujours des cours particuliers à l'occasion). Il est en soi trop complexe pour vous permettre de démarrer, et la plupart des livres Java sembleront assez intimidants. Néanmoins, cela peut sûrement être fait (au moins pour certains domaines de cette connaissance globale que nous attendons des programmeurs), tant que vous vous limitez à apprendre étape par étape.
Livres
Comme vous êtes sur Java, et si vous avez besoin d'un livre Java décent, je recommanderais:
- Penser en Java . C'est OK, mais maintenant légèrement dépassé.
- Le tutoriel Java . Ce n'est pas exactement le meilleur compagnon de l'apprenant, mais une excellente référence à garder à portée de main, car il couvre toutes les bases et fournit des exemples. Le Learning the Java Language Trail devrait probablement être sur votre liste de lecture, bien que je pense qu'il peut être intimidant pour les débutants complets car il présente des concepts qui peuvent être difficiles à saisir au début.
- Java efficace . Ce n'est pas un excellent livre pour apprendre, mais aussi une référence géniale que vous devriez avoir à portée de main pour plus tard. Pas pour lire en une seule séance, mais en morceaux de la taille d'une bouchée.
Je ne fais que mentionner cela car je ne sais pas ce que vous utilisez en classe. Il y a des tonnes d'autres livres. Certains sont bons. Certains paralyseront les étudiants pendant des années.
Votre processus d'étude
Le workflow de base
À partir de maintenant, je vous conseille de suivre ce processus en 2 étapes pour tous les exercices et exemples de code que vous avez vus en classe:
- Lire et étudier
- lire les exercices
- assurez-vous de les avoir compris
- code
- ferme le livre
- asseyez-vous devant un ordinateur avec cet éditeur de code et cette ligne de commande
- essayez de réécrire le programme par vous-même
En cas de défaillance
Si vous échouez et sentez que vous devez jeter un œil au livre, votre échec est susceptible d'être:
- (très probablement) que vous n'avez pas réellement compris la solution,
- (moins probable) que vous avez oublié à quoi ressemble un élément particulier de la solution: syntaxe, utilisation de l'API, ...
La première cause est probablement celle à laquelle vous faites face le plus souvent. La seconde est anecdotique. Les deux sont traités par une pratique récurrente.
Chaque fois que vous ne parvenez pas à mettre en œuvre l'un de ces premiers exemples, consultez à nouveau le livre, puis fermez-le à nouveau. Ne codez pas en regardant le livre. Je vous conseillerais même de supprimer l'intégralité de votre solution et de recommencer. La répétition est une partie ennuyeuse mais importante du processus d'apprentissage.
Ne prenez pas cela à la légère. Chaque fois que vous ressentez l'envie de vous dire "ouais, ok, je sais ça" ou "j'y suis à 90%, c'est presque aussi bien que fait" et que vous souhaitez passer à une autre section, combattre cette envie et recommencer. Il est très difficile d'avoir l'honnêteté de vous admettre que vous n'avez pas bien compris un concept.
Note latérale: Je considère comme un grand mauvais service que la plupart des programmes scolaires tentent maintenant de "démarrer" les cours de programmation en simplifiant trop les choses et en fournissant des outils trop avancés pour les élèves: le but n'est pas de vous rendre la vie misérable ou d'apprendre trop. par cœur des choses qui plus tard dans votre carrière seront automatisées par vos outils et dont vous vous souviendrez même parfois à peine. C'est pour vous apprendre tous les morceaux qui flottent.
En cas de succès: allez au-delà!
Si vous réussissez à mettre en œuvre votre exercice, ne passez pas nécessairement directement au suivant. Essayez de voir ce que vous pouvez faire pour l'améliorer. Pouvez-vous modifier la sortie demandée? Ajouter une petite fonctionnalité? Une option? Essayez, car vous êtes maintenant dans cette zone amusante où vous avez passé la principale difficulté, et ces petites exigences auto-imposées sont plus susceptibles de garder votre moral.
Mais n'allez pas trop loin: vous ne passez pas de l'impression de l'alphabet et de son inversion à sa soudaine apparition en diagonale à l'écran avec un dégradé de couleurs. Faites de petits pas. L'apprentissage est un processus long et itératif, et vous devez aborder les problèmes avec des niveaux de difficulté croissants (par exemple, voyez comment je pense habituellement à expliquer la récursivité ).
C'est juste un apprentissage - une comparaison
Votre problème n'est pas du tout lié à la programmation. C'est le même problème que des milliers de personnes rencontrent lorsqu'elles essaient d'apprendre les mathématiques.
Si vous leur posez un problème, ils ne voient pas comment trouver leur chemin vers la solution. Cependant, si vous écrivez la solution pour eux, la plupart la comprendront et penseront "sacrément, c'était si simple!". Pourtant, vous leur donnerez un problème similaire avec différentes mesures et hypothèses et ils ne parviendront pas à le résoudre: ils n'ont pas compris la logique derrière cela, et ils ont besoin de pratique pour être en mesure de le faire eux-mêmes.
Notez que c'est un problème commun avec les mathématiques, mais à mon avis, vous le voyez dans des tonnes d'autres domaines où il y a une certaine logique requise: apprentissage du solfege, grammaire du langage, physique, etc ... Et ce n'est pas dû à une capacité "naturelle" pour comprendre ces choses: cela se résume à la pratique (que ce soit dans ce domaine ou dans d'autres qui amènent l'individu à saisir plus facilement les concepts dans ce domaine).
Il n'y a aucune raison pour laquelle vous ne pouvez pas apprendre à écrire du code. Vous avez juste envie d'essayer jusqu'à ce que vous atteigniez ce "ah AH!" / Moment d'Eureka. Passez ensuite au problème suivant, plus difficile.
Ceux-ci peuvent également aider (plus tard):