Hvordan få mest mulig ut av en informatikkutdanning

De fleste moderne programmerere fikk sin utdannelse ved universiteter. Over tid vil dette endre seg, men nå er det slik at det fortsatt kommer godt personell i IT-bedrifter fra universitetene. I dette innlegget snakker Stanislav Protasov, Acronis Director of University Relations, om sin visjon om funksjonene til universitetstrening for fremtidige programmerere. Lærere, studenter og de som ansetter dem kan til og med finne noen nyttige tips under kuttet.

Hvordan få mest mulig ut av en informatikkutdanning

De siste 10 årene har jeg undervist i matematikk, algoritmer, programmeringsspråk og maskinlæring ved ulike universiteter. I dag er jeg, i tillegg til min stilling i Acronis, også nestleder for avdelingen for teoretisk og anvendt informatikk ved MIPT. Fra min erfaring med å jobbe på gode russiske (og ikke bare) universiteter, gjorde jeg noen observasjoner om forberedelsene til studenter i datadisipliner.

30 sekunders regelen fungerer ikke lenger

Jeg er sikker på at du har kommet over 30 sekunders regelen, som sier at en programmerer skal forstå formålet med en funksjon etter en rask titt på koden. Det ble oppfunnet for lenge siden, og siden den gang har det dukket opp mange operativsystemer, språk, maskinvare og algoritmer. Jeg har skrevet kode i 12 år, men relativt nylig så jeg kildekoden for ett produkt, som ved første øyekast virket som magiske trollformler for meg. I dag, hvis du ikke er fordypet i fagområdet, slutter 30 sekunders regelen å fungere. Ellers vil ikke bare 30, men også 300 sekunder være nok for deg til å finne ut hva som er hva.

For eksempel, hvis du vil skrive drivere, må du dykke inn i dette området og lese tusenvis av linjer med spesifikk kode. Med denne tilnærmingen til å studere et emne, utvikler en spesialist en "følelse av flyt." Som i rap, når følelsen av et godt rim og riktig rytme dukker opp uten spesiell rasjonalisering. På samme måte kan en godt trent programmerer lett gjenkjenne ineffektiv eller rett og slett dårlig kode uten å gå inn i en detaljert studie av hvor et stilbrudd skjedde eller en suboptimal tilnærming ble brukt (men denne følelsen kan være svært vanskelig å forklare).

Spesialisering og økende kompleksitet fører til at en bachelorutdanning ikke lenger gir mulighet til å studere alle områder i tilstrekkelig dybde. Men det er nettopp på dette utdanningsnivået man trenger å tilegne seg et syn. Etterpå, på forskerskolen eller på jobben, må du bruke litt tid på å fordype deg i problemene og spesifikasjonene til fagområdet, studere slang, programmeringsspråk og koder for kolleger, lese artikler og bøker. Det virker for meg at dette er den eneste måten, med hjelp fra universitetet, å "pumpe opp tverrstangen" for fremtiden T-formede spesialister.

Hvilket programmeringsspråk er best å lære på universitetet?

Hvordan få mest mulig ut av en informatikkutdanning
Til min glede har universitetslærere allerede gitt opp å søke etter det riktige svaret på spørsmålet: "Hva er det beste språket å programmere på?" Debatten om hva som er best - C# eller Java, Delphi eller C++ - har så å si forsvunnet. Fremveksten av mange nye programmeringsspråk og akkumulering av pedagogisk erfaring har ført til en etablert forståelse i det akademiske miljøet: hvert språk har sin egen nisje.

Problemet med å undervise ved hjelp av et eller annet programmeringsspråk har sluttet å være en prioritet. Det spiller ingen rolle hvilket språk kurset undervises på. Det viktigste er tilstrekkelig uttrykksevne av språket. bok"Kunsten å programmere med flere prosessorer” er en god illustrasjon på denne observasjonen. I denne nå klassiske utgaven er alle eksempler presentert i Java – et språk uten pekere, men med Garbage Collector. Knapt noen vil hevde at Java er langt fra det optimale valget for å skrive høyytelses parallell kode. Men språket var egnet til å forklare begrepene som presenteres i boken. Et annet eksempel - klassisk maskinlæringskurs Andrew Nna, underviste i Matlab i Octave-miljøet. I dag kan du velge et annet programmeringsspråk, men hvilken forskjell gjør det egentlig om ideene og tilnærmingene er viktige?

Mer praktisk og nærmere virkeligheten

Samtidig har det de siste årene blitt mange flere praktikere ved universitetene. Hvis tidligere russiske universitetsprogrammer ble aktivt kritisert for å være skilt fra virkeligheten, kan man i dag ikke si det samme om IT-utdanning. For 10 år siden var det nesten ingen lærere ved universitetene med ekte bransjeerfaring. I dag, oftere og oftere, undervises ikke klasser ved en spesialisert avdeling av heltidslærere i informatikk, men av praktiserende IT-spesialister som bare underviser 1-2 kurs på fritiden fra hovedarbeidet. Denne tilnærmingen rettferdiggjør seg ut fra et synspunkt av høy kvalitet på personellopplæring, oppdatering av kurs og selvfølgelig søk etter potensielle ansatte i selskapet. Jeg tror ikke jeg vil avsløre hemmeligheten ved å si at vi støtter en grunnleggende avdeling ved MIPT og bygger relasjoner med andre universiteter, inkludert for å forberede studenter som kan starte karrieren ved Acronis.

Matematiker eller programmerer?

Hvordan få mest mulig ut av en informatikkutdanning
Hellige kriger, som tidligere dreide seg om programmeringsspråk, har beveget seg inn i en filosofisk retning. Nå krangler de såkalte "programmererne" og "matematikerne" med hverandre. I prinsippet kunne disse skolene deles i to utdanningsprogrammer, men bransjen er fortsatt dårlig til å skille slike finesser, og fra universitet til universitet har vi tilsvarende utdanning med litt forskjellig fokus. Det betyr at både studenten og bedriften han skal fortsette å jobbe i, må supplere kunnskapspuslespillet med de manglende brikkene.

Fremveksten av utøvere ved universiteter som skriver industriell kode på forskjellige språk gir studentene bedre utviklingsferdigheter. Å være godt kjent med implementeringer av standard biblioteker, rammeverk og programmeringsteknikker, praktiserende programmerere gir studentene et ønske om å skrive god kode, å gjøre det raskt og effektivt.

Denne nyttige ferdigheten fører imidlertid noen ganger til fremveksten av de som liker å finne opp hjulet på nytt. Programmeringsstudenter tenker slik: "Skal jeg skrive ytterligere 200 linjer med god kode som vil løse problemet direkte?"

Lærere som har fått en klassisk matematisk utdanning (for eksempel fra Det matematiske fakultet eller anvendt matematikk) jobber ofte i et pseudovitenskapelig miljø, eller innen modellering og dataanalyse. "Matematikere" ser problemer innen datavitenskap annerledes. De opererer først og fremst ikke med kode, men med algoritmer, teoremer og formelle modeller. En viktig fordel med den matematiske tilnærmingen er en klar grunnleggende forståelse av hva som kan og ikke kan løses. Og hvordan løse det.

Følgelig snakker matematikklærere om programmering med en skjevhet mot teori. Elever som kommer fra «matematikere» kommer ofte med gjennomtenkte og teoretisk overlegne løsninger, men som regel suboptimale fra et språklig synspunkt og ofte rett og slett slurvete skrevet. En slik elev mener at hans hovedmål er å demonstrere evne til å løse slike problemer prinsipielt. Men implementeringen kan være dårlig.

Barn som er oppvokst som programmerere på skolen eller i de første årene har med seg en "veldig vakker sykkel", som imidlertid vanligvis ikke fungerer veldig effektivt asymptotisk. Tvert imot setter de seg ikke i oppgave å dypt teoretisere og vende seg til lærebøker på jakt etter optimale løsninger, og foretrekker vakker kode.

Ved forskjellige universiteter, under studentintervjuer, ser jeg vanligvis hvilken "skole" som ligger til grunn for utdannelsen hans. Og jeg har nesten aldri møtt en perfekt balanse i grunnopplæringen. Som barn kunne man i min by forberede seg til matte-olympiader, men det fantes ingen programmeringsklubber. Nå, i klubber, lærer barn å programmere i "fasjonable" Go og Python. Derfor, selv på opptaksnivået til universiteter, er det forskjeller i tilnærminger. Jeg mener det er viktig å opprettholde begge ferdighetene ved et universitet, ellers kommer enten en spesialist med utilstrekkelig teoretisk grunnlag, eller en person som ikke har lært og ikke vil skrive god kode, på jobb i bedriften.

Hvordan "pumpe opp tverrstangen" for fremtiden T-formede spesialister?

Hvordan få mest mulig ut av en informatikkutdanning
Det er klart at under slike forhold velger eleven rett og slett det han liker best. Læreren formidler rett og slett synspunktet som er nærmere ham. Men alle vil ha nytte av at koden er skrevet vakkert, og fra et algoritmesynspunkt er alt klart, rimelig og effektivt.

  • IT-horisonter. En utdannet bachelorgrad i informatikk er en ferdig spesialist med et utviklet teknisk syn, som sannsynligvis har valgt sin profil. Men i ungdomsåret vet vi ikke hva han eller hun skal gjøre. Han kan gå inn i vitenskap eller analyse, eller tvert imot, han kan skrive en enorm mengde kode hver dag. Derfor må studenten få vist alle aspekter ved arbeid i IT-feltet og introdusert til alle verktøyene. Ideelt sett vil lærere fra teoretiske kurs vise en sammenheng med praksis (og omvendt).
  • Vekstpunkt. Det er i elevens interesse å ikke la seg gå til ytterligheter. Å forstå om du er en "matematiker" eller en "programmerer" er ikke vanskelig. Det er nok å lytte til den første impulsen når du løser et problem: hva vil du gjøre - se inn i læreboken på jakt etter den optimale tilnærmingen eller skriv et par funksjoner som definitivt vil være nyttige senere? Basert på dette kan du bygge en ytterligere komplementær bane for læringen din.
  • Alternative kunnskapskilder. Det hender at programmet er godt balansert, men "Systemprogrammering" og "Algorithms" blir undervist av helt andre mennesker, og noen elever er nærmere den første læreren, og andre - den andre. Men selv om du ikke liker professoren, er ikke dette en grunn til å forsømme noen fag til fordel for andre. Bachelorer er selv interessert i å finne viljen til å jobbe med kunnskapskilder og stoler ikke i noe tilfelle på radikale meninger som "matematikk er vitenskapens dronning, det viktigste er å kjenne til algoritmene" eller "god kode kompenserer for alt annet."

Du kan utdype kunnskapen din i teorien ved å henvende deg til spesialisert litteratur og nettkurs. Du kan forbedre ferdighetene dine i programmeringsspråk på Coursera, Udacity eller Stepik, hvor mange forskjellige kurs presenteres. Studenter begynner ofte å se hardcore språkkurs hvis de føler at algoritmelæreren kan matematikk godt, men ikke kan svare på komplekse implementeringsspørsmål. Ikke alle vil være enige med meg, men i min praksis har det vist seg godt spesialisering i C++ fra Yandex, der flere og mer komplekse trekk ved språket blir sekvensielt analysert. Generelt, velg et kurs med høy rangering fra anerkjente selskaper eller universiteter.

Myke ferdigheter

Hvordan få mest mulig ut av en informatikkutdanning
Når de kommer fra universitetet til å jobbe i ethvert selskap, fra en oppstart til et stort selskap, finner studenter fra til og med toppuniversiteter seg dårlig tilpasset det virkelige arbeidsmiljøet. Faktum er at universiteter i dag "barnevakter" studenter mye. Selv etter å ha gått glipp av mange timer, ikke forberedt seg til prøver og prøver i tide, forsov eller kommet for sent til en eksamen, kan alle bestå og ta den på nytt - og til slutt fortsatt få et vitnemål.

Men i dag er det alle forutsetninger for at studentene kan være forberedt på voksenlivet og selvstendig yrkesaktivitet. De må ikke bare programmere, men også kommunisere. Og dette må også læres. Universiteter har ulike formater for å utvikle disse ferdighetene, men dessverre blir de ofte ikke gitt nok oppmerksomhet. Imidlertid har vi mange muligheter til å få effektive teamarbeidsferdigheter.

  • Skriftlig forretningskommunikasjon. Dessverre har de fleste nyutdannede som forlater universitetet ingen anelse om korrespondanseetikette. Det spesifikke ved kommunikasjon i instant messengers er utveksling av meldinger natt og dag og bruken av samtalestil og uformelt ordforråd. Det vil imidlertid være mulig å trene skriftlig tale når studenten kommuniserer med instituttet og universitetet.

    I praksis står ledere ofte overfor behovet for å dekomponere et stort prosjekt i små oppgaver. For å gjøre dette må du tydelig beskrive hver oppgave og dens komponenter slik at juniorutviklere forstår hva som kreves av dem. En dårlig definert oppgave fører ofte til behov for å gjøre om noe, og det er grunnen til at erfaring med skriftlig kommunikasjon hjelper nyutdannede med å jobbe i distribuerte team.

  • Skriftlig presentasjon av resultatene av arbeidet ditt. For å presentere utdanningsprosjektene sine kan seniorstudenter skrive innlegg om Habr, vitenskapelige artikler og også bare rapporter. Det er mange muligheter for dette - kursarbeidet begynner på andre året ved noen universiteter. Du kan også bruke essays som en form for kontroll – de er som regel nærmere en journalistisk artikkel. Denne tilnærmingen er allerede implementert ved National Research University Higher School of Economics.

    Hvis en bedrift praktiserer en fleksibel tilnærming til utvikling, må den presentere resultatene av sitt arbeid i mindre porsjoner, men oftere. For å gjøre dette er det viktig å kort kunne formidle resultatene av arbeidet til en spesialist eller hele teamet. I tillegg utfører mange selskaper i dag "gjennomganger" - årlige eller halvårlige. Ansatte diskuterer resultater og arbeidsutsikter. Vellykket gjennomgang er hovedårsaken til karrierevekst, bonuser, for eksempel i Microsoft, Acronis eller Yandex. Ja, du kan programmere godt, men "sitter i hjørnet" vil selv en kul spesialist alltid tape mot noen som vet hvordan han skal presentere suksessen sin godt.

  • Akademisk skriving. Akademisk skriving fortjener spesiell omtale. Det er nyttig for elevene å bli kjent med reglene for å skrive vitenskapelige tekster, bruke argumenter, søke etter informasjon i ulike kilder og formatere referanser til disse kildene. Det er lurt å gjøre dette på engelsk, siden det finnes mange flere gode tekster i det internasjonale fagmiljøet, og for ulike disipliner er det allerede etablerte maler for å presentere vitenskapelige resultater. Det trengs selvfølgelig også akademiske skriveferdigheter når man utarbeider russiskspråklige publikasjoner, men det er mye færre eksempler på gode moderne artikler på engelsk. Disse ferdighetene kan tilegnes gjennom et passende kurs, som nå er inkludert i mange utdanningsprogrammer.
  • Lede møter. De fleste studenter vet ikke hvordan de skal forberede seg til møter, ta referater og behandle data. Men hvis vi utvikler denne ferdigheten på college, for eksempel ved å delta i teamprosjekter, kan vi unngå å kaste bort tid på arbeidsplassen. Dette krever veiledning av studentenes prosjektarbeid for å lære dem hvordan de effektivt kan gjennomføre møter. I praksis koster dette hvert enkelt selskap mye penger – tross alt, hvis flere som mottar høy lønn bruker en times arbeidstid på et rally, vil du at det skal være tilsvarende avkastning på det.
  • Foredragsholder. Mange studenter står overfor behovet for å snakke offentlig bare mens de forsvarer oppgaven. Og ikke alle er klare for dette. Jeg har sett mange studenter som:
    • stå med ryggen til publikum,
    • svaiende, prøver å introdusere kommisjonen til transen,
    • knuse penner, blyanter og pekere,
    • går i sirkler
    • se på gulvet.

    Dette er normalt når en person opptrer for første gang. Men du må begynne å jobbe med dette stresset tidligere - ved å forsvare kursene dine i en vennlig atmosfære, blant klassekameratene dine.

    I tillegg er standard praksis i selskaper å gi en ansatt muligheten til å foreslå en idé og motta finansiering, en stilling eller et dedikert prosjekt for den. Men hvis du tenker på det, er dette den samme beskyttelsen av kurs, bare på et høyere nivå. Hvorfor ikke øve på slike nyttige karriereferdigheter mens du studerer?

Hva gikk jeg glipp av?

En av grunnene til å skrive dette innlegget var artikkelen, publisert på Tyumen State Universitys nettsted. Forfatteren av artikkelen fokuserer bare på manglene til russiske studenter som utenlandske lærere legger merke til. Utøvelsen av min undervisning ved ulike universiteter tyder på at russisk skole og høyere utdanning gir et godt grunnlag. Russiske elever er kunnskapsrike i matematikk og algoritmer, og det er lettere å bygge profesjonell kommunikasjon med dem.

Når det gjelder utenlandske studenter, tvert imot, kan forventningene til en russisk lærer noen ganger være for høye. For eksempel, på nivå med grunnleggende opplæring i form av matematikk, ligner de indiske elevene jeg møtte på russiske. Imidlertid mangler de noen ganger spesialistkunnskap når de uteksamineres fra bachelorstudiene. Gode ​​europeiske elever har sannsynligvis mindre sterk matematikkbakgrunn på skolenivå.

Og hvis du studerer eller jobber ved et universitet, kan du nå jobbe med kommunikasjonsferdigheter (din egen eller studentenes), utvide din grunnleggende base og trene på programmering. For dette formålet gir det russiske utdanningssystemet alle mulighetene - du trenger bare å bruke dem riktig.

Jeg vil bli glad hvis du i kommentarene til innlegget deler lenkene dine til kurs og metoder som bidrar til å utjevne balansen i utdanning, samt andre måter å forbedre myke ferdigheter mens du studerer ved et universitet.

Kilde: www.habr.com

Legg til en kommentar