Kako maksimalno iskoristiti obrazovanje iz informatike

Većina modernih programera školovala se na univerzitetima. Vremenom će se to promijeniti, ali sada stvari stoje tako da u IT kompanije i dalje dolaze dobri kadrovi sa fakulteta. U ovom postu Stanislav Protasov, Acronis direktor za odnose sa univerzitetima, govori o svojoj viziji karakteristika univerzitetske obuke za buduće programere. Nastavnici, učenici i oni koji ih angažuju možda će čak naći neke korisne savjete ispod reza.

Kako maksimalno iskoristiti obrazovanje iz informatike

Zadnjih 10 godina predajem matematiku, algoritme, programske jezike i mašinsko učenje na raznim univerzitetima. Danas sam, pored moje pozicije u Acronisu, i zamjenik šefa katedre za teorijske i primijenjene računarske nauke na MIPT-u. Iz svog iskustva rada na dobrim ruskim (i ne samo) univerzitetima, iznio sam neka zapažanja o pripremi studenata za kompjuterske discipline.

Pravilo 30 sekundi više ne funkcionira

Siguran sam da ste naišli na pravilo 30 sekundi, koje kaže da programer treba da shvati svrhu funkcije nakon brzog pogleda na njen kod. Izumljen je davno, i od tada su se pojavili mnogi operativni sistemi, jezici, hardver i algoritmi. Pisao sam kod 12 godina, ali relativno nedavno sam vidio izvorni kod za jedan proizvod, koji mi je na prvi pogled djelovao kao magija. Danas, ako niste uronjeni u predmetnu oblast, onda pravilo 30 sekundi prestaje da funkcioniše. Inače, ne samo 30, već ni 300 sekundi neće vam biti dovoljno da shvatite šta je šta.

Na primjer, ako želite da pišete drajvere, moraćete da zaronite u ovo područje i pročitate hiljade redova specifičnog koda. Ovakvim pristupom proučavanju predmeta, specijalista razvija „osjećaj protoka“. Kao u repu, kada se bez posebne racionalizacije javlja osjećaj dobre rime i pravog ritma. Isto tako, dobro obučeni programer može lako prepoznati neefikasan ili jednostavno loš kod bez upuštanja u detaljnu studiju o tome gdje je došlo do kršenja stila ili je korišten suboptimalan pristup (ali ovaj osjećaj može biti vrlo teško objasniti).

Specijalizacija i rastuća složenost dovode do činjenice da diplomirano obrazovanje više ne pruža mogućnost da se sve oblasti proučavaju dovoljno dublje. Ali upravo na ovom nivou obrazovanja treba steći pogled. Nakon toga, na postdiplomskim studijama ili na poslu, morat ćete provesti neko vrijeme udubljujući se u probleme i specifičnosti predmetne oblasti, proučavajući sleng, programske jezike i kodeks kolega, čitajući članke i knjige. Čini mi se da je to jedini način da se uz pomoć univerziteta "napumpa prečku" za budućnost Specijalisti u obliku slova T.

Koji programski jezik je najbolje predavati na fakultetu?

Kako maksimalno iskoristiti obrazovanje iz informatike
Na moju radost, univerzitetski nastavnici su već odustali od traženja tačnog odgovora na pitanje: „Koji je jezik najbolji za programiranje?“ Debata o tome šta je bolje - C# ili Java, Delphi ili C++ - je praktično nestala. Pojava mnogih novih programskih jezika i akumulacija pedagoškog iskustva doveli su do ustaljenog razumijevanja u akademskom okruženju: svaki jezik ima svoju nišu.

Problem podučavanja korištenjem jednog ili drugog programskog jezika prestao je biti prioritet. Nije bitno na kom jeziku se kurs predaje. Glavna stvar je dovoljna izražajnost jezika. knjiga "Umetnost višeprocesorskog programiranja” je dobra ilustracija ovog zapažanja. U ovom sada već klasičnom izdanju, svi primjeri su predstavljeni u Javi - jeziku bez pokazivača, ali sa Garbage Collector. Teško da bi iko tvrdio da je Java daleko od optimalnog izbora za pisanje paralelnog koda visokih performansi. Ali jezik je bio prikladan za objašnjenje koncepata predstavljenih u knjizi. Drugi primjer - klasični kurs mašinskog učenja Andrew Nna, predavao u Matlabu u okruženju Octave. Danas možete izabrati drugačiji programski jezik, ali kakva je razlika ako su ideje i pristupi važni?

Praktičniji i bliži stvarnosti

Istovremeno, posljednjih godina bilo je mnogo više praktičara na univerzitetima. Ako su ranije ruski univerzitetski programi bili aktivno kritikovani zbog odvojenosti od stvarnosti, danas se to ne može reći za IT obrazovanje. Prije 10 godina gotovo da nije bilo nastavnika na univerzitetima sa stvarnim industrijskim iskustvom. Danas sve češće nastavu na specijalizovanom odsjeku drže ne redovni nastavnici informatike, već informatičari koji predaju samo 1-2 predmeta u slobodno vrijeme od glavnog posla. Ovakav pristup opravdava se sa stanovišta kvalitetne obuke kadrova, usavršavanja kurseva i, naravno, traženja potencijalnih zaposlenih u kompaniji. Mislim da neću otkriti tajnu rekavši da podržavamo osnovni odjel na MIPT-u i gradimo odnose s drugim sveučilištima, uključujući kako bismo pripremili studente koji bi mogli započeti svoju karijeru u Acronisu.

Matematičar ili programer?

Kako maksimalno iskoristiti obrazovanje iz informatike
Sveti ratovi, koji su se ranije vrtjeli oko programskih jezika, prešli su u filozofski smjer. Sada se takozvani "programeri" i "matematičari" međusobno svađaju. U principu, ove škole bi se mogle razdvojiti u dva obrazovna programa, ali industrija je još uvijek slaba u odvajanju takvih suptilnosti, a od univerziteta do univerziteta imamo slično obrazovanje sa malo drugačijim fokusom. To znači da će i student i kompanija u kojoj će nastaviti da radi morati da dopune slagalicu znanja delovima koji nedostaju.

Pojava praktičara na univerzitetima koji pišu industrijski kod na različitim jezicima daje studentima bolje razvojne vještine. Poznavajući implementacije standardnih biblioteka, okvira i tehnika programiranja, programeri praktičari usađuju učenicima želju da napišu dobar kod, da to urade brzo i efikasno.

Ova korisna vještina, međutim, ponekad dovodi do pojave onih koji vole da ponovo izmisle točak. Studenti programiranja razmišljaju ovako: “Da li da napišem još 200 redova dobrog koda koji će direktno riješiti problem?”

Nastavnici koji su stekli klasično matematičko obrazovanje (na primjer, na Fakultetu matematike ili primijenjene matematike) često rade u pseudonaučnom okruženju, ili u oblasti modeliranja i analize podataka. „Matematičari“ drugačije vide probleme u oblasti računarstva. Oni prvenstveno ne rade sa kodom, već sa algoritmima, teoremama i formalnim modelima. Važna prednost matematičkog pristupa je jasno fundamentalno razumijevanje onoga što se može, a šta ne može riješiti. I kako to riješiti.

Shodno tome, nastavnici matematike govore o programiranju s pristrasnošću prema teoriji. Studenti koji dolaze od „matematičara” često dolaze do dobro osmišljenih i teorijski superiornih rješenja, ali obično neoptimalnih sa lingvističke tačke gledišta i često jednostavno traljavo napisanih. Takav učenik smatra da mu je glavni cilj da pokaže sposobnost rješavanja takvih problema u principu. Ali implementacija može biti loša.

Djeca koja su odgajana kao programeri u školi ili u prvim godinama života nose sa sobom “veoma lijep bicikl”, koji, međutim, obično ne radi vrlo efikasno asimptotički. Naprotiv, ne postavljaju sebi zadatak da duboko teoretiziraju i okreću se udžbenicima u potrazi za optimalnim rješenjima, preferirajući lijep kod.

Na različitim univerzitetima, tokom intervjua sa studentima, obično vidim koja „škola“ leži u osnovi njegovog obrazovanja. I skoro nikada nisam naišao na savršen balans u osnovnom obrazovanju. Kao dijete, u mom gradu si se mogao pripremati za matematičke olimpijade, ali nije bilo klubova za programiranje. Sada u klubovima djeca uče programirati na „modnom“ Gou i Pythonu. Stoga, čak i na nivou prijema na univerzitete, postoje razlike u pristupima. Smatram da je važno zadržati obje vještine na fakultetu, inače će u kompaniju doći ili specijalista sa nedovoljnom teoretskom osnovom, ili osoba koja nije naučila i ne želi pisati dobar kod.

Kako "napumpati prečku" za budućnost Specijalisti u obliku slova T?

Kako maksimalno iskoristiti obrazovanje iz informatike
Jasno je da u takvim uslovima učenik jednostavno bira ono što mu se najviše sviđa. Nastavnik jednostavno prenosi tačku gledišta koja mu je bliža. Ali svi će imati koristi ako je kod lijepo napisan, a sa stanovišta algoritama, sve je jasno, razumno i efikasno.

  • IT horizonti. Diplomirani diplomirani inženjer informatike je gotov specijalista sa razvijenim tehničkim izgledom, koji je vjerovatno odabrao svoj profil. Ali u juniorskoj godini, ne znamo šta će on ili ona raditi. Može se baviti naukom ili analitikom, ili, naprotiv, može pisati ogromnu količinu koda svaki dan. Dakle, studentu je potrebno pokazati sve aspekte rada u IT oblasti i upoznati sa svim alatima. U idealnom slučaju, nastavnici teorijskih kurseva će pokazati vezu sa praksom (i obrnuto).
  • Tačka rasta. U interesu je samog studenta da ne dozvoli sebi da ide u ekstreme. Nije teško razumjeti da li ste „matematičar“ ili „programer“. Dovoljno je osluškivati ​​prvi impuls pri rješavanju problema: šta želite učiniti - pogledati u udžbenik u potrazi za optimalnim pristupom ili napisati nekoliko funkcija koje će vam kasnije svakako koristiti? Na osnovu toga, možete izgraditi dalju komplementarnu putanju svog učenja.
  • Alternativni izvori znanja. Dešava se da je program dobro izbalansiran, ali "Sistemsko programiranje" i "Algoritme" predaju potpuno različiti ljudi, a neki učenici su bliži prvom nastavniku, a drugi - drugom. Ali čak i ako vam se profesor ne sviđa, to nije razlog da neke predmete zanemarite u korist drugih. I sami prvostupnici su zainteresovani da pronađu volju za rad sa izvorima znanja i ni u kom slučaju ne veruju radikalnim mišljenjima kao što su „matematika je kraljica nauka, glavno je znati algoritme“ ili „dobar kod kompenzuje sve ostalo“.

Svoje teorijsko znanje možete produbiti tako što ćete se obratiti specijalizovanoj literaturi i online kursevima. Svoje vještine u programskim jezicima možete unaprijediti na Coursera, Udacity ili Stepik, gdje je predstavljeno mnogo različitih kurseva. Takođe, učenici često počinju da gledaju hardcore kurseve jezika ako smatraju da nastavnik algoritama dobro poznaje matematiku, ali ne može da odgovori na složena pitanja implementacije. Neće se svi složiti sa mnom, ali u mojoj praksi se dobro pokazao specijalizacija za C++ od Yandexa, u kojem se sekvencijalno analiziraju sve složenije karakteristike jezika. Općenito, odaberite kurs s visokim ocjenama od renomiranih kompanija ili univerziteta.

Soft skills

Kako maksimalno iskoristiti obrazovanje iz informatike
Dolazeći sa univerziteta na posao u bilo kojoj kompaniji, od startupa do velike korporacije, studenti čak i vrhunskih univerziteta se loše prilagođavaju stvarnom radnom okruženju. Činjenica je da danas univerziteti mnogo "čuvaju" studente. Čak i nakon mnogo propuštenih časova, nespremanja za testove i testove na vreme, prespavanja ili zakašnjenja na ispit, svako može da položi i ponovo ga polaže - i na kraju ipak dobije diplomu.

Međutim, danas postoje svi uslovi da se studenti pripreme za odrasli život i samostalnu profesionalnu aktivnost. Morat će ne samo programirati, već i komunicirati. I ovo takođe treba naučiti. Univerziteti imaju različite formate za razvoj ovih vještina, ali im se, nažalost, često ne poklanja dovoljno pažnje. Međutim, imamo mnogo prilika da steknemo efektivne vještine timskog rada.

  • Pisana poslovna komunikacija. Nažalost, većina diplomaca koji napuštaju fakultet nemaju pojma o dopisnom bontonu. Specifičnost komunikacije u instant messengerima je u razmjeni poruka noću i danju i korištenju stila razgovora i neformalnog vokabulara. Međutim, bilo bi moguće trenirati pisani govor kada student komunicira sa odsjekom i univerzitetom.

    U praksi se menadžeri često suočavaju sa potrebom da veliki projekat razlože na male zadatke. Da biste to učinili, morate jasno opisati svaki zadatak i njegove komponente tako da mlađi programeri razumiju šta se od njih traži. Loše definiran zadatak često dovodi do potrebe da se nešto ponovi, zbog čega iskustvo u pisanoj komunikaciji pomaže diplomcima da rade u raspoređenim timovima.

  • Pisana prezentacija rezultata vašeg rada. Da bi predstavili svoje obrazovne projekte, učenici viših razreda mogu pisati postove na Habru, naučne članke, ali i samo izvještaje. Mogućnosti za to su mnoge - rad na kursevima počinje u drugoj godini na nekim univerzitetima. Možete koristiti i eseje kao vid kontrole – oni su obično po formi bliži novinarskom članku. Ovaj pristup je već implementiran na Visokoj školi ekonomije Nacionalnog istraživačkog univerziteta.

    Ako kompanija praktikuje fleksibilan pristup razvoju, mora rezultate svog rada prezentovati u manjim porcijama, ali češće. Da biste to učinili, važno je biti u mogućnosti ukratko prenijeti rezultate rada jednog stručnjaka ili cijelog tima. Takođe, mnoge kompanije danas provode „preglede“ - godišnje ili polugodišnje. Zaposleni razgovaraju o rezultatima i izgledima za rad. Uspješna recenzija je glavni razlog za rast karijere, bonusi, na primjer, u Microsoftu, Acronisu ili Yandexu. Da, možete dobro programirati, ali "sjedeći u ćošku" čak i kul specijalista će uvijek izgubiti od nekoga ko zna kako dobro predstaviti svoj uspjeh.

  • Akademsko pisanje. Akademsko pisanje zaslužuje posebnu pažnju. Korisno je da se studenti upoznaju sa pravilima pisanja naučnih tekstova, upotrebe argumenata, traženja informacija u različitim izvorima i oblikovanja referenci na te izvore. Preporučljivo je to raditi na engleskom jeziku, budući da u međunarodnoj akademskoj zajednici postoji mnogo više dobrih tekstova, a za različite discipline već postoje etablirani šabloni za predstavljanje naučnih rezultata. Naravno, potrebne su i akademske vještine pisanja kada se pripremaju publikacije na ruskom jeziku, ali je mnogo manje primjera dobrih modernih članaka na engleskom. Ove vještine se mogu steći kroz odgovarajući kurs, koji je sada uključen u mnoge obrazovne programe.
  • Vodeći sastanke. Većina učenika ne zna kako se pripremati za sastanke, voditi zapisnike i obraditi podatke. Ali ako ovu vještinu razvijemo na fakultetu, na primjer, učestvujući u timskim projektima, možemo izbjeći gubljenje vremena na radnom mjestu. Ovo zahtijeva nadzor nad projektnim radom studenata kako bi ih naučili kako da efikasno vode sastanke. U praksi, ovo košta svaku korporaciju mnogo novca - uostalom, ako nekoliko ljudi koji primaju veliku platu provedu sat radnog vremena na skupu, želite da postoji odgovarajući povraćaj na to.
  • Javno nastupanje. Mnogi studenti se suočavaju sa potrebom da javno govore samo dok brane svoju tezu. I nisu svi spremni za ovo. Video sam mnoge studente koji:
    • stoje leđima okrenuti publici,
    • njišući se, pokušavajući uvesti komisiju u trans,
    • lomiti olovke, olovke i pokazivače,
    • hodanje u krugovima
    • pogledaj u pod.

    Ovo je normalno kada osoba nastupa prvi put. Ali sa ovim stresom morate početi ranije – obranom predmeta u prijateljskoj atmosferi, među kolegama iz razreda.

    Osim toga, standardna praksa u korporacijama je da se zaposleniku pruži prilika da predloži ideju i dobije sredstva, poziciju ili namjenski projekat za nju. Ali, ako bolje razmislite, ovo je ista zaštita predmeta, samo na višem nivou. Zašto ne biste praktikovali tako korisne vještine u karijeri dok studirate?

Šta sam propustio?

Jedan od razloga za pisanje ovog posta bio je članak, objavljeno na sajtu Tjumenskog državnog univerziteta. Autor članka se fokusira samo na nedostatke ruskih učenika koje su primijetili strani nastavnici. Praksa mog predavanja na različitim univerzitetima sugeriše da ruska škola i visoko obrazovanje predstavljaju dobru osnovu. Ruski studenti su pametni u matematici i algoritmima, te je s njima lakše izgraditi profesionalnu komunikaciju.

U slučaju stranih učenika, naprotiv, očekivanja od nastavnika ruskog ponekad mogu biti previsoka. Na primjer, na nivou osnovne obuke, indijski učenici koje sam upoznao slični su ruskim studentima u pogledu nivoa matematike. Međutim, ponekad im nedostaje specijalizovano znanje kada završe osnovne studije. Dobri evropski učenici će vjerovatno imati manje jaku matematičku pozadinu na nivou škole.

A ako studirate ili radite na fakultetu, sada možete raditi na komunikacijskim vještinama (svojim ili svojim studentima), proširiti svoju osnovnu bazu i vježbati programiranje. U tu svrhu ruski obrazovni sistem pruža sve mogućnosti - samo ih trebate ispravno iskoristiti.

Bit će mi drago ako u komentarima na post podijelite svoje linkove ka kursevima i metodama koje pomažu u izjednačavanju ravnoteže u obrazovanju, kao i drugim načinima poboljšanja mekih vještina tokom studiranja na fakultetu.

izvor: www.habr.com

Dodajte komentar