Je veux vous parler de pourquoi nous réparons plus souvent la plomberie que nous ne rédigeons des diplômes à son sujet, des différentes approches de l'apprentissage de la programmation et de la manière dont nous essayons d'appliquer l'une d'elles dans notre nouveau produit Hyperskill.
Si vous n'aimez pas les longues introductions, passez directement au paragraphe sur la programmation. Mais ce serait moins amusant.
Parenthèse lyrique
Imaginons une demoiselle nommée Masha. Aujourd'hui, Masha avait prévu de se laver des fruits et de regarder tranquillement un film, mais voilà qu'elle découvre avec désarroi que l'évier de la cuisine est bouché. Que faire ? Pour l'instant, c'est flou. Elle peut remettre cette question à plus tard, mais elle a du temps libre maintenant, alors Masha décide de régler le problème immédiatement. Le bon sens lui suggère deux options : a) appeler un plombier b) essayer de s'en sortir par elle-même. La demoiselle choisit la seconde option et se met à chercher des instructions sur YouTube. Sur les conseils de l'utilisateur Vasya_the_plumber, Masha regarde sous l'évier et y voit un tuyau en plastique s'enroulant en plusieurs parties. Elle dévisse prudemment une partie à la base de l'évier et ne trouve rien. Un morceau de tuyau plus bas est bloqué avec une substance inconnue, et même la fourchette trouvée sur la table n'arrive pas à résoudre le bouchon. Les experts d'internet donnent des prévisions peu encourageantes : elle devra remplacer la pièce. Sur la carte, Masha trouve le magasin de plomberie le plus proche, emmène avec elle le morceau de tuyau problématique et achète un identique, mais neuf. Sur les conseils du vendeur, Masha prend aussi une nouvelle passoire, pour la prévention. Mission accomplie : l'évier refonctionne comme il se doit, et sa principale protagoniste, entre-temps, a appris ce qui suit :
- Les tuyaux sous l'évier peuvent être dévissés et revissés par soi-même ;
- Le magasin de plomberie le plus proche se trouve à un kilomètre et demi de l'appartement de Masha.
Il est fort probable que Masha n'ait même pas remarqué combien de nouvelles choses elle a apprises et ce qu'elle a appris, car elle se soucie de son propre confort à l'avenir, ainsi que de la projection d'un film et d'une pomme propre. La prochaine fois qu'elle rencontrera un problème semblable, la demoiselle le résoudra beaucoup plus rapidement. En réalité, Masha ne faisait pas que ramener l'ordre habituel ; elle apprenait de manière inductive, c'est-à-dire à partir de cas particuliers, et de manière orientée vers la pratique, c'est-à-dire en faisant les choses plutôt qu'en les étudiant en détail à l'avance.
Tout aurait pu être différent. Supposons que Masha soit assise le soir dans son fauteuil et qu'elle réalise soudainement qu'elle n'est pas moralement et physiquement prête à faire face à un bouchon dans l'évier. Elle s'inscrit précipitamment à l'académie de plomberie, étudie les types d'éviers, de tuyaux et de connexions possibles, la classification des problèmes de plomberie et les solutions possibles. Masha ne dort pas la nuit, mémorisant des termes et des noms. Elle écrit même peut-être une thèse sur la théorie des tuyaux, où elle réfléchit aux joints en caoutchouc. Enfin, après avoir obtenu son certificat, Masha examine fièrement sa cuisine, convaincue que même le moindre problème avec l'évier se résoudra d'un snap de doigts. Dans ce scénario, la fille a appris de manière déductive, passant du général au particulier, et s'est plutôt orientée sur la théorie..
Alors, quelle approche conviendrait le mieux ? Dans le cas de l'évier et du bouchon — la première, et voici pourquoi :
- Si seul un évier fonctionnel est important, il suffit de savoir ce qui concerne ce domaine particulier. Lorsque Masha réalisera qu'elle manque de connaissances, elle trouvera sans doute un moyen d'en apprendre davantage.
- Une érudition encyclopédique peut ne pas se déclencher dans une situation réelle, car l'habitude n'est pas rodée. Pour apprendre la séquence des actions, il est plus pertinent de ne pas simplement les lire, mais de les exécuter.
Laissons Masha tranquille et passons au processus d'apprentissage en tant que tel.
Programmation : apprendre ou faire ?
Nous avons tendance à penser que, pour se développer et devenir un expert dans un domaine inconnu, il faut d'abord entrer à l'université ou au moins s'inscrire à des cours. Nous écoutons soigneusement ce qu'on nous raconte, accomplissons des tâches. Mais lorsque le précieux diplôme ou certificat est en main, nous nous perdons instantanément, parce que nous n'avons pas compris pourquoi nous avions besoin de tant d'informations et comment les appliquer concrètement. Cela ne pose pas de problème si la suite des événements consiste à écrire des travaux de recherche et à se rendre à des conférences. Dans le cas contraire, il est important de viser aussi les compétences, c'est-à-dire de faire et de refaire des choses concrètes, d'essayer et de se tromper, afin de retenir longtemps ce qu'il vaut mieux ne pas faire.
Un des domaines où une "main experte" ou un "regard aiguisé" vont de pair avec une vaste culture générale est la programmation. Si vous discutez avec des développeurs expérimentés, vous entendrez des histoires impressionnantes où un individu a commencé à s'occuper de mathématiques/physique/enseignement dès son jeune âge, puis a décidé de passer au développement back-end. Il existe même des programmeurs sans diplôme universitaire ! Ce qui est valorisé chez un développeur, c'est avant tout non pas un certificat ou un diplôme, mais la quantité et la qualité des programmes, scripts et sites web qu'il a écrits.
"Mais attendez!", allez-vous rétorquer, "C'est joli sur le papier - lancez-vous et réalisez-le ! Je ne peux pas simplement écrire un programme pour moi-même si je n'ai jamais programmé auparavant ! J'ai besoin de comprendre où coder, comment communiquer avec le compilateur dans un langage de programmation. Ce n'est pas juste trouver le numéro de téléphone d'un plombier sur Google."
Il y a une triste vérité dans cela. Un aspect inconnu en entraîne un autre, celui-ci en entraîne un troisième, et bientôt ce processus se transforme en un numéro de magicien qui continue à sortir des foulards liés sans jamais les retirer de son chapeau. Ce processus, je dois le dire honnêtement, est désagréable, à la cinquième "foulard", on a déjà l'impression que la profondeur de l'ignorance est proche de celle de la fosse des Mariannes. L'alternative à cela est de suivre les mêmes cours sur les 10 types de variables, les 3 types de boucles et les 150 bibliothèques potentiellement utiles. C'est triste.
Hyperskill : nous avons construit, construit et enfin construit.
Nous avons longuement réfléchi à ce problème. La date de notre dernier article sur le blog témoigne éloquemment de la durée de notre réflexion. Après de nombreux débats et tentatives d'intégrer une nouvelle approche sur Stepik, nous avons créé... un autre site. Vous en avez peut-être déjà entendu parler comme étant une partie de la JetBrains Academy. Nous l'avons nommé Hyperskill, avons intégré un apprentissage par projet, lié une base de connaissances sur Java et bénéficié du soutien de l'équipe EduTools. Voici plus de détails.
Un objectif concret. Nous proposons un "menu" de projets, c'est-à-dire des programmes que vous pouvez écrire avec notre aide. Parmi eux, vous trouverez des jeux de morpion, un assistant personnel, une blockchain, un moteur de recherche, etc. Les projets se composent de 5 à 6 étapes ; le résultat de chaque étape est un programme terminé. "Pourquoi alors les autres étapes, si tout a déjà réussi à la première ?" Merci pour la question. À chaque étape, le programme devient plus fonctionnel ou plus rapide. Au début, le code occupe 10 lignes, à la fin, il peut ne pas tenir dans 500.
Un peu de théorie. Il est impossible de s'asseoir et, sans connaître un mot de programmation, d'écrire même Hello World. C'est pourquoi à chaque étape du projet, vous voyez quelles bases théoriques vous devrez maîtriser et, surtout, où les trouver. Les bases se trouvent également sur Hyperskill dans la section « Carte des connaissances » (Knowledge Map). Pour la première étape du projet, les étudiants ne sont pas obligés de lire des données à partir d'un fichier, même s'ils ne savent pas encore comment faire. Ils apprendront plus tard eux-mêmes, pour leur culture générale, ou cela leur sera nécessaire à l'étape suivante.
Carte des connaissances. Elle montre quelles thématiques vous avez déjà étudiées et comment elles sont liées entre elles. Ouvrez n'importe quel sujet attrayant. Vous pouvez le parcourir rapidement, mais nous vous recommandons d'effectuer également quelques petites tâches pour vous assurer que l'information est bien assimilée. Au début, la plateforme vous proposera des tests, puis quelques tâches de programmation. Si le code compile et passe les tests, comparez-le à la solution de référence (reference solution), cela aide parfois à découvrir une méthode d'implémentation plus optimale. Ou simplement à vérifier que votre solution est déjà excellente.
Rien de superflu. Nous attendons à la fois des utilisateurs « débutants » et des développeurs chevronnés. Si vous avez déjà écrit des programmes, pas de souci, nous ne vous ferons pas recommencer à additionner 2+2 ou à inverser une ligne. Pour atteindre directement le niveau souhaité, lors de l'inscription, indiquez ce que vous connaissez déjà et choisissez un projet un peu plus compliqué. N'ayez pas peur de vous surestimer : si nécessaire, vous pouvez toujours revenir à un sujet oublié dans la carte des connaissances.
Outils. C'est génial d'écrire de petits morceaux de code dans une fenêtre spéciale sur le site, mais la vraie programmation commence avec le travail dans un environnement de développement (Integré Ddéveloppement ELes programmeurs expérimentés savent non seulement comment écrire du code, mais aussi comment concevoir une interface graphique, assembler différents fichiers dans un projet, utiliser des outils de développement supplémentaires, et une partie de ces processus est gérée par l'IDE. Pourquoi ne pas apprendre ces compétences pendant que vous apprenez la programmation ? C'est là que JetBrains entre en jeu avec une version spéciale d'IntelliJ IDEA Community Educational, équipée du plugin EduTools préinstallé. Dans cet IDE, vous pouvez suivre des cours, vérifier vos exercices résolus et consulter des astuces pour le projet si vous avez oublié quelque chose. Ne vous inquiétez pas si vous entendez le mot “plugin” ou “IDE” pour la première fois : nous expliquerons ce que c'est et comment l'installer sur un ordinateur ou un ordinateur portable sans trop de tracas. Comprenez la théorie, puis passez à l'IDE et terminez la prochaine étape du projet directement là.
Les délais. Ils n'existent pas ! Qui sommes-nous pour vous heurter sur la tête et vous dire à quelle vitesse vous devez écrire un programme ? Quand vous aimez écrire du code et que vous voulez le terminer, vous le terminez, aujourd'hui ou demain. Développez à votre convenance.
Erreurs. Tout le monde en fait, faites-le aussi à l'une des étapes du projet, et alors cette étape ne passera pas les tests automatiques. Eh bien, vous devrez comprendre par vous-même ce qui s'est mal passé. Nous pourrions indiquer où est l'erreur, mais cela vous apprendrait-il à écrire du code avec soin ? Lisez les conseils d'IDEA ou le topic théorique sur les bugs, et lorsque le programme fonctionnera enfin, le rush de dopamine ne se fera probablement pas attendre.
Résultat visible. Donc, vous avez terminé votre premier projet, que faire ensuite ? Profitez des fruits de votre travail ! Jouez aux tic-tac-toe avec des amis, tout en vous vantant de vos réussites. Téléchargez le projet sur GitHub pour le montrer à un futur employeur, rédigez la description vous-même, indiquez-y les compétences que vous avez utilisées. 4 à 5 projets complexes, et voilà, un portfolio modeste pour un développeur débutant est prêt.
Opportunité d'évolution. Supposons que vous regardiez Hyperskill et que vous ne voyez pas un sujet important ou un projet utile. Faites-nous savoir ! Si votre arrière-plan est plus large et plus riche que la carte des connaissances, écrivez-nous via le formulaire. . Notre équipe partagera avec vous ses propres conseils et astuces, nous serons donc ravis de vous aider à transformer vos connaissances en contenu utile, compréhensible pour des utilisateurs de différents âges et niveaux. Peut-être que nous vous paierons même, mais ce n'est pas certain.
Bienvenue : Venez, regardez, essayez, proposez, louez et critiquez. Nous apprenons aussi à vous enseigner.
Source : habr.com
