Ik wil het met je hebben over waarom we vaker loodgieters repareren dan dat we erover dissertaties schrijven, over verschillende benaderingen van programmeren leren en hoe we proberen een van deze benaderingen toe te passen in ons nieuwe product Hyperskill.
Als je niet van lange intro's houdt, ga dan meteen naar de paragraaf over programmeren. Maar het zal minder leuk zijn.
Lyrische uitweiding
Laten we een dame genaamd Masha voorstellen. Vandaag was Masha van plan om wat fruit te wassen en rustig een film te kijken, maar helaas: ze ontdekte plotseling dat de gootsteen in de keuken was verstopt. Wat te doen? Ze kan dit probleem uitstellen, maar ze heeft nu vrije tijd, dus besluit Masha er meteen mee aan de slag te gaan. Gezond verstand biedt twee opties: a) een loodgieter bellen b) zelf proberen het op te lossen. De dame kiest de tweede optie en begint instructies op YouTube te bestuderen. Op advies van gebruiker Vasya_the_plumber kijkt Masha onder de gootsteen en ziet daar een kronkelige plastic buis met verschillende onderdelen. De vrouw draait voorzichtig een onderdeel los aan de onderzijde van de gootsteen en vindt niets. Een stukje buis lager blijkt hardnekkig verstopt te zijn met een onbekende substantie, en zelfs een vork die ze op de tafel vond, kan de verstopping niet verhelpen. Experts op het internet geven sombere voorspellingen: het onderdeel moet vervangen worden. Masha vindt de dichtstbijzijnde winkel op de kaart, neemt het ongelukkige stuk buis mee en koopt een nieuwe, identieke. Op advies van de verkoper neemt Masha ook een nieuwe zeef mee, voor de preventie. Quest voltooid: de gootsteen werkt weer zoals het hoort, en de hoofdrolspeelster heeft ondertussen het volgende geleerd:
- De buizen onder de gootsteen kun je zelf los- en vastdraaien;
- De dichtstbijzijnde loodgieterswinkel is anderhalve kilometer van Masha's appartement.
Waarschijnlijk heeft Masha helemaal niet opgemerkt hoeveel ze geleerd heeft en wat ze heeft opgestoken, omdat ze vooral bezig was met haar eigen comfort in de toekomst, evenals met het bekijken van films en het gewassen appeltje. De volgende keer dat een vergelijkbaar probleem zich voordoet, zal ze het veel sneller oplossen. Eigenlijk was Masha niet alleen de wereld weer in zijn gebruikelijke staat aan het brengen; ze was aan het leren inductief, dat wil zeggen op basis van specifieke gevallen, en praktijkgericht, dat wil zeggen dingen doen in plaats van ze gedetailleerd en vooraf te bestuderen.
Alles had anders kunnen verlopen. Stel je voor, Masha zit 's avonds in een stoel en beseft plotseling dat ze mentaal en fysiek niet voorbereid is op een verstopping in de gootsteen. Ze meldt zich dringend aan bij de academie voor sanitaire installaties, bestudeert de soorten gootstenen, leidingen en mogelijke verbindingen, de classificatie van sanitaire problemen en de mogelijke oplossingen daarvoor. Masha slaapt 's nachts niet, terwijl ze termen en benamingen onthoudt. Misschien schrijft ze zelfs een proefschrift over theoretische leidingtechniek, waarin ze nadenkt over rubberen afdichtringen. Uiteindelijk, na het behalen van haar diploma, kijkt Masha trots naar de keuken in de volle overtuiging dat zelfs het kleinste probleem met de gootsteen nu met een vingerknip is op te lossen. In dit scenario heeft het meisje geleerd deductief, van het algemene naar het specifieke, en richtte zich eerder op de theorie..
Welke aanpak is dan het beste? In het geval van de gootsteen en de verstopping — de eerste, en hierom:
- Als alleen een werkende gootsteen belangrijk is, is het voldoende om alleen te weten wat betrekking heeft op dit specifieke gebied. Wanneer Masha zich realiseert dat ze niet genoeg kennis heeft, zal ze zeker een manier vinden om meer te leren.
- Encyclopedische kennis kan in een echte situatie niet in werking treden, omdat de gewoonte niet is ingeoefend. Om de stappen te leren, is het zinvoller om ze niet alleen te lezen, maar om ze uit te voeren.
Laten we de arme Masha met rust laten en overgaan naar het leerproces zelf.
Programmeren: leren of doen?
We zijn gewend te denken dat om te groeien en expert te worden in een onbekend gebied, je in de eerste plaats naar de universiteit moet gaan of je althans voor cursussen moet inschrijven. We luisteren zorgvuldig naar wat er wordt verteld en voeren opdrachten uit. Zodra we het felbegeerde diploma of certificaat in handen hebben, raken we onmiddellijk in de war, omdat we nooit hebben begrepen waarom we zoveel informatie nodig hadden en hoe we die specifiek moeten toepassen. Dit is geen probleem als het toekomstige plan is om wetenschappelijke artikelen te schrijven en daarmee naar conferenties te gaan. In andere gevallen is het belangrijk om ook vaardigheden te ontwikkelen, dat wil zeggen te doen en weer te doen, concrete dingen uit te proberen en fouten te maken, zodat we goed onthouden hoe we het vooral niet moeten doen.
Een van de gebieden waar ervaring en kennis hand in hand gaan met een breed perspectief, is programmeren. Als je met ervaren ontwikkelaars praat, hoor je dappere verhalen van mensen die vanaf jonge leeftijd met wiskunde/fysica/onderwijs bezig waren, maar daarna moe waren en overstapten naar backend. Er zijn ook programmeurs zonder een hogere opleiding! Wat in eerste instantie het meest gewaardeerd wordt in een ontwikkelaar, is niet het certificaat of het diploma, maar de hoeveelheid en kwaliteit van geschreven programma's, scripts en websites.
"Maar wacht even!", zul je tegenwerpen, "Dat klinkt mooi - neem het en doe het! Ik kan gewoon geen programma schrijven als ik nog nooit geprogrammeerd heb! Het is belangrijk voor mij om te begrijpen waar ik moet schrijven, hoe ik in principe met een programmeertaal moet communiceren met de compiler. Dit is niet zo eenvoudig als het vinden van het telefoonnummer van een loodgieter op Google."
Er is ook een harde waarheid hierin. Eén onbekend aspect trekt een ander met zich mee, dat trekt op zijn beurt weer een derde aan, en al snel verandert dit proces in een goochelshow, waarbij de goochelaar maar blijft trekken aan verbonden zakdoeken zonder ze ooit uit de hoed te krijgen. Het proces, eerlijk gezegd, is onaangenaam; op de vijfde 'zakdoek' lijkt het al alsof de diepte van onwetendheid dicht bij de Marianentrog ligt. Het alternatief hiervoor zijn diezelfde lezingen over 10 soorten variabelen, 3 soorten lussen en 150 potentieel nuttige bibliotheken. Triest.
Hyperskill: we bouwden, bouwden en hebben eindelijk gebouwd.
We hebben lang na gedacht over dit probleem. Hoe lang we erover nagedacht hebben, blijkt wel uit de datum van de laatste post op onze blog. Na al het gedoe en de pogingen om een nieuwe benadering op Stepik te integreren, hebben we… een andere site gekregen. Misschien heb je er al over gehoord als onderdeel van JetBrains Academy. We hebben het Hyperskill genoemd, projectmatig leren geïntegreerd, een kennisdatabase over Java eraan gekoppeld en steun gekregen van het EduTools-team. En nu wat meer details.
Een specifiek doel. We bieden een "menu" van projecten aan, d.w.z. programma's die je met onze hulp kunt schrijven. Onder hen zijn: kruisjes-nolletjes, een persoonlijke assistent, blockchain, een zoekmachine, enz. Projecten bestaan uit 5-6 fasen; het resultaat van elke fase is een kant-en-klaar programma. "Waarom dan de andere fasen, als het al op de eerste fase gelukt is?" Dank voor de vraag. Met elke stap wordt het programma functioneler of sneller. Aanvankelijk neemt de code 10 regels in beslag, tegen het einde passen er misschien niet eens 500 in.
Een beetje theorie. Het is onmogelijk om te gaan zitten en, zonder enige kennis van programmeren, zelfs Hello World te schrijven. Daarom zie je in elke fase van het project welke theoretische basisvaardigheden je moet leren en, belangrijker nog, waar je deze kunt vinden. De basisprincipes zijn ook te vinden op Hyperskill in de sectie “Kenniskaart” (Knowledge Map). Voor de eerste fase van het project hoeven studenten geen gegevens uit een bestand te lezen, zelfs als ze later niet weten hoe. Ze leren dat later zelf, voor algemene ontwikkeling, of het is nodig in de volgende fase.
Kenniskaart. Hierop is te zien welke onderwerpen je al hebt bestudeerd en hoe ze met elkaar verbonden zijn. Open een willekeurig interessant onderwerp. Je kunt er snel doorheen scrollen, maar we raden aan om ook een paar kleine opdrachten te maken om ervoor te zorgen dat je de informatie hebt opgeslagen. In het begin zal het platform je tests aanbieden, daarna een paar programmeertaken. Als de code compileert en de tests doorstaat, vergelijk dan je oplossing met de referentieoplossing, soms helpt dat om een meer optimale implementatiemethode te leren. Of om er zeker van te zijn dat jouw oplossing ook prima is.
Geen poespas. We verwelkomen zowel ‘groene’ gebruikers als ervaren ontwikkelaars. Als je al programma's hebt geschreven, geen probleem, we gaan je niet dwingen om weer 2+2 op te tellen of een regel om te keren. Om direct op het juiste niveau te komen, geef je bij registratie aan waar je al mee bekend bent en kies je een moeilijker project. Wees niet bang om jezelf te overschatten: als het nodig is, kun je altijd terugkeren naar een vergeten onderwerp in de kenniskaart.
Tools. Het is geweldig om kleine stukjes code te schrijven in een speciaal venster op de website, maar echt programmeren begint met werken in een ontwikkelomgeving (Integrated Development Egevorderde programmeurs weten niet alleen hoe ze code moeten schrijven, maar ook hoe ze een grafische interface kunnen bouwen, verschillende bestanden in een project kunnen samenvoegen, gebruik kunnen maken van extra ontwikkeltools, en een deel van deze processen wordt door de IDE op zich genomen. Waarom zou u deze vaardigheden niet leren terwijl u programmeren beheerst? Hier komt JetBrains in het spel met een speciale versie van IntelliJ IDEA Community Educational, uitgerust met de EduTools-plugin. In deze IDE kunt u cursussen volgen, uw oplossingen controleren en hints voor het project bekijken als u iets vergeten bent. Maak u geen zorgen als u het woord 'plugin' of 'IDE' voor het eerst hoort: we leggen uit wat het is en hoe u het op uw computer of laptop kunt installeren met minimale moeite. Verdiep u in de theorie en ga daarna naar de IDE om een nieuwe fase van het project daar af te ronden.
Deadlines. Die zijn er niet! Wie zijn wij om op je hoofd te tikken en je te vertellen in welk tempo je een programma moet schrijven? Wanneer je graag code schrijft en het tot een einde wilt brengen, schrijf je het af, vandaag of morgen. Geniet van het ontwikkelingsproces.
Fouten. Iedereen maakt ze, dus ook jij zult ze in een van de projectfasen maken, en dan zal deze fase de automatische tests niet doorstaan. Wat nu? Je zult zelf moeten uitzoeken wat er mis ging. We zouden kunnen zeggen waar de fout ligt, maar leert dat je om voorzichtig code te schrijven? Lees de hints van IDEA of het theoretische onderwerp over Bugs, en wanneer het programma eindelijk werkt, zal de dopaminekick waarschijnlijk niet op zich laten wachten.
Duidelijk resultaat. Dus, je hebt je eerste project afgemaakt, wat nu? Geniet van de vruchten van je arbeid! Speel een potje tic-tac-toe met vrienden en laat ze zien wat je bereikt hebt. Upload het project naar GitHub om het aan een toekomstige werkgever te tonen, schrijf zelf een beschrijving en vermeld de kennis die je hebt toegepast. 4-5 complexe projecten en voilà, een bescheiden portfolio voor de beginnende ontwikkelaar is klaar.
Mogelijkheid voor groei. Stel dat je naar Hyperskill kijkt en daar een belangrijk onderwerp of nuttig project mist. Laat het ons weten! Als je achtergrond breder en rijker is dan de kenniskaart, schrijf dan naar ons via het formulier. Ons team deelt graag onze eigen tips en trucs met u, dus we helpen u graag uw kennis om te zetten in nuttige inhoud die begrijpelijk is voor gebruikers van verschillende leeftijden en niveaus. Misschien betalen we zelfs, maar dat is niet zeker.
Welkom: Kom binnen, kijk rond, probeer het uit, stel voor, prijs en bekritiseer. Ook wij leren u te onderwijzen.
Bron: habr.com
