Kako najbolje iskoristiti informatičko obrazovanje

Većina suvremenih programera školovala se na sveučilištima. S vremenom će se to promijeniti, ali sada stvari stoje tako da dobri kadrovi u IT tvrtkama još uvijek dolaze sa sveučilišta. U ovom postu, Stanislav Protasov, Acronisov direktor za odnose sa sveučilištima, govori o svojoj viziji značajki sveučilišne obuke za buduće programere. Učitelji, studenti i oni koji ih zapošljavaju možda čak i pronađu neke korisne savjete ispod rubrike.

Kako najbolje iskoristiti informatičko obrazovanje

Posljednjih 10 godina predajem matematiku, algoritme, programske jezike i strojno učenje na raznim sveučilištima. Danas sam, uz svoju poziciju u Acronisu, i zamjenik voditelja odjela za teorijsku i primijenjenu informatiku na MIPT-u. Iz mog iskustva rada na dobrim ruskim (i ne samo) sveučilištima, iznio sam neka zapažanja o pripremi studenata za računalne discipline.

Pravilo od 30 sekundi više ne funkcionira

Siguran sam da ste naišli na pravilo 30 sekundi, koje kaže da bi programer trebao razumjeti svrhu funkcije nakon brzog pogleda na njezin kod. Izumljen je davno i od tada su se pojavili mnogi operativni sustavi, jezici, hardver i algoritmi. Pisanjem koda bavim se 12 godina, no relativno nedavno sam vidio izvorni kod za jedan proizvod koji mi je na prvi pogled djelovao kao magična čarolija. Danas, ako niste uronjeni u temu, pravilo od 30 sekundi prestaje funkcionirati. U suprotnom, ne samo 30, već ni 300 sekundi neće vam biti dovoljno da shvatite što je što.

Na primjer, ako želite pisati upravljačke programe, morat ćete zaroniti u ovo područje i pročitati tisuće redaka specifičnog koda. S ovim pristupom proučavanju predmeta, stručnjak razvija "osjećaj protoka". Kao u rapu, kada se osjećaj dobre rime i pravog ritma javlja bez posebne racionalizacije. Isto tako, dobro obučen programer može lako prepoznati neučinkovit ili jednostavno loš kod bez ulaska 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 sve veća složenost dovode do toga da prvostupničko obrazovanje više ne pruža mogućnost dovoljno dubljeg proučavanja svih područja. No, upravo na ovoj razini obrazovanja treba steći pogled. Nakon toga, u diplomskoj školi ili na poslu, morat ćete provesti neko vrijeme uranjajući u probleme i specifičnosti predmetnog područja, proučavajući sleng, programske jezike i kod kolega, čitajući članke i knjige. Čini mi se da je to jedini način da uz pomoć sveučilišta “napumpamo prečku” za budućnost Stručnjaci u obliku slova T.

Koji je programski jezik najbolje poučavati na sveučilištu?

Kako najbolje iskoristiti informatičko obrazovanje
Na moju radost, sveučilišni nastavnici već su odustali od potrage za točnim odgovorom na pitanje: “Koji je jezik najbolji za programiranje?” Rasprava o tome što je bolje - C# ili Java, Delphi ili C++ - gotovo je nestala. Pojava mnogih novih programskih jezika i akumulacija pedagoškog iskustva doveli su do uspostavljenog razumijevanja u akademskom okruženju: svaki jezik ima svoju nišu.

Problem nastave korištenjem jednog ili drugog programskog jezika prestao je biti prioritet. Nije važno na kojem se jeziku predaje tečaj. Glavna stvar je dovoljna izražajnost jezika. Knjiga "Umijeće višeprocesorskog programiranja” dobra je ilustracija ovog zapažanja. U ovom sada klasičnom izdanju, svi primjeri su prikazani u Javi - jeziku bez pokazivača, ali sa Garbage Collectorom. Teško da bi itko mogao tvrditi da je Java daleko od optimalnog izbora za pisanje visokoučinkovitog paralelnog koda. Ali jezik je bio prikladan za objašnjenje pojmova predstavljenih u knjizi. Još jedan primjer - klasični tečaj strojnog učenja Andrew Nna, podučavao je u Matlabu u okruženju Octave. Danas možete odabrati drugačiji programski jezik, ali kakva je razlika ako su ideje i pristupi važni?

Praktičnije i bliže stvarnosti

Istodobno, posljednjih je godina mnogo više praktičara na sveučilištima. Ako su ranije ruske sveučilišne programe aktivno kritizirali zbog odvajanja od stvarnosti, danas se to ne može reći za informatičko obrazovanje. Prije 10 godina gotovo da nije bilo nastavnika na sveučilištima sa stvarnim iskustvom u industriji. Danas sve češće nastavu na specijaliziranom odjelu ne izvode nastavnici informatike s punim radnim vremenom, već informatičari koji predaju samo 1-2 predmeta u slobodno vrijeme od svog glavnog posla. Ovaj pristup opravdava se s gledišta visokokvalitetne obuke osoblja, ažuriranja tečajeva i, naravno, traženja potencijalnih zaposlenika u tvrtki. Mislim da neću otkriti tajnu govoreć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 najbolje iskoristiti informatičko obrazovanje
Sveti ratovi, koji su se prije vrtjeli oko programskih jezika, krenuli su u filozofski smjer. Sada se takozvani "programeri" i "matematičari" međusobno svađaju. U principu, te bi se škole mogle razdvojiti u dva obrazovna programa, ali industrija je još uvijek slaba u razdvajanju takvih suptilnosti, a od sveučilišta do sveučilišta imamo slično obrazovanje s malo drugačijim fokusom. To znači da će i student i tvrtka u kojoj će nastaviti raditi morati nadopuniti slagalicu znanja dijelovima koji nedostaju.

Pojava praktičara na sveučilištima koji pišu industrijski kod na različitim jezicima daje studentima bolje razvojne vještine. Budući da dobro poznaju implementacije standardnih biblioteka, okvira i tehnika programiranja, programeri praktičari usađuju studentima želju za pisanjem dobrog koda, da to rade brzo i učinkovito.

Ova korisna vještina, međutim, ponekad dovodi do pojave onih koji vole ponovno izumiti kotač. Studenti programiranja razmišljaju ovako: "Trebam li napisati još 200 redaka dobrog koda koji će izravno riješiti problem?"

Učitelji koji su stekli klasično matematičko obrazovanje (primjerice Fakultet matematike ili primijenjene matematike) često rade u pseudo-znanstvenom okruženju, odnosno u području modeliranja i analize podataka. “Matematičari” drugačije vide probleme u polju informatike. Oni prvenstveno ne rade s kodom, već s algoritmima, teoremima i formalnim modelima. Važna prednost matematičkog pristupa je jasno temeljno razumijevanje onoga što se može, a što ne može riješiti. I kako to riješiti.

Sukladno tome, nastavnici matematike govore o programiranju s pristranošću prema teoriji. Studenti koji dolaze iz redova “matematičara” često dolaze s promišljenim i teorijski vrhunskim rješenjima, ali najčešće neoptimalnim s lingvističke strane i često jednostavno traljavo napisanim. Takav učenik vjeruje da mu je glavni cilj pokazati sposobnost načelnog rješavanja takvih problema. Ali implementacija može biti loša.

Djeca koja su odgajana kao programeri u školi ili u svojim prvim godinama nose sa sobom “jako lijep bicikl”, koji, međutim, obično ne radi vrlo učinkovito asimptotski. Naprotiv, ne postavljaju si zadatak dubokog teoretiziranja i okretanja udžbenicima u potrazi za optimalnim rješenjima, dajući prednost lijepom kodu.

Na različitim sveučilištima, tijekom intervjua sa studentima, obično vidim na kojoj je “školi” njegovo obrazovanje. I gotovo nikada nisam naišao na savršenu ravnotežu 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 u “pomodnim” Go i Python. Dakle, već na razini upisa na sveučilišta postoje razlike u pristupima. Vjerujem da je važno zadržati obje vještine na fakultetu, inače će u tvrtku doći ili stručnjak s nedovoljno teoretskih osnova 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 najbolje iskoristiti informatičko obrazovanje
Jasno je da u takvim uvjetima student jednostavno bira ono što mu se najviše sviđa. Učitelj jednostavno prenosi ono gledište koje mu je bliže. Ali svi će imati koristi ako je kod lijepo napisan, a sa stajališta algoritama sve jasno, razumno i učinkovito.

  • IT horizonti. Diplomirani prvostupnik računarstva je gotov stručnjak s razvijenim tehničkim izgledom, koji je vjerojatno odabrao svoj profil. Ali u juniorskoj godini, ne znamo što će on ili ona raditi. Može se baviti znanošću ili analitikom, ili, naprotiv, može napisati ogromnu količinu koda svaki dan. Stoga studentu treba pokazati sve aspekte rada u IT području i upoznati ga sa svim alatima. U idealnom slučaju, nastavnici iz teoretskih kolegija će pokazati povezanost s praksom (i obrnuto).
  • Točka rasta. U interesu je samog učenika da ne dopusti sebi odlazak u krajnost. Nije teško razumjeti jeste li "matematičar" ili "programer". Dovoljno je poslušati prvi impuls pri rješavanju problema: što želite učiniti - pogledati u udžbenik u potrazi za optimalnim pristupom ili napisati nekoliko funkcija koje će vam sigurno biti korisne kasnije? Na temelju toga možete izgraditi daljnju komplementarnu putanju svog učenja.
  • Alternativni izvori znanja. Događa se da je program dobro uravnotežen, ali "Programiranje sustava" i "Algoritme" podučavaju potpuno različiti ljudi, a neki su učenici bliži prvom učitelju, a drugi - drugom. Ali čak i ako vam se profesor ne sviđa, to nije razlog da zanemarite neke predmete u korist drugih. Sami prvostupnici zainteresirani su za pronalaženje volje za radom s izvorima znanja i ni u kojem slučaju ne vjeruju radikalnim mišljenjima poput "matematika je kraljica znanosti, glavno je znati algoritme" ili "dobar kod nadoknađuje sve ostalo".

Možete produbiti svoje znanje u teoriji okrećući se specijaliziranoj literaturi i online tečajevima. Možete poboljšati svoje vještine u programskim jezicima na Courseri, Udacity ili Stepiku, gdje je predstavljeno mnogo različitih tečajeva. Također, studenti često počnu gledati hardcore jezične tečajeve ako smatraju da nastavnik algoritama dobro poznaje matematiku, ali ne može odgovoriti na složena pitanja o implementaciji. 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 značajke jezika. Općenito, odaberite tečaj s visokim ocjenama renomiranih tvrtki ili sveučilišta.

Meke vještine

Kako najbolje iskoristiti informatičko obrazovanje
Dolazeći sa sveučilišta da rade u bilo kojoj tvrtki, od startupa do velike korporacije, studenti čak i vrhunskih sveučilišta smatraju da su slabo prilagođeni stvarnom radnom okruženju. Činjenica je da danas sveučilišta često “čuvaju” studente. Čak i nakon puno izostanaka s nastave, nespremanja kolokvija i kolokvija na vrijeme, prespavanja ili kašnjenja na ispit, svatko ga može položiti i ponovno polagati – i na kraju ipak dobiti diplomu.

Međutim, danas postoje svi uvjeti da se studenti osposobe za život u odrasloj dobi i samostalno profesionalno djelovanje. Morat će ne samo programirati, nego i komunicirati. I to također treba poučavati. Sveučilišta imaju različite formate za razvoj ovih vještina, ali nažalost, često im se ne posvećuje dovoljno pažnje. Međutim, imamo mnogo prilika za stjecanje učinkovitih vještina timskog rada.

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

    U praksi se menadžeri često suočavaju s potrebom razlaganja velikog projekta na male zadatke. Da biste to učinili, morate jasno opisati svaki zadatak i njegove komponente kako bi mlađi programeri razumjeli što 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 diplomantima u radu u raspoređenim timovima.

  • Pisani prikaz rezultata rada. Kako bi predstavili svoje obrazovne projekte, studenti viših godina mogu pisati postove na Habru, znanstvene članke, ali i samo izvješća. Postoji mnogo mogućnosti za to - na nekim sveučilištima tečajevi počinju na drugoj godini. Kao oblik kontrole možete koristiti i eseje – oni su po formi obično bliži novinarskom članku. Ovaj pristup već je implementiran na Nacionalnom istraživačkom sveučilištu Visoka ekonomska škola.

    Ako tvrtka prakticira fleksibilan pristup razvoju, rezultate svog rada mora prezentirati u manjim obrocima, ali češće. Da biste to učinili, važno je moći ukratko prenijeti rezultate rada jednog stručnjaka ili cijelog tima. Također, mnoge tvrtke danas provode “preglede” - godišnje ili polugodišnje. Zaposlenici razgovaraju o rezultatima i mogućnostima rada. Uspješan pregled glavni je razlog za rast karijere, bonuse, na primjer, u Microsoftu, Acronisu ili Yandexu. Da, možete dobro programirati, ali “sjedeći u kutu” čak i cool stručnjak će uvijek izgubiti od nekoga tko zna kako dobro prezentirati svoj uspjeh.

  • Akademsko pisanje. Akademsko pisanje zaslužuje poseban spomen. Korisno je da se studenti upoznaju s pravilima pisanja znanstvenih tekstova, argumentiranja, traženja podataka u različitim izvorima i oblikovanja referenci na te izvore. Preporučljivo je to učiniti na engleskom jeziku, budući da u međunarodnoj akademskoj zajednici ima puno više dobrih tekstova, a za razne discipline već postoje ustaljeni predlošci za prezentiranje znanstvenih rezultata. Naravno, vještine akademskog pisanja također su potrebne pri pripremi publikacija na ruskom jeziku, ali mnogo je manje primjera dobrih modernih članaka na engleskom jeziku. Ove vještine mogu se steći kroz odgovarajući tečaj, koji je danas uključen u mnoge obrazovne programe.
  • Vođenje sastanaka. Većina studenata ne zna pripremiti se za sastanke, voditi zapisnik i obraditi podatke. Ali ako tu vještinu razvijemo na fakultetu, primjerice, sudjelovanjem u timskim projektima, možemo izbjeći gubljenje vremena na radnom mjestu. To zahtijeva nadzor projektnog rada studenata kako bi ih se naučilo kako učinkovito voditi sastanke. U praksi to košta svaku korporaciju mnogo novca - na kraju krajeva, ako nekoliko ljudi koji primaju veliku plaću provedu sat vremena na skupu, želite da se to i vrati.
  • Javni govor. Mnogi studenti se susreću s potrebom da javno govore samo tijekom obrane diplomskog rada. A nisu svi spremni na ovo. Vidio sam mnoge studente koji:
    • stoje leđima okrenuti publici,
    • njišući se pokušava komisiju uvesti u trans,
    • lomiti pera, olovke i pokazivače,
    • hodanje u krugovima
    • gledati u pod.

    To je normalno kada osoba nastupa prvi put. Ali s tim stresom morate početi raditi ranije - obranom kolegija u prijateljskoj atmosferi, među kolegama iz razreda.

    Osim toga, standardna praksa u korporacijama je dati zaposleniku priliku da predloži ideju i za to dobije sredstva, poziciju ili namjenski projekt. Ali, ako bolje razmislite, ovo je ista zaštita kolegija, samo na višoj razini. Zašto ne prakticirati takve korisne vještine u karijeri tijekom studija?

Što sam propustio?

Jedan od povoda za pisanje ovog posta bio je članak, objavljeno na web stranici Tjumenjskog državnog sveučilišta. Autor članka fokusira se samo na nedostatke ruskih učenika koje su primijetili strani učitelji. Praksa mog predavanja na različitim sveučilištima pokazuje da rusko školstvo i visoko obrazovanje predstavljaju dobru osnovu. Ruski studenti poznaju matematiku i algoritme te je s njima lakše izgraditi profesionalnu komunikaciju.

U slučaju stranih studenata, naprotiv, očekivanja od nastavnika ruskog ponekad mogu biti prevelika. Na primjer, na razini osnovne obuke u smislu matematike, indijski studenti koje sam upoznao slični su ruskim. Međutim, ponekad im nedostaje specijaliziranih znanja kada završe preddiplomski studij. Dobri europski učenici vjerojatno će imati slabije znanje iz matematike na školskoj razini.

A ako studirate ili radite na sveučilištu, sada možete raditi na komunikacijskim vještinama (vašim ili svojih studenata), proširiti svoju temeljnu bazu i vježbati programiranje. U tu svrhu ruski obrazovni sustav pruža sve mogućnosti - samo ih trebate pravilno iskoristiti.

Bit će mi drago ako u komentarima na objavu podijelite svoje poveznice na tečajeve i metode koje pomažu ujednačavanju ravnoteže u obrazovanju, kao i druge načine poboljšanja mekih vještina tijekom studiranja na fakultetu.

Izvor: www.habr.com

Dodajte komentar