Eg vil snakka med deg om kvifor vi oftare reparerer rørleggerarbeid enn å skrive avhandlingar om det, om ulike tilnærmingar til å lære programmering og om korleis vi prøver å bruke ein av dei i vårt nye produkt, Hyperskill.
Om du ikkje likar lange innleiingar, kan du gå rett til avsnittet om programmering. Men så blir det mindre moro.
Lyrisk digression
La oss tenke oss ei jente som heiter Masha. I dag hadde Masha tenkt å vaske frukt og sjå på ein film, men så viser det seg: vasken på kjøkkenet er tett. Kva skal ho gjere med det — det veit ho ikkje. Ho kan utsetje dette spørsmålet på ubestemt tid, men ho har tid no, så Masha bestemmer seg for å ta tak i problemet med ein gong. Sunn fornuft gir to alternativ: a) kalle ein rørleggar b) klare seg sjølv. Jenta vel den andre varianten og byrjar å studere instruksjonar på YouTube. Etter råd frå brukaren Vasya_the_plumber kikkar Masha under vasken og ser ei bølgande plastpippe med fleire delar. Ho skrur forsiktig av ein del ved bunnen av vasken og finn ingenting. Ein bit av røret lenger nede er tett med ei ukjend substans, og til og med gaffelen ho fann på bordet klarar ikkje å fjerne tettninga. Ekspertar frå internett gir dystre prognosar: delen må byttast. På kartet finn Masha nærmaste butikk, tar med seg den uheldige røret og kjøper ein liknande, berre ny. Etter råd frå seljar tar Masha med seg eit nytt siler, for førebygging. Oppdraget er fullført: vasken fungerer igjen som den skal, og hovudpersonen har au lært følgjande:
- Røyr under vasken kan du skrue av og på sjølv;
- Den nærmaste rørleggerbutikken ligg ein og ein halv kilometer frå leiligheita til Masha.
Sannsynlegvis la ikkje Masha merke til kor mykje nytt ho lærte og kva ho fekk med seg, fordi ho var opptatt av eigen komfort i framtida, samt filmvising og eit reint eple. Neste gang, når eit liknande problem oppstår, vil jenta løyse det mykje raskare. Faktisk, Masha gjorde ikkje berre verda normal igjen; ho lærte induktivt, altså ut frå konkrete tilfelle, og praksisorientert, det vil seie ved å gjere ting, ikkje ved å studere dei grundig på forhånd.
Alt kunne ha vært annerledes. La oss si at Masha sitter i stolen om kvelden og plutselig innser at hun verken moralsk eller fysisk er klar for en blokkering i vasken. Hun melder seg raskt inn på en rørleggerakademi, studerer typer vasker, rør og mulige forbindelser, klassifisering av rørleggerproblemer og mulige løsninger. Masha sover ikke om natten, hun lærer seg termer og navn. Kanskje hun til og med skriver en doktorgradsavhandling om teoretisk rørleggerfag, der hun diskuterer gummipakninger. Til slutt, etter å ha oppnådd sertifikatet, ser Masha stolt på kjøkkenet i full visshet om at selv ett lite problem med vasken nå kan løses med et fingerklikk. I et slikt scenario har jenta lært deduktivt, som beveger seg fra det generelle til det spesifikke, og har i stedet fokusert på teorien.
Så hvilket av tilnærmingene passer best? Når det gjelder vasken og blokkeringen — den første, og her er grunnene:
- Hvis alt som betyr noe, er en fungerende vask, er det nok å vite om akkurat dette området. Når Masha innser at hun mangler kunnskaper, vil hun helt klart finne en måte å lære mer på.
- Encyclopedisk kunnskap kan være lite nyttig i en reell situasjon, fordi vanen ikke er innarbeidet. For å lære en rekkefølge av handlinger, gir det mening å ikke bare lese om dem, men å utføre dem.
La oss nå la stakkars Masha være i fred og gå videre til læringsprosessen som sådan.
Programmering: skal man lære eller gjøre?
Vi har en tendens til å tro at for å utvikle oss og bli eksperter i et ukjent felt, er det først og fremst nødvendig å begynne på universitet eller i det minste melde seg på kurs. Vi lytter lydig til det som blir fortalt, utfører oppgaver. Når vi så får det ettertraktede vitnemålet eller sertifikatet, blir vi straks usikre fordi vi ennå ikke har forstått hvorfor vi trenger så mye informasjon og hvordan vi konkret kan bruke den. Dette er ikke et problem hvis man har planer om å skrive vitenskapelige arbeider og delta på konferanser med dem. I motsatt fall bør man også strebe etter ferdigheter, det vil si å gjøre og gjøre konkrete ting om igjen, prøve og feile, slik at man husker godt hvordan man ikke skal handle.
Eit av dei områda der ei 'velforma hand' eller 'vitskapleg auge' går hand i hand med breidda i perspektiv — programmering. Om du snakkar med erfarne utviklarar, vil du høyre modige historier der ein har jobba med matematikk/fysikk/undervising frå ung alder, for så å bli lei og gå over til backend. Det vil også finnast programmerarar utan høgare utdanning! Først og fremst er det ikkje sertifikat eller diplom som blir verdsett hos ein utviklar, men mengda og kvaliteten på skrivne program, skript og nettsider.
«Men vent!», vil du protestere, «Det høyrest bra ut — berre gjør det! Eg kan ikkje berre skrive eit program til meg sjølv, om eg ikkje har programmert før! Det er viktig for meg å forstå kor eg skal skrive, og korleis eg eigentleg snakkar med kompilatoren på programmeringsspråket. Det er ikkje som å finne telefonnummeret til ein rørleggar på Google.»
Det er ein bitter sannhet i dette. Ein ukjent aspekt drar med seg ein annan, som igjen drar med seg den tredje, og snart blir prosessen som ein tryllekunstnar som held fram med å dra ut knytte lommetørkler utan å kunne ta dei ut av hattera. Prosessen, må eg seie, er ubehageleg, ved den 5. 'lommetørkle' verkar det som om djupna av uvitenheit nærmar seg den Marianerkrapa. Alternativet til dette er dei same forelesingane om 10 typar variablar, 3 typar løkker og 150 potensielt nyttige bibliotek. Tragisk.
Hyperskill: vi bygde, bygde og til slutt bygde vi
Vi tenkte lenge på dette problemet. Kor lenge vi tenkte, viser tydelig datoen for det siste innlegget på bloggen vår. Etter alle diskusjonar og forsøk på å integrere ei ny tilnærming på Stepik, endte vi opp med… ei annan nettside. Kanskje du alt har høyrt om det som ein del av JetBrains Academy. Vi kalla det Hyperskill, integrerte prosjektbasert læring, samanbandt det med kunnskapsbasen om Java og fekk støtte frå EduTools-teamet. Og no, meir om dette.
Ein spesifikk målsetning. Vi tilbyr ei ‘meny’ av prosjekt (projects), dvs. program som du kan skrive med vår hjelp. Blant dei er kryss og nuller, personlig assistent, blokkjedeteknologi, søkemotor, osv. Prosjekta består av 5-6 stadier (stages); resultatet av kvart stadium er eit ferdig program. «Kva er då poenget med dei andre stadiuma, om det alt fungerte på det første?». Takk for spørsmålet. Med kvart steg blir programmet meir funksjonelt eller raskare. I byrjinga tar koden 10 linjer, til slutt kan det bli for mykje for 500.
Litt teori. Det er umulig å sette seg ned og, uten å vite et ord om programmering, skrive til og med Hello World. Derfor ser du på hvert trinn i prosjektet hvilke teoretiske grunnleggende prinsipper du må lære og, viktigst av alt, hvor du kan finne dem. Grunnleggende prinsipper finnes også på Hyperskill i seksjonen "Kunnskapskart" (Knowledge Map). For den første fasen av prosjektet trenger ikke studentene å lese data fra en fil, selv om de ikke kan det videre. De vil lære det selv senere, for generell utvikling, eller det vil være nyttig i neste fase.
Kunnskapskart. På den kan du se hvilke emner du allerede har studert og hvordan de henger sammen. Åpne et hvilket som helst interessant emne. Du kan skanne det raskt, men vi anbefaler å løse et par små oppgaver for å sørge for at informasjonen har festet seg. I begynnelsen vil plattformen gi deg tester, etter dem - et par programmeringsoppgaver. Hvis koden kompilert og bestod testene, sammenlign den med referanseløsningen (reference solution), noen ganger kan det hjelpe deg å finne en mer optimal implementeringsmetode. Eller bekrefte at din løsning er bra som den er.
Ingenting overflødig. Vi venter både på "grønne" brukere og erfarne utviklere. Hvis du allerede har skrevet programmer, er det ikke noe problem, vi vil ikke tvinge deg til å legge 2+2 eller snu en linje. For å komme rett til ønsket nivå, oppgi hva du allerede er kjent med når du registrerer deg, og velg et mer utfordrende prosjekt. Ikke vær redd for å overvurdere deg selv: hvis noe, kan du alltid gå tilbake til det glemte emnet i kunnskapskartet.
Verktøy. Det er flott å skrive små kodesegmenter i et spesielt vindu på nettstedet, men riktig programmering begynner med å jobbe i et utviklingsmiljø (Integrert Development Emiljø). Erfarne programmerere vet ikke bare hvordan de skriver kode, men også hvordan de konstruerer grafiske grensesnitt, samler ulike filer i prosjekter, bruker ekstra utviklingsverktøy, og mye av dette tar IDE'en seg av. Hvorfor ikke lære disse ferdighetene mens du mestrer programmering? Her kommer JetBrains til unnsetning med en spesialversjon av IntelliJ IDEA Community Educational, som har EduTools-plugin forhåndsinstallert. I en slik IDE kan du ta kurs, sjekke løste oppgaver og titte på hint i prosjektet hvis du glemmer noe. Ikke bekymre deg hvis du hører ordet "plugin" eller "IDE" for første gang: vi vil forklare hva det er og hvordan du installerer det på PC-en eller laptop-en med minimal stress. Fokuser på teorien, og gå deretter til IDE for å fullføre den neste fasen av prosjektet der.
Frister. De finnes ikke! Hvem er vi til å dømme og peke på hvordan tempoet ditt skal være når du skriver programvare? Når du liker å skrive kode og ønsker å fullføre det, så skriver du det, i dag eller i morgen. Nyt utviklingen.
Mistakes. Alle gjør feil, så gjør du det på ett av trinnene i prosjektet, og da vil ikke det trinnet bestå automatiske tester. Vel, du må finne ut av hva som gikk galt selv. Vi kunne sagt deg hvor feilen er, men vil det virkelig lære deg å kode nøye? Les hintene fra IDEA eller det teoretiske emnet om Bugs, og når programmet endelig fungerer, vil dopaminrushet sannsynligvis ikke la vente på seg.
Synlig resultat. Så, du har skrevet ferdig ditt første prosjekt, hva nå? Nyt fruktene av arbeidet ditt! Spill kryss og tvers med vennene dine, og skryt samtidig av suksessen. Last opp prosjektet til GitHub for å vise det til fremtidige arbeidsgivere, skriv en beskrivelse selv, og inkluder de kunnskapene du brukte. 4-5 komplekse prosjekter, og voila, et beskjedent portefølje for en ny utvikler er klart.
Muligheter for vekst. Anta at du ser på Hyperskill og ikke finner et viktig tema eller nyttig prosjekt der. Gi oss beskjed! Hvis bakgrunnen din er bredere og rikere enn kunnskapskartet, så skriv til oss gjennom skjemaet. . Teamet vårt vil dele sine egne tips&tricks, så vi ser frem til å hjelpe deg med å omforme kunnskapene dine til nyttig innhold som er forståelig for brukere i alle aldre og nivåer. Kanskje vi til og med betaler deg, men det er ikke sikkert.
Velkommen: Kom inn, se, prøv, foreslå, ros og kritiser. Vi lærer også å lære deg.
Kilde: habr.com
