Kako najbolje izkoristiti računalniško izobraževanje

Večina sodobnih programerjev se je izobraževala na univerzah. Sčasoma se bo to spremenilo, a zdaj je tako, da dobri kadri v IT-podjetja še vedno prihajajo z univerz. V tej objavi Stanislav Protasov, Acronisov direktor za odnose z univerzami, govori o svojem videnju značilnosti univerzitetnega usposabljanja za bodoče programerje. Učitelji, študenti in tisti, ki jih najemajo, morda najdejo pod rezom tudi kakšen koristen nasvet.

Kako najbolje izkoristiti računalniško izobraževanje

Zadnjih 10 let poučujem matematiko, algoritme, programske jezike in strojno učenje na različnih univerzah. Danes sem poleg funkcije v Acronisu tudi namestnik vodje oddelka za teoretično in uporabno računalništvo na MIPT. Iz izkušenj z delom na dobrih ruskih (in ne samo) univerzah sem podal nekaj pripomb o pripravi študentov na računalniške discipline.

Pravilo 30 sekund ne deluje več

Prepričan sem, da ste naleteli na pravilo 30 sekund, ki pravi, da mora programer razumeti namen funkcije po hitrem pregledu njene kode. Izumili so ga že dolgo nazaj in od takrat se je pojavilo veliko operacijskih sistemov, jezikov, strojne opreme in algoritmov. Kodo pišem že 12 let, relativno pred kratkim pa sem videl izvorno kodo za en izdelek, ki se mi je na prvi pogled zdela kot čarovnija. Danes pravilo 30 sekund preneha delovati, če niste potopljeni v temo. V nasprotnem primeru ne le 30, ampak tudi 300 sekund ne bo dovolj, da ugotovite, kaj je kaj.

Na primer, če želite napisati gonilnike, se boste morali poglobiti v to področje in prebrati na tisoče vrstic določene kode. S tem pristopom k preučevanju predmeta specialist razvije "občutek pretoka". Kot pri rapu, ko se občutek dobre rime in pravega ritma pojavi brez posebne racionalizacije. Podobno lahko dobro usposobljen programer zlahka prepozna neučinkovito ali preprosto slabo kodo, ne da bi se lotil podrobne študije o tem, kje je prišlo do kršitve sloga ali je bil uporabljen neoptimalen pristop (vendar je ta občutek lahko zelo težko razložiti).

Specializacija in naraščajoča kompleksnost vodita do tega, da diplomirana izobrazba ne daje več možnosti dovolj poglobljenega študija vseh področij. Toda ravno na tej stopnji izobrazbe je treba pridobiti razgledanost. Potem, v podiplomski šoli ali na delovnem mestu, boste morali preživeti nekaj časa, da se potopite v probleme in posebnosti predmetnega področja, preučujete sleng, programske jezike in kodo kolegov, berete članke in knjige. Zdi se mi, da je to edini način, da s pomočjo univerze »napumpamo prečko« za naprej. Specialisti v obliki črke T.

Kateri programski jezik je najbolje poučevati na univerzi?

Kako najbolje izkoristiti računalniško izobraževanje
Na moje veselje so univerzitetni učitelji že nehali iskati pravilen odgovor na vprašanje: »V katerem jeziku je najbolje programirati?« Debata o tem, kateri je boljši - C# ali Java, Delphi ali C++ - je tako rekoč izginila. Pojav številnih novih programskih jezikov in kopičenje pedagoških izkušenj sta pripeljala do uveljavljenega razumevanja v akademskem okolju: vsak jezik ima svojo nišo.

Problem poučevanja z uporabo enega ali drugega programskega jezika ni več prednostna naloga. Ni pomembno, v katerem jeziku se tečaj izvaja. Glavna stvar je zadostna ekspresivnost jezika. knjiga "Umetnost večprocesorskega programiranja« je dobra ilustracija te ugotovitve. V tej zdaj že klasični izdaji so vsi primeri predstavljeni v Javi – jeziku brez kazalcev, vendar z Garbage Collectorjem. Komaj kdo bi trdil, da je Java daleč od optimalne izbire za pisanje visoko zmogljive vzporedne kode. Toda jezik je bil primeren za razlago konceptov, predstavljenih v knjigi. Še en primer - klasični tečaj strojnega učenja Andrew Nna, poučeval v Matlabu v okolju Octave. Danes bi lahko izbrali drug programski jezik, a kakšna je razlika, če so ideje in pristopi pomembni?

Bolj praktično in bližje realnosti

Hkrati pa je v zadnjih letih veliko več praktikov na univerzah. Če so bili prejšnji ruski univerzitetni programi aktivno kritizirani, ker so ločeni od realnosti, danes tega ne moremo reči za izobraževanje o IT. Pred 10 leti na univerzah skoraj ni bilo učiteljev z izkušnjami iz resnične industrije. Dandanes vse pogosteje pouk na specializiranem oddelku ne poučujejo učitelji računalništva s polnim delovnim časom, temveč strokovnjaki za informatiko, ki v prostem času od glavnega dela poučujejo le 1-2 predmeta. Ta pristop se upravičuje z vidika kakovostnega usposabljanja osebja, posodabljanja tečajev in seveda iskanja potencialnih zaposlenih v podjetju. Mislim, da ne bom razkril skrivnosti z besedami, da podpiramo osnovni oddelek na MIPT in gradimo odnose z drugimi univerzami, tudi zato, da bi pripravili študente, ki bi lahko začeli svojo kariero pri Acronisu.

Matematik ali programer?

Kako najbolje izkoristiti računalniško izobraževanje
Svete vojne, ki so se prej vrtele okoli programskih jezikov, so prešle v filozofsko smer. Zdaj se tako imenovani "programerji" in "matematiki" prepirajo med seboj. Načeloma bi te šole lahko ločili v dva izobraževalna programa, vendar je industrija še vedno slaba pri ločevanju teh tankosti in od univerze do univerze imamo podobno izobraževanje z nekoliko drugačno usmeritvijo. To pomeni, da bosta morala tako študent kot podjetje, v katerem bo še naprej delal, sestavljanko znanja dopolniti z manjkajočimi koščki.

Pojav praktikov na univerzah, ki pišejo industrijsko kodo v različnih jezikih, daje študentom boljše razvojne sposobnosti. Dobri poznavalci implementacij standardnih knjižnic, ogrodij in tehnik programiranja, programerji praktiki v študente vzbudijo željo po pisanju dobre kode, da to storijo hitro in učinkovito.

Ta uporabna veščina pa včasih vodi do pojava tistih, ki radi na novo odkrivajo kolo. Študenti programiranja razmišljajo takole: "Naj napišem še 200 vrstic dobre kode, ki bo neposredno rešila problem?"

Učitelji s klasično matematično izobrazbo (na primer Fakulteta za matematiko ali uporabno matematiko) pogosto delajo v psevdoznanstvenem okolju oziroma na področju modeliranja in analize podatkov. »Matematiki« probleme na področju računalništva vidijo drugače. Primarno ne delujejo s kodo, temveč z algoritmi, izreki in formalnimi modeli. Pomembna prednost matematičnega pristopa je jasno temeljno razumevanje tega, kaj je mogoče rešiti in kaj ne. In kako to rešiti.

V skladu s tem učitelji matematike govorijo o programiranju s pristranskostjo k teoriji. Dijaki, ki izhajajo iz vrst »matematikov«, pogosto pridejo do premišljenih in teoretično vrhunskih rešitev, a običajno z jezikovnega vidika neoptimalnih in pogosto preprosto površno napisanih. Tak študent verjame, da je njegov glavni cilj dokazati sposobnost načelnega reševanja takšnih problemov. Izvedba pa je lahko šepava.

Otroci, ki so bili v šoli ali v prvih letih vzgojeni kot programerji, prinesejo s seboj »zelo lepo kolo«, ki pa asimptotično običajno ne deluje preveč učinkovito. Nasprotno, ne postavljajo si naloge globokega teoretiziranja in obračanja k učbenikom v iskanju optimalnih rešitev, raje imajo lepo kodo.

Na različnih univerzah med razgovori s študenti običajno vidim, katera »šola« je osnova njegove izobrazbe. In skoraj nikoli nisem naletel na popolno ravnovesje v osnovnem izobraževanju. Kot otrok si se v mojem mestu lahko pripravljal na matematične olimpijade, a krožkov programiranja ni bilo. Zdaj se otroci v klubih učijo programirati v "modnih" Go in Python. Zato že na stopnji vpisa na univerze obstajajo razlike v pristopih. Menim, da je na univerzi pomembno vzdrževati obe veščini, sicer bo v podjetje prišel delat specialist z nezadostno teoretično osnovo ali oseba, ki se ni naučila in ne želi pisati dobre kode.

Kako "napihniti prečko" za prihodnost Specialisti v obliki črke T?

Kako najbolje izkoristiti računalniško izobraževanje
Jasno je, da si študent v takih razmerah preprosto izbere tisto, kar mu je najbolj všeč. Učitelj preprosto posreduje stališče, ki mu je bližje. Vsi pa bodo imeli koristi, če bo koda napisana lepo, z vidika algoritmov pa vse jasno, razumno in učinkovito.

  • IT obzorja. Diplomirani diplomant računalništva je že pripravljen strokovnjak z razvitim tehničnim pogledom, ki je verjetno izbral svoj profil. Toda v mlajšem letniku ne vemo, kaj bo naredil. Lahko se ukvarja z znanostjo ali analitiko ali pa, nasprotno, vsak dan napiše ogromno kode. Zato je treba študentu pokazati vse vidike dela na IT področju in ga seznaniti z vsemi orodji. V idealnem primeru bodo učitelji iz teoretičnih predmetov pokazali povezavo s prakso (in obratno).
  • Točka rasti. V interesu študenta samega je, da si ne dovoli iti v skrajnosti. Ni težko razumeti, ali ste "matematik" ali "programer". Dovolj je poslušati prvi impulz pri reševanju problema: kaj želite storiti - pogledati v učbenik v iskanju optimalnega pristopa ali napisati nekaj funkcij, ki bodo zagotovo koristne kasneje? Na podlagi tega lahko zgradite nadaljnjo komplementarno pot svojega učenja.
  • Alternativni viri znanja. Zgodi se, da je program dobro uravnotežen, vendar "sistemsko programiranje" in "algoritme" poučujejo popolnoma različni ljudje in nekateri učenci so bližje prvemu učitelju, drugi pa drugemu. Toda tudi če vam profesor ni všeč, to ni razlog, da bi zanemarili nekatere predmete v korist drugih. Sami diplomanti si želijo najti voljo do dela z viri znanja in v nobenem primeru ne zaupajo radikalnim mnenjem, kot je "matematika je kraljica znanosti, glavno je poznati algoritme" ali "dobra koda nadomesti vse ostalo."

Svoje teoretično znanje lahko poglobite tako, da se obrnete na specializirano literaturo in spletne tečaje. Svoje znanje programskih jezikov lahko izboljšate na Coursera, Udacity ali Stepik, kjer je predstavljenih veliko različnih tečajev. Poleg tega učenci pogosto začnejo spremljati zahtevne jezikovne tečaje, če menijo, da učitelj algoritmov dobro pozna matematiko, vendar ne more odgovoriti na zapletena vprašanja o izvajanju. Ne bodo se vsi strinjali z mano, vendar se je v moji praksi dobro izkazalo specializacija za C++ iz Yandex, v katerem se zaporedno analizirajo vedno bolj zapletene značilnosti jezika. Na splošno izberite tečaj z visokimi ocenami uglednih podjetij ali univerz.

Mehke veščine

Kako najbolje izkoristiti računalniško izobraževanje
Ko pridejo z univerze na delo v katerem koli podjetju, od startupa do velike korporacije, se študentje celo vrhunskih univerz slabo prilagajajo resničnemu delovnemu okolju. Dejstvo je, da danes univerze veliko »čuvajo« študente. Tudi po velikem izostanku od pouka, nepravočasnih pripravah na teste in teste, prespanju ali zamudi na izpit ga lahko vsak opravi in ​​ponovno opravlja – in na koncu še vedno prejme diplomo.

Vendar pa danes obstajajo vsi pogoji za pripravo študentov na odraslo življenje in samostojno poklicno dejavnost. Morali bodo ne samo programirati, ampak tudi komunicirati. In tega se je treba tudi naučiti. Univerze imajo različne formate za razvijanje teh veščin, vendar jim, žal, pogosto ne posvečajo dovolj pozornosti. Imamo pa veliko priložnosti, da pridobimo veščine učinkovitega timskega dela.

  • Pisna poslovna komunikacija. Na žalost večina diplomantov, ki zapuščajo univerzo, nima pojma o dopisnem bontonu. Specifičnost komunikacije v hitrih sporočilih je v izmenjavi sporočil noč in dan ter uporabi pogovornega sloga in neformalnega besedišča. Pisni govor pa bi bilo mogoče trenirati, ko študent komunicira z oddelkom in univerzo.

    V praksi se vodje pogosto soočajo s potrebo po razdelitvi velikega projekta na majhne naloge. Če želite to narediti, morate jasno opisati vsako nalogo in njene komponente, tako da mlajši razvijalci razumejo, kaj se od njih zahteva. Slabo definirana naloga pogosto povzroči, da je treba nekaj ponoviti, zato izkušnje s pisno komunikacijo pomagajo diplomantom pri delu v porazdeljenih timih.

  • Pisna predstavitev rezultatov vašega dela. Za predstavitev svojih izobraževalnih projektov lahko študenti višjih letnikov pišejo objave na Habru, znanstvene članke in tudi samo poročila. Priložnosti za to je veliko – na nekaterih univerzah se tečaj začne že v drugem letniku. Kot obliko kontrole lahko uporabite tudi eseje – po obliki so običajno bližje novinarskemu članku. Ta pristop je že implementiran na Nacionalni raziskovalni univerzi Visoka ekonomska šola.

    Če ima podjetje fleksibilen pristop k razvoju, mora rezultate svojega dela predstavljati v manjših delih, vendar pogosteje. Da bi to naredili, je pomembno, da lahko na kratko prenesete rezultate dela enega strokovnjaka ali celotne ekipe. Prav tako veliko podjetij danes izvaja "preglede" - letne ali polletne. Zaposleni razpravljajo o rezultatih in možnostih dela. Uspešen pregled je glavni razlog za karierno rast, bonuse, na primer v Microsoftu, Acronisu ali Yandexu. Da, lahko dobro programirate, toda »sedeč v kotu« bo tudi kul specialist vedno izgubil pred nekom, ki zna dobro predstaviti svoj uspeh.

  • Akademsko pisanje. Akademsko pisanje si zasluži posebno omembo. Koristno je, da se učenci seznanijo s pravili pisanja znanstvenih besedil, uporabe argumentov, iskanja informacij v različnih virih in oblikovanja sklicevanj na te vire. Priporočljivo je, da to storite v angleščini, saj je v mednarodni akademski skupnosti veliko več dobrih besedil, za različne discipline pa so že uveljavljene predloge za predstavitev znanstvenih rezultatov. Seveda so pri pripravi publikacij v ruskem jeziku potrebne tudi veščine akademskega pisanja, vendar je primerov dobrih sodobnih člankov v angleščini veliko manj. Te veščine je mogoče pridobiti z ustreznim tečajem, ki je danes vključen v številne izobraževalne programe.
  • Vodenje sestankov. Večina študentov se ne zna pripraviti na sestanke, zapisovati in obdelati podatkov. Če pa to veščino razvijamo na fakulteti, na primer s sodelovanjem v timskih projektih, se lahko izognemo izgubi časa na delovnem mestu. To zahteva nadzor nad študentovim projektnim delom, da bi jih naučili, kako učinkovito voditi sestanke. V praksi to vsako korporacijo stane veliko denarja - navsezadnje, če več ljudi, ki prejemajo visoko plačo, porabi eno uro delovnega časa na shodu, želite, da se to ustrezno povrne.
  • Javno nastopanje. Mnogi študenti se soočijo s potrebo po javnem nastopu le med zagovorom diplomske naloge. In niso vsi pripravljeni na to. Videl sem veliko študentov, ki:
    • stojijo s hrbtom obrnjeni proti občinstvu,
    • zibanje poskuša komisijo spraviti v trans,
    • lomiti pisala, svinčnike in kazalce,
    • hoja v krogih
    • glej v tla.

    To je normalno, ko oseba nastopa prvič. Toda s tem stresom se morate začeti ukvarjati že prej - z zagovorom svoje naloge v prijateljskem vzdušju, med sošolci.

    Poleg tega je standardna praksa v podjetjih, da se zaposlenemu omogoči, da predlaga idejo in zanjo prejme sredstva, delovno mesto ali namenski projekt. Ampak, če dobro pomislite, je to ista zaščita tečajnice, le na višji ravni. Zakaj ne bi tako koristnih kariernih veščin vadili med študijem?

Kaj sem zamudil?

Eden od razlogov za pisanje te objave je bil članek, objavljeno na spletni strani Tjumenske državne univerze. Avtor članka se osredotoča le na pomanjkljivosti ruskih študentov, ki jih opazijo tuji učitelji. Praksa mojega poučevanja na različnih univerzah kaže, da je ruska šola in visokošolsko izobraževanje dobra osnova. Ruski študenti so vešči matematike in algoritmov, zato je z njimi lažje vzpostaviti profesionalno komunikacijo.

Nasprotno, pri tujih študentih so lahko pričakovanja od učitelja ruščine včasih previsoka. Na primer, na ravni osnovnega usposabljanja v smislu matematike so indijski učenci, ki sem jih srečal, podobni ruskim. Vendar pa jim včasih primanjkuje specializiranega znanja, ko končajo dodiplomski študij. Dobri evropski učenci bodo verjetno imeli slabše znanje matematike na šolski ravni.

In če študirate ali delate na univerzi, lahko zdaj delate na komunikacijskih veščinah (svojih ali svojih študentov), ​​razširite svojo osnovno bazo in vadite programiranje. V ta namen ruski izobraževalni sistem ponuja vse možnosti - le pravilno jih morate uporabiti.

Vesel bom, če boste v komentarjih k objavi delili svoje povezave do tečajev in metod, ki pomagajo pri izenačevanju ravnovesja v izobraževanju, ter drugih načinov za izboljšanje mehkih veščin med študijem na fakulteti.

Vir: www.habr.com

Dodaj komentar