Sådan får du mest muligt ud af en datamatikeruddannelse

De fleste moderne programmører modtog deres uddannelse på universiteter. Med tiden vil det ændre sig, men nu er det sådan, at der stadig kommer godt personale i it-virksomheder fra universiteterne. I dette indlæg fortæller Stanislav Protasov, Acronis Director of University Relations, om sin vision om funktionerne ved universitetsuddannelse for fremtidige programmører. Lærere, studerende og dem, der ansætter dem, kan endda finde nogle nyttige tips under snittet.

Sådan får du mest muligt ud af en datamatikeruddannelse

De sidste 10 år har jeg undervist i matematik, algoritmer, programmeringssprog og maskinlæring på forskellige universiteter. I dag er jeg, udover min stilling hos Acronis, også souschef for afdelingen for teoretisk og anvendt datalogi på MIPT. Fra min erfaring med at arbejde på gode russiske (og ikke kun) universiteter, gjorde jeg nogle observationer om forberedelsen af ​​studerende i computerdiscipliner.

30 sekunders reglen virker ikke længere

Jeg er sikker på, at du er stødt på 30 sekunders reglen, som siger, at en programmør skal forstå formålet med en funktion efter et hurtigt kig på dens kode. Det blev opfundet for længe siden, og siden er der dukket mange styresystemer, sprog, hardware og algoritmer op. Jeg har skrevet kode i 12 år, men relativt for nylig så jeg kildekoden til et produkt, som ved første øjekast virkede som magiske besværgelser for mig. I dag, hvis du ikke er fordybet i emneområdet, så holder 30 sekunders reglen op med at virke. Ellers vil ikke kun 30, men også 300 sekunder ikke være nok til, at du kan finde ud af, hvad der er hvad.

For eksempel, hvis du vil skrive drivere, skal du dykke ned i dette område og læse tusindvis af linjer med specifik kode. Med denne tilgang til at studere et emne udvikler en specialist en "følelse af flow." Som i rap, når følelsen af ​​et godt rim og den rigtige rytme dukker op uden særlig rationalisering. Ligeledes kan en veltrænet programmør nemt genkende ineffektiv eller simpelthen dårlig kode uden at gå ind i en detaljeret undersøgelse af, hvor en stilovertrædelse fandt sted, eller en suboptimal tilgang blev brugt (men denne følelse kan være meget svær at forklare).

Specialisering og voksende kompleksitet fører til, at en bacheloruddannelse ikke længere giver mulighed for at studere alle områder tilstrækkeligt i dybden. Men det er netop på dette uddannelsesniveau, at man skal tilegne sig et udsyn. Bagefter, på kandidatskolen eller på arbejdet, skal du bruge lidt tid på at fordybe dig i problemerne og detaljerne i fagområdet, studere slang, programmeringssprog og kollegaers kode, læse artikler og bøger. Det forekommer mig, at dette er den eneste måde, med hjælp fra universitetet, at "pumpe overliggeren op" for fremtiden T-formede specialister.

Hvilket programmeringssprog er bedst at undervise i på universitetet?

Sådan får du mest muligt ud af en datamatikeruddannelse
Til min glæde har universitetslærere allerede opgivet at søge efter det rigtige svar på spørgsmålet: "Hvad er det bedste sprog at programmere i?" Debatten om, hvad der er bedre - C# eller Java, Delphi eller C++ - er stort set forsvundet. Fremkomsten af ​​mange nye programmeringssprog og akkumuleringen af ​​pædagogisk erfaring har ført til en etableret forståelse i det akademiske miljø: hvert sprog har sin egen niche.

Problemet med at undervise i et eller andet programmeringssprog er ophørt med at være en prioritet. Det er lige meget, hvilket sprog kurset undervises på. Det vigtigste er tilstrækkelig udtryksevne af sproget. Bestil "Kunsten at programmere multiprocessor” er en god illustration af denne observation. I denne nu klassiske udgave er alle eksempler præsenteret i Java - et sprog uden pointer, men med Garbage Collector. Næppe nogen vil hævde, at Java langt fra er det optimale valg til at skrive højtydende parallel kode. Men sproget var velegnet til at forklare de begreber, der præsenteres i bogen. Et andet eksempel - klassisk maskinlæringskursus Andrew Nna, undervist i Matlab i Octave-miljøet. I dag kunne man vælge et andet programmeringssprog, men hvilken forskel gør det egentlig, hvis ideerne og tilgangene er vigtige?

Mere praktisk og tættere på virkeligheden

Samtidig er der i de senere år kommet mange flere praktikere på universiteterne. Hvis tidligere russiske universitetsuddannelser blev aktivt kritiseret for at være skilt fra virkeligheden, kan det samme ikke siges i dag om it-uddannelse. For 10 år siden var der næsten ingen lærere på universiteterne med reel brancheerfaring. I dag, oftere og oftere, undervises klasser på en specialiseret afdeling ikke af fuldtidsansatte datalogilærere, men af ​​praktiserende it-specialister, der kun underviser i 1-2 kurser i deres fritid fra deres hovedarbejde. Denne tilgang retfærdiggør sig selv ud fra et synspunkt om højkvalitets personaleuddannelse, opdatering af kurser og naturligvis søgning efter potentielle medarbejdere i virksomheden. Jeg tror ikke, jeg vil afsløre hemmeligheden ved at sige, at vi støtter en grundlæggende afdeling på MIPT og bygger relationer med andre universiteter, herunder for at forberede studerende, der kunne starte deres karriere på Acronis.

Matematiker eller programmør?

Sådan får du mest muligt ud af en datamatikeruddannelse
Hellige krige, som tidligere kredsede om programmeringssprog, har bevæget sig i en filosofisk retning. Nu skændes de såkaldte "programmører" og "matematikere" med hinanden. I princippet kunne disse skoler adskilles i to uddannelsesprogrammer, men branchen er stadig dårlig til at adskille sådanne finesser, og fra universitet til universitet har vi lignende uddannelser med lidt forskelligt fokus. Det betyder, at både den studerende og den virksomhed, han skal arbejde i, skal supplere videnspuslespillet med de manglende brikker.

Fremkomsten af ​​praktikere på universiteter, der skriver industriel kode på forskellige sprog, giver eleverne bedre udviklingsevner. At være godt bekendt med implementeringer af standardbiblioteker, rammer og programmeringsteknikker, indgyder praktiserende programmører lysten til at skrive god kode, for at gøre det hurtigt og effektivt.

Denne nyttige færdighed fører dog nogle gange til fremkomsten af ​​dem, der kan lide at genopfinde hjulet. Programmeringsstuderende tænker sådan her: "Skal jeg skrive yderligere 200 linjer god kode, som vil løse problemet direkte?"

Lærere, der har modtaget en klassisk matematisk uddannelse (f.eks. fra Det Matematiske Fakultet eller Anvendt Matematik), arbejder ofte i et pseudo-videnskabeligt miljø eller inden for modellering og dataanalyse. "Matematikere" ser problemer inden for datalogi anderledes. De opererer primært ikke med kode, men med algoritmer, teoremer og formelle modeller. En vigtig fordel ved den matematiske tilgang er en klar grundlæggende forståelse af, hvad der kan og ikke kan løses. Og hvordan man løser det.

Derfor taler matematiklærere om programmering med en bias mod teori. Elever, der kommer fra "matematikere", kommer ofte med gennemtænkte og teoretisk overlegne løsninger, men som regel suboptimale fra et sprogligt synspunkt og ofte simpelthen sjusket skrevet. En sådan elev mener, at hans hovedmål er at demonstrere evnen til at løse sådanne problemer i princippet. Men implementeringen kan være dårlig.

Børn, der er opdraget som programmører i skolen eller i deres første år, medbringer en "meget smuk cykel", som dog normalt ikke fungerer særlig effektivt asymptotisk. Tværtimod sætter de sig ikke til opgaven at dybt teoretisere og vende sig til lærebøger på jagt efter optimale løsninger, og foretrækker smuk kode.

På forskellige universiteter ser jeg normalt under elevsamtaler, hvilken "skole" der ligger til grund for hans uddannelse. Og jeg har næsten aldrig mødt en perfekt balance i grunduddannelsen. Som barn kunne man i min by forberede sig til matematik-olympiader, men der var ingen programmeringsklubber. Nu, i klubber, lærer børn at programmere i "fashionable" Go og Python. Derfor er der, selv på optagelsesniveauet til universiteter, forskelle i tilgange. Jeg mener, at det er vigtigt at fastholde begge kompetencer på et universitet, ellers kommer enten en specialist med et utilstrækkeligt teoretisk grundlag, eller en person, der ikke har lært og ikke vil skrive god kode, på arbejde i virksomheden.

Hvordan man "pumper overliggeren op" for fremtiden T-formede specialister?

Sådan får du mest muligt ud af en datamatikeruddannelse
Det er klart, at under sådanne forhold vælger eleven simpelthen det, han bedst kan lide. Læreren formidler simpelthen det synspunkt, der er tættere på ham. Men alle vil have gavn af, hvis koden er skrevet smukt, og ud fra et algoritmesynspunkt er alt klart, rimeligt og effektivt.

  • IT horisonter. En kandidat fra en bachelorgrad i Datalogi er en færdiglavet specialist med et udviklet teknisk udsyn, som nok har valgt sin profil. Men i junioråret ved vi ikke, hvad han eller hun vil gøre. Han kan gå ind i videnskab eller analyse, eller han kan tværtimod skrive en enorm mængde kode hver dag. Derfor skal den studerende få vist alle aspekter af arbejdet på it-området og introduceret til alle værktøjerne. Ideelt set vil lærere fra teoretiske kurser vise en sammenhæng med praksis (og omvendt).
  • Vækstpunkt. Det er i elevens egen interesse ikke at tillade sig selv at gå til yderligheder. Det er ikke svært at forstå, om du er "matematiker" eller "programmør". Det er nok at lytte til den første impuls, når du løser et problem: hvad vil du gøre - kig ind i lærebogen på jagt efter den optimale tilgang eller skriv et par funktioner, der helt sikkert vil være nyttige senere? Baseret på dette kan du bygge en yderligere komplementær bane for din læring.
  • Alternative kilder til viden. Det sker, at programmet er velafbalanceret, men "Systemprogrammering" og "Algorithms" undervises af helt forskellige mennesker, og nogle elever er tættere på den første lærer, og andre - på den anden. Men selvom du ikke kan lide professoren, er dette ikke en grund til at negligere nogle fag til fordel for andre. Bachelorer er selv interesserede i at finde viljen til at arbejde med videnkilder og stoler under ingen omstændigheder på radikale meninger som "matematik er videnskabens dronning, det vigtigste er at kende algoritmerne" eller "god kode kompenserer for alt andet."

Du kan uddybe din viden i teorien ved at henvende dig til specialiseret litteratur og onlinekurser. Du kan forbedre dine færdigheder i programmeringssprog på Coursera, Udacity eller Stepik, hvor mange forskellige kurser præsenteres. Elever begynder også ofte at se hardcore sprogkurser, hvis de føler, at algoritmelæreren kender matematik godt, men ikke kan besvare komplekse implementeringsspørgsmål. Ikke alle vil være enige med mig, men i min praksis har det vist sig godt specialisering i C++ fra Yandex, hvor flere og mere komplekse træk ved sproget sekventielt analyseres. Generelt skal du vælge et kursus med høje vurderinger fra velrenommerede virksomheder eller universiteter.

Bløde værdier

Sådan får du mest muligt ud af en datamatikeruddannelse
Når de kommer fra universitetet til at arbejde i enhver virksomhed, fra en nystartet virksomhed til en stor virksomhed, finder studerende fra selv topuniversiteter sig dårligt tilpasset det virkelige arbejdsmiljø. Faktum er, at universiteter i dag "babysitter" studerende meget. Selv efter at have gået glip af mange timer, ikke forberedt sig til prøver og prøver til tiden, sovet for meget eller kommet for sent til en eksamen, kan alle bestå og tage den igen - og i sidste ende stadig modtage et diplom.

Men i dag er der alle forudsætninger for, at eleverne kan forberedes til voksenlivet og selvstændig erhvervsaktivitet. De skal ikke kun programmere, men også kommunikere. Og dette skal også læres. Universiteter har forskellige formater til at udvikle disse færdigheder, men desværre får de ofte ikke tilstrækkelig opmærksomhed. Vi har dog mange muligheder for at opnå effektive teamwork færdigheder.

  • Skriftlig forretningskommunikation. Desværre har de fleste kandidater, der forlader universitetet, ingen idé om korrespondanceetikette. Det specifikke ved kommunikation i instant messengers er udvekslingen af ​​beskeder nat og dag og brugen af ​​samtalestil og uformelt ordforråd. Det vil dog være muligt at træne skriftlig tale, når den studerende kommunikerer med instituttet og universitetet.

    I praksis står ledere ofte over for behovet for at dekomponere et stort projekt i små opgaver. For at gøre dette skal du tydeligt beskrive hver opgave og dens komponenter, så juniorudviklere forstår, hvad der kræves af dem. En dårligt defineret opgave fører ofte til behovet for at lave noget om, hvorfor erfaring med skriftlig kommunikation hjælper dimittender med at arbejde i distribuerede teams.

  • Skriftlig præsentation af resultaterne af dit arbejde. For at præsentere deres uddannelsesprojekter kan seniorstuderende skrive indlæg om Habr, videnskabelige artikler og også bare rapporter. Det er der mange muligheder for - kursusarbejdet begynder på andet år på nogle universiteter. Du kan også bruge essays som en form for kontrol – de er som regel tættere på en journalistisk artikel. Denne tilgang er allerede blevet implementeret på National Research University Higher School of Economics.

    Hvis en virksomhed praktiserer en fleksibel tilgang til udvikling, skal den præsentere resultaterne af sit arbejde i mindre portioner, men oftere. For at gøre dette er det vigtigt at være i stand til kort at formidle resultaterne af arbejdet fra en specialist eller hele teamet. Også mange virksomheder i dag udfører "gennemgange" - årlige eller halvårlige. Medarbejderne diskuterer resultater og arbejdsudsigter. Succesfuld gennemgang er hovedårsagen til karrierevækst, bonusser, for eksempel i Microsoft, Acronis eller Yandex. Ja, du kan godt programmere, men "sidder i hjørnet" vil selv en sej specialist altid tabe til en, der forstår at præsentere sin succes godt.

  • Akademisk skrivning. Akademisk skrivning fortjener særlig omtale. Det er nyttigt for eleverne at blive fortrolige med reglerne for at skrive videnskabelige tekster, bruge argumenter, søge information i forskellige kilder og formatere referencer til disse kilder. Det er tilrådeligt at gøre dette på engelsk, da der er mange flere gode tekster i det internationale akademiske samfund, og for forskellige discipliner er der allerede etablerede skabeloner til præsentation af videnskabelige resultater. Der er selvfølgelig også brug for akademiske skrivefærdigheder, når man udarbejder russisksprogede publikationer, men der er meget færre eksempler på gode moderne artikler på engelsk. Disse færdigheder kan erhverves gennem et passende kursus, som nu indgår i mange uddannelsesprogrammer.
  • Ledelse af møder. De fleste studerende ved ikke, hvordan de skal forberede sig til møder, tage referater og behandle data. Men hvis vi udvikler denne færdighed på college, for eksempel ved at deltage i teamprojekter, kan vi undgå at spilde tid på arbejdspladsen. Dette kræver supervision af studerendes projektarbejde for at lære dem, hvordan de effektivt kan gennemføre møder. Det koster i praksis hver enkelt virksomhed mange penge – hvis flere personer, der modtager en stor løn, bruger en times arbejdstid på et stævne, vil man jo gerne have et tilsvarende afkast på det.
  • Taler offentligt. Mange studerende står over for behovet for kun at tale offentligt, mens de forsvarer deres speciale. Og ikke alle er klar til dette. Jeg har set mange elever, der:
    • stå med ryggen til publikum,
    • svajende, forsøger at introducere kommissionen til trancen,
    • knække kuglepenne, blyanter og pegepinde,
    • gå i cirkler
    • se på gulvet.

    Dette er normalt, når en person optræder for første gang. Men du skal begynde at arbejde med denne stress tidligere - ved at forsvare dine kurser i en venlig atmosfære blandt dine klassekammerater.

    Derudover er standardpraksis i virksomheder at give en medarbejder mulighed for at foreslå en idé og modtage finansiering, en stilling eller et dedikeret projekt til den. Men hvis du tænker over det, er dette den samme beskyttelse af kurser, bare på et højere niveau. Hvorfor ikke øve sådanne nyttige karrierefærdigheder, mens du studerer?

Hvad gik jeg glip af?

En af grundene til at skrive dette indlæg var artiklen, offentliggjort på Tyumen State Universitys hjemmeside. Artiklens forfatter fokuserer kun på manglerne ved russiske studerende, som udenlandske lærere har bemærket. Udøvelsen af ​​min undervisning på forskellige universiteter tyder på, at russisk skole og videregående uddannelse giver et godt grundlag. Russiske studerende er kyndige i matematik og algoritmer, og det er lettere at opbygge professionel kommunikation med dem.

I tilfælde af udenlandske studerende, tværtimod, kan forventningerne til en russisk lærer nogle gange være for høje. For eksempel på niveau med grundlæggende uddannelse i form af matematik ligner de indiske elever, jeg mødte, russiske. Men nogle gange mangler de specialiseret viden, når de dimitterer fra deres bachelorstudier. Gode ​​europæiske elever har sandsynligvis en mindre stærk matematikbaggrund på skoleniveau.

Og hvis du studerer eller arbejder på et universitet, kan du nu arbejde med kommunikationsevner (dine egne eller dine studerendes), udvide din grundlæggende base og øve dig i programmering. Til dette formål giver det russiske uddannelsessystem alle muligheder - du skal bare bruge dem korrekt.

Jeg vil blive glad, hvis du i kommentarerne til indlægget deler dine links til kurser og metoder, der hjælper med at udligne balancen i uddannelse, samt andre måder at forbedre bløde færdigheder på, mens du studerer på et universitet.

Kilde: www.habr.com

Tilføj en kommentar