Kuidas arvutiteaduse haridusest maksimumi võtta

Enamik kaasaegseid programmeerijaid on saanud hariduse ülikoolides. Aja jooksul see muutub, aga praegu on asjad nii, et IT-ettevõtetesse tuleb häid töötajaid ikka ülikoolidest. Selles postituses räägib Acronise ülikoolisuhete direktor Stanislav Protasov oma nägemusest tulevaste programmeerijate ülikoolikoolituse eripäradest. Õpetajad, õpilased ja need, kes neid palkavad, võivad isegi kasulikke näpunäiteid leida.

Kuidas arvutiteaduse haridusest maksimumi võtta

Viimased 10 aastat olen õpetanud erinevates ülikoolides matemaatikat, algoritme, programmeerimiskeeli ja masinõpet. Tänaseks olen lisaks ametikohale Acronises ka MIPT teoreetilise ja rakendusliku arvutiteaduse osakonna juhataja asetäitja. Oma töökogemusest heades Venemaa (ja mitte ainult) ülikoolides tegin mõned tähelepanekud arvutierialade üliõpilaste ettevalmistuse kohta.

30 sekundi reegel enam ei tööta

Olen kindel, et olete kohanud 30 sekundi reeglit, mis ütleb, et programmeerija peaks pärast selle koodi kiiret pilku mõistma funktsiooni eesmärki. See leiutati kaua aega tagasi ja sellest ajast on ilmunud palju operatsioonisüsteeme, keeli, riistvara ja algoritme. Olen koodi kirjutanud 12 aastat, kuid suhteliselt hiljuti nägin ühe toote lähtekoodi, mis esmapilgul tundus mulle võluloitsudena. Täna, kui te pole teemavaldkonda süvenenud, lakkab 30 sekundi reegel töötamast. Vastasel juhul ei piisa mitte ainult 30, vaid ka 300 sekundist, et aru saada, mis on mis.

Näiteks kui soovite draivereid kirjutada, peate sellesse piirkonda sukelduma ja lugema tuhandeid konkreetse koodi ridu. Sellise lähenemisega aine õppimisele arendab spetsialist "voolu tunnet". Nagu räpis, kui hea riimi ja õige rütmi tunne tekib ilma erilise ratsionaliseerimiseta. Samuti suudab hästi koolitatud programmeerija kergesti ära tunda ebatõhusa või lihtsalt halva koodi, ilma et oleks üksikasjalikult uuritud, kus stiili rikkumine toimus või kus kasutati ebaoptimaalset lähenemist (kuid seda tunnet võib olla väga raske seletada).

Spetsialiseerumine ja kasvav keerukus viivad selleni, et bakalaureuseõpe ei anna enam võimalust kõiki valdkondi piisavalt põhjalikult õppida. Kuid just sellel haridustasemel on vaja omandada väljavaade. Pärast seda peate kraadiõppes või tööl veetma aega, et sukelduda ainevaldkonna probleemidesse ja eripäradesse, õppida slängi, programmeerimiskeeli ja kolleegide koodi, lugeda artikleid ja raamatuid. Mulle tundub, et see on ainuke võimalus ülikooli abiga tuleviku jaoks “ristlatt üles pumbata”. T-kujulised spetsialistid.

Millist programmeerimiskeelt on kõige parem ülikoolis õpetada?

Kuidas arvutiteaduse haridusest maksimumi võtta
Minu rõõmuks on ülikooli õppejõud juba loobunud õige vastuse otsimisest küsimusele: "Mis keel on parim programmeerimiseks?" Vaidlus selle üle, kumb on parem – C# või Java, Delphi või C++ – on praktiliselt kadunud. Paljude uute programmeerimiskeelte ilmumine ja pedagoogilise kogemuse kogunemine on viinud akadeemilises keskkonnas väljakujunenud arusaamani: igal keelel on oma nišš.

Ühe või teise programmeerimiskeele abil õpetamise probleem on lakanud olemast prioriteet. Pole tähtis, mis keeles kursust õpetatakse. Peaasi on keele piisav väljendusvõime. raamat"Mitmeprotsessorilise programmeerimise kunst” on selle tähelepaneku hea näide. Selles nüüdseks klassikalises väljaandes on kõik näited esitatud Java keeles – ilma osutiteta, kuid prügikogujaga keeles. Vaevalt keegi vaidleks vastu, et Java pole kaugeltki optimaalne valik suure jõudlusega paralleelkoodi kirjutamiseks. Aga keel sobis raamatus toodud mõistete selgitamiseks. Veel üks näide - klassikaline masinõppe kursus Andrew Nna, õpetas Matlabis Octave keskkonnas. Tänapäeval võiks valida teistsuguse programmeerimiskeele, aga mis vahet sellel tegelikult on, kas ideed ja lähenemised on olulised?

Praktilisem ja tegelikkusele lähedasem

Samas on viimastel aastatel ülikoolide juures palju rohkem praktikuid. Kui varasemaid Venemaa ülikooliprogramme kritiseeriti aktiivselt reaalsusest lahutamise pärast, siis tänapäeval IT-hariduse kohta sama öelda ei saa. 10 aastat tagasi polnud ülikoolides peaaegu ühtegi reaalse tööstuse kogemusega õppejõudu. Tänapäeval õpetavad erialaosakonnas tunde üha sagedamini mitte täiskohaga informaatikaõpetajad, vaid praktiseerivad IT-spetsialistid, kes õpetavad põhitööst vabal ajal vaid 1-2 kursust. Selline lähenemine õigustab end kvaliteetse personalikoolituse, täienduskursuste ja loomulikult ettevõttes potentsiaalsete töötajate otsimise seisukohalt. Ma arvan, et ma ei avalda saladust, öeldes, et toetame MIPT-i põhiosakonda ja loome suhteid teiste ülikoolidega, sealhulgas selleks, et valmistada ette üliõpilasi, kes võiksid Acronises oma karjääri alustada.

Matemaatik või programmeerija?

Kuidas arvutiteaduse haridusest maksimumi võtta
Pühad sõjad, mis varem keerlesid programmeerimiskeelte ümber, on liikunud filosoofilises suunas. Nüüd vaidlevad nn programmeerijad ja matemaatikud omavahel. Põhimõtteliselt võiks need koolid jagada kaheks haridusprogrammiks, kuid tööstusharu on selliste peensuste eraldamises endiselt kehv ja ülikoolist ülikooli on meil sarnane haridus veidi erineva fookusega. See tähendab, et nii tudeng kui ka ettevõte, kus ta edasi töötab, peavad teadmiste puslet puuduvate tükkidega täiendama.

Eri keeltes tööstuskoode kirjutavate praktikute ilmumine ülikoolidesse annab õpilastele paremad arenguoskused. Olles hästi kursis standardsete teekide, raamistike ja programmeerimistehnikate juurutamisega, sisendavad praktiseerivad programmeerijad õpilastesse soovi kirjutada head koodi, teha seda kiiresti ja tõhusalt.

See kasulik oskus viib aga mõnikord nende inimeste esilekerkimiseni, kellele meeldib jalgratast uuesti leiutada. Programmeerimisõpilased mõtlevad järgmiselt: "Kas ma peaksin kirjutama veel 200 rida head koodi, mis probleemi otsekohe lahendaks?"

Klassikalise matemaatikahariduse (näiteks matemaatika- või rakendusmatemaatikateaduskonnast) saanud õpetajad töötavad sageli pseudoteaduslikus keskkonnas või modelleerimise ja andmeanalüüsi alal. “Matemaatikud” näevad arvutiteaduse valdkonna probleeme erinevalt. Need ei tööta peamiselt koodiga, vaid algoritmide, teoreemide ja formaalsete mudelitega. Matemaatilise lähenemise oluline eelis on selge põhimõtteline arusaam sellest, mida saab lahendada ja mida mitte. Ja kuidas seda lahendada.

Sellest tulenevalt räägivad matemaatikaõpetajad programmeerimisest teooria poole kaldu. “Matemaatikutest” pärit õpilased tulevad sageli välja läbimõeldud ja teoreetiliselt üleolevate, kuid keelelisest seisukohast enamasti ebaoptimaalsete ja sageli lihtsalt lohakalt kirjutatud lahendustega. Selline õpilane usub, et tema peamine eesmärk on näidata suutlikkust selliseid probleeme põhimõtteliselt lahendada. Kuid rakendamine võib olla labane.

Koolis või esimestel eluaastatel programmeerijana kasvanud lapsed toovad endaga kaasa “väga ilusa jalgratta”, mis aga tavaliselt asümptootiliselt väga tõhusalt ei tööta. Vastupidi, nad ei sea endale ülesandeks süvitsi teoretiseerida ja optimaalsete lahenduste otsimisel õpikute poole pöörduda, eelistades ilusat koodi.

Erinevates ülikoolides näen üliõpilaste intervjuude käigus tavaliselt, milline “kool” on tema hariduse aluseks. Ja ideaalset tasakaalu pole ma põhihariduses peaaegu kunagi kohanud. Lapsena sai minu linnas valmistuda matemaatikaolümpiaadideks, aga programmeerimisklubisid polnud. Nüüd õpivad lapsed klubides programmeerima “moekas” Go ja Python keeles. Seetõttu on isegi ülikoolidesse sisseastumise tasemel lähenemistes erinevusi. Usun, et ülikoolis on oluline säilitada mõlemad oskused, vastasel juhul tuleb ettevõttesse tööle kas ebapiisava teoreetilise baasiga spetsialist või inimene, kes pole õppinud ega taha head koodi kirjutada.

Kuidas "põiklatti üles pumbata" tuleviku jaoks T-kujulised spetsialistid?

Kuidas arvutiteaduse haridusest maksimumi võtta
On selge, et sellistes tingimustes valib õpilane lihtsalt selle, mis talle kõige rohkem meeldib. Õpetaja annab lihtsalt edasi selle vaatenurga, mis on talle lähedasem. Kuid kõik võidavad, kui kood on ilusti kirjutatud ja algoritmide seisukohalt on kõik selge, mõistlik ja tõhus.

  • IT-horisondid. Arvutiteaduse bakalaureuseõppe lõpetanu on arenenud tehnilise väljavaatega valmis spetsialist, kes on ilmselt oma profiili valinud. Kuid nooremas eas me ei tea, mida ta teeb. Ta võib minna teadusesse või analüütikasse või, vastupidi, kirjutada iga päev tohutu hulga koodi. Seetõttu tuleb õpilasele näidata kõiki IT-valdkonnas töötamise aspekte ja tutvustada kõiki tööriistu. Ideaalis näitavad teoreetiliste kursuste õpetajad seost praktikaga (ja vastupidi).
  • Kasvupunkt. Õpilase enda huvides on mitte lubada endale äärmustesse laskumist. Ei ole raske aru saada, kas olete "matemaatik" või "programmeerija". Probleemi lahendamisel piisab esimese impulsi kuulamisest: mida sa teha tahad – optimaalset lähenemist otsides uurida õpikust või kirjutada paar funktsiooni, millest hiljem kindlasti kasu on? Selle põhjal saate luua oma õppimise täiendava täiendava trajektoori.
  • Alternatiivsed teadmiste allikad. Juhtub, et programm on hästi tasakaalustatud, kuid “Süsteemi programmeerimist” ja “Algoritme” õpetavad täiesti erinevad inimesed ning mõned õpilased on esimesele õpetajale lähemal ja teised teisele. Kuid isegi kui teile professor ei meeldi, ei ole see põhjus mõnda teemat teiste kasuks tähelepanuta jätta. Bakalaureuseõpe on ise huvitatud teadmiste allikatega töötamise tahe leidmisest ega usalda mingil juhul radikaalseid arvamusi nagu “matemaatika on teaduste kuninganna, peaasi, et tunneks algoritme” või “hea kood kompenseerib kõik muu”.

Teooriaalaseid teadmisi saate süvendada erialakirjanduse ja veebikursuste poole pöördudes. Programmeerimiskeelte oskusi saate täiendada Courseras, Udacitys või Stepikus, kus pakutakse palju erinevaid kursusi. Samuti hakkavad õpilased sageli kõvakeelekursusi vaatama, kui tunnevad, et algoritmide õpetaja tunneb matemaatikat hästi, kuid ei oska vastata keerulistele juurutusküsimustele. Kõik ei nõustu minuga, kuid minu praktikas on see end hästi tõestanud spetsialiseerumine C++-le Yandexist, milles analüüsitakse järjest keerukamaid keele tunnuseid. Üldiselt valige hea mainega ettevõtete või ülikoolide kõrgete hinnangutega kursus.

Pehmed oskused

Kuidas arvutiteaduse haridusest maksimumi võtta
Tulles ülikoolist tööle ükskõik millisesse ettevõttesse, alustades idufirmast kuni suurkorporatsioonini, on isegi tippülikoolide tudengid reaalse töökeskkonnaga halvasti kohanenud. Fakt on see, et tänapäeval tegelevad ülikoolid palju õpilasi. Isegi pärast paljudest tundidest puudumist, kontrolltöödeks õigeaegselt valmistumata jätmist, üle magamist või eksamile hilinemist saavad kõik sooritada ja uuesti sooritada – ja lõpuks ikkagi diplomi saada.

Tänapäeval on aga olemas kõik tingimused selleks, et õpilased oleksid valmis täiskasvanueaks ja iseseisvaks erialaseks tegevuseks. Nad ei pea mitte ainult programmeerima, vaid ka suhtlema. Ja seda tuleb ka õpetada. Ülikoolidel on nende oskuste arendamiseks erinevaid formaate, kuid kahjuks ei pöörata neile sageli piisavalt tähelepanu. Meil on aga palju võimalusi tõhusate meeskonnatöö oskuste saamiseks.

  • Kirjalik ärisuhtlus. Kahjuks pole enamikul ülikoolist lahkujatel aimugi kirjavahetuse etiketist. Suhtlemise eripära kiirsuhtlejates seisneb sõnumite vahetamises öösel ja päeval ning vestlusstiili ja mitteformaalse sõnavara kasutamises. Kirjalikku kõnet oleks aga võimalik treenida siis, kui üliõpilane suhtleb osakonna ja ülikooliga.

    Praktikas seisavad juhid sageli silmitsi vajadusega jagada suur projekt väikesteks ülesanneteks. Selleks peate selgelt kirjeldama iga ülesannet ja selle komponente, et nooremad arendajad mõistaksid, mida neilt nõutakse. Halvasti määratletud ülesanne toob sageli kaasa vajaduse midagi ümber teha, mistõttu aitab kirjaliku suhtluse kogemus lõpetajatel töötada hajutatud meeskondades.

  • Oma töö tulemuste kirjalik esitlus. Oma haridusprojektide tutvustamiseks saavad abituriendid kirjutada Habri postitusi, teadusartikleid ja ka lihtsalt aruandeid. Võimalusi selleks on palju – mõnes ülikoolis algab kursusetöö juba teisel kursusel. Kontrollvormina saab kasutada ka esseesid – need on vormilt enamasti lähedasemad ajakirjanduslikule artiklile. Seda lähenemist on juba rakendatud Riigi Teadusülikooli Kõrgemas Majanduskoolis.

    Kui ettevõte rakendab paindlikku arengukäsitlust, peab ta oma töö tulemusi esitama väiksemate portsjonitena, kuid sagedamini. Selleks on oluline osata lühidalt edasi anda ühe spetsialisti või kogu meeskonna töö tulemusi. Samuti teevad paljud ettevõtted tänapäeval "ülevaateid" - kord aastas või poolaastas. Töötajad arutavad tulemusi ja tööväljavaateid. Edukad ülevaated on karjääri kasvu ja boonuste peamine põhjus, näiteks Microsoftis, Acronis või Yandexis. Jah, oskad hästi programmeerida, aga “nurgas istudes” kaotab ka lahe spetsialist alati kellelegi, kes oskab oma edu hästi esitleda.

  • Akadeemiline kirjutamine. Eraldi äramärkimist väärib akadeemiline kirjutamine. Õpilastel on kasulik tutvuda teadustekstide kirjutamise reeglitega, argumenteerimisega, erinevatest allikatest teabe otsimisega ja nendele allikatele viidete vormistamisega. Soovitav on seda teha inglise keeles, kuna rahvusvahelises akadeemilises ringkonnas on palju rohkem häid tekste ning erinevate erialade jaoks on teadustulemuste esitamiseks juba väljakujunenud mallid. Muidugi on akadeemilist kirjutamisoskust vaja ka venekeelsete väljaannete koostamisel, kuid ingliskeelsete heade kaasaegsete artiklite näiteid on palju vähem. Neid oskusi saab omandada sobival kursusel, mis on nüüdseks paljudes haridusprogrammides kaasatud.
  • Koosolekute juhtimine. Enamik õpilasi ei tea, kuidas koosolekuteks valmistuda, protokollida ja andmeid töödelda. Aga kui arendame seda oskust kõrgkoolis, näiteks meeskonnaprojektides osaledes, saame vältida ajaraiskamist töökohal. See nõuab õpilaste projektitöö juhendamist, et õpetada neile koosolekuid tõhusalt läbi viima. Praktikas läheb see igale ettevõttele palju raha maksma – kui mitu suurt palka saavat inimest veedavad rallil tunni tööaega, siis tahad ju, et sellelt ka vastav tulu oleks.
  • Avalik esinemine. Paljud tudengid seisavad silmitsi vajadusega avalikult esineda vaid lõputööd kaitstes. Ja mitte kõik pole selleks valmis. Olen näinud palju õpilasi, kes:
    • seisavad seljaga publiku poole,
    • õõtsudes, püüdes komisjonile transi tutvustada,
    • murda pliiatsid, pliiatsid ja osutid,
    • ringides kõndimine
    • vaata põrandat.

    See on normaalne, kui inimene esineb esimest korda. Kuid selle stressiga peate hakkama töötama varem – kaitstes oma kursuseid sõbralikus õhkkonnas, klassikaaslaste seas.

    Lisaks on ettevõtetes tavaks anda töötajale võimalus idee välja pakkuda ja saada selle jaoks rahastus, ametikoht või sihtotstarbeline projekt. Aga kui järele mõelda, siis see on samasugune kursuste töö kaitse, ainult kõrgemal tasemel. Miks mitte harjutada selliseid kasulikke karjäärioskusi õppimise ajal?

Millest ma ilma jäin?

Üks selle postituse kirjutamise põhjusi oli artikkel, avaldati Tjumeni Riikliku Ülikooli veebisaidil. Artikli autor keskendub vaid välisõpetajate poolt märgatud vene õpilaste puudustele. Minu õpetamispraktika erinevates ülikoolides viitab sellele, et vene kool ja kõrgharidus annavad hea baasi. Vene õpilased on matemaatikas ja algoritmides taibukad ning nendega on lihtsam professionaalset suhtlust luua.

Välisüliõpilaste puhul vastupidi, ootused vene keele õpetajale võivad vahel olla liiga kõrged. Näiteks matemaatika põhikoolituse tasemel on India õpilased, kellega kohtusin, sarnased vene omadega. Siiski puuduvad neil mõnikord bakalaureuseõppe lõpetamisel eriteadmised. Headel Euroopa õpilastel on kooliastmes tõenäoliselt vähem tugev matemaatikataust.

Ja kui õpite või töötate ülikoolis, saate nüüd arendada suhtlemisoskusi (enda või üliõpilaste oma), laiendada oma põhibaasi ja harjutada programmeerimist. Selleks annab Venemaa haridussüsteem kõik võimalused – tuleb neid vaid õigesti kasutada.

Mul on hea meel, kui jagate postituse kommentaarides oma linke kursustele ja meetoditele, mis aitavad hariduse tasakaalu võrdsustada, aga ka muid võimalusi, kuidas ülikoolis õppides pehmeid oskusi parandada.

Allikas: www.habr.com

Lisa kommentaar