Ako vyťažiť maximum zo štúdia informatiky

Väčšina moderných programátorov získala vzdelanie na univerzitách. Časom sa to zmení, ale teraz sú veci také, že dobrý personál v IT firmách stále pochádza z univerzít. V tomto príspevku Stanislav Protasov, riaditeľ pre vzťahy s univerzitami spoločnosti Acronis, hovorí o svojej vízii funkcií univerzitného vzdelávania pre budúcich programátorov. Učitelia, študenti a tí, ktorí ich zamestnávajú, môžu dokonca nájsť niekoľko užitočných rád pod škrtom.

Ako vyťažiť maximum zo štúdia informatiky

Posledných 10 rokov učím matematiku, algoritmy, programovacie jazyky a strojové učenie na rôznych univerzitách. Dnes som popri pozícii v Acronise aj zástupcom vedúceho katedry teoretickej a aplikovanej informatiky na MIPT. Z mojej skúsenosti s prácou na dobrých ruských (nielen) univerzitách som urobil niekoľko postrehov o príprave študentov v počítačových odboroch.

Pravidlo 30 sekúnd už nefunguje

Som si istý, že ste sa stretli s pravidlom 30 sekúnd, ktoré hovorí, že programátor by mal pochopiť účel funkcie po zbežnom pohľade na jej kód. Bol vynájdený už dávno a odvtedy sa objavilo mnoho operačných systémov, jazykov, hardvéru a algoritmov. Píšem kód už 12 rokov, no relatívne nedávno som videl zdrojový kód jedného produktu, čo mi na prvý pohľad pripadalo ako kúzla. Dnes, ak nie ste ponorení do predmetu, pravidlo 30 sekúnd prestane fungovať. V opačnom prípade vám nielen 30, ale ani 300 sekúnd nebude stačiť na to, aby ste zistili, čo je čo.

Napríklad, ak chcete písať ovládače, budete sa musieť ponoriť do tejto oblasti a prečítať tisíce riadkov špecifického kódu. S týmto prístupom k štúdiu predmetu špecialista rozvíja „pocit plynutia“. Ako v rape, keď sa dostaví pocit dobrého rýmu a správneho rytmu bez špeciálnej racionalizácie. Rovnako dobre vyškolený programátor môže ľahko rozpoznať neúčinný alebo jednoducho zlý kód bez toho, aby sa podrobne zaoberal tým, kde došlo k porušeniu štýlu alebo bol použitý neoptimálny prístup (tento pocit však môže byť veľmi ťažké vysvetliť).

Špecializácia a rastúca komplexnosť vedú k tomu, že bakalárske vzdelanie už neposkytuje možnosť študovať všetky oblasti dostatočne do hĺbky. Ale práve na tomto stupni vzdelania treba získať rozhľad. Potom, na postgraduálnej škole alebo v práci, budete musieť stráviť nejaký čas ponorením sa do problémov a špecifík danej oblasti, štúdiom slangu, programovacích jazykov a kódov kolegov, čítaním článkov a kníh. Zdá sa mi, že toto je jediný spôsob, ako s pomocou univerzity „napumpovať brvno“ pre budúcnosť Špecialisti v tvare T.

Aký programovací jazyk je najlepšie vyučovať na univerzite?

Ako vyťažiť maximum zo štúdia informatiky
Na moju radosť vysokoškolskí učitelia už vzdali hľadanie správnej odpovede na otázku: „V akom jazyku sa najlepšie programuje?“ Debata o tom, čo je lepšie – C# alebo Java, Delphi alebo C++ – prakticky zmizla. Vznik mnohých nových programovacích jazykov a nahromadenie pedagogických skúseností viedli k zavedenému porozumeniu v akademickom prostredí: každý jazyk má svoje vlastné miesto.

Problém výučby pomocou jedného alebo druhého programovacieho jazyka prestal byť prioritou. Nezáleží na tom, v akom jazyku sa kurz vyučuje. Hlavná vec je dostatočná výraznosť jazyka. kniha"Umenie viacprocesorového programovania“ je dobrým príkladom tohto pozorovania. V tomto už klasickom vydaní sú všetky príklady prezentované v Jave – jazyku bez ukazovateľov, ale s Garbage Collector. Málokto by tvrdil, že Java je ďaleko od optimálnej voľby na písanie vysokovýkonného paralelného kódu. Ale jazyk bol vhodný na vysvetlenie pojmov prezentovaných v knihe. Ďalší príklad - klasický kurz strojového učenia Andrew Nna, vyučovaný v Matlabe v prostredí Octave. Dnes by ste si mohli vybrať iný programovací jazyk, ale aký je v tom skutočne rozdiel, ak sú nápady a prístupy dôležité?

Praktickejšie a bližšie k realite

Zároveň je v posledných rokoch na univerzitách oveľa viac odborníkov z praxe. Ak boli predchádzajúce ruské univerzitné programy aktívne kritizované za to, že sú oddelené od reality, dnes sa to nedá povedať o IT vzdelávaní. Pred 10 rokmi neboli na univerzitách takmer žiadni učitelia so skutočnými skúsenosťami v odbore. V súčasnosti čoraz častejšie hodiny na špecializovanom oddelení nevyučujú učitelia informatiky na plný úväzok, ale praktizujúci IT špecialisti, ktorí zo svojej hlavnej práce vo voľnom čase vyučujú len 1-2 kurzy. Tento prístup sa ospravedlňuje z hľadiska kvalitného školenia personálu, aktualizačných kurzov a samozrejme hľadania potenciálnych zamestnancov vo firme. Nemyslím si, že prezradím tajomstvo, keď poviem, že podporujeme základné oddelenie na MIPT a budujeme vzťahy s inými univerzitami, a to aj s cieľom pripraviť študentov, ktorí by mohli začať svoju kariéru v Acronis.

Matematik alebo programátor?

Ako vyťažiť maximum zo štúdia informatiky
Sväté vojny, ktoré sa predtým točili okolo programovacích jazykov, sa posunuli filozofickým smerom. Teraz sa takzvaní „programátori“ a „matematici“ medzi sebou hádajú. V zásade by sa tieto školy dali rozdeliť do dvoch vzdelávacích programov, no priemysel je na oddeľovanie takýchto jemností stále chudobný a od univerzity k univerzite máme podobné vzdelanie s trochu iným zameraním. To znamená, že študent aj firma, v ktorej bude ďalej pôsobiť, budú musieť doplniť skladačku vedomostí o chýbajúce dieliky.

Objavenie sa odborníkov z praxe na univerzitách, ktorí píšu priemyselný kód v rôznych jazykoch, dáva študentom lepšie rozvojové zručnosti. Praktizujúci programátori, ktorí sú dobre oboznámení s implementáciami štandardných knižníc, rámcov a programovacích techník, vštepujú študentom túžbu písať dobrý kód, robiť to rýchlo a efektívne.

Táto užitočná zručnosť však niekedy vedie k objaveniu sa ľudí, ktorí radi znovu vynájdu koleso. Študenti programovania uvažujú takto: "Mám napísať ďalších 200 riadkov dobrého kódu, ktorý problém vyrieši priamo?"

Učitelia, ktorí získali klasické matematické vzdelanie (napríklad na Fakulte matematiky alebo aplikovanej matematiky), často pracujú v pseudovedeckom prostredí, prípadne v oblasti modelovania a analýzy dát. „Matematici“ vidia problémy v oblasti informatiky inak. Primárne nepracujú s kódom, ale s algoritmami, teorémami a formálnymi modelmi. Dôležitou výhodou matematického prístupu je jasné základné pochopenie toho, čo možno a čo nemožno vyriešiť. A ako to vyriešiť.

Preto učitelia matematiky hovoria o programovaní so sklonom k ​​teórii. Študenti, ktorí pochádzajú od „matematikov“, často prichádzajú s dobre premyslenými a teoreticky nadradenými riešeniami, zvyčajne však z jazykového hľadiska neoptimálnymi a často jednoducho lajdácky napísanými. Takýto študent sa domnieva, že jeho hlavným cieľom je preukázať schopnosť v zásade riešiť takéto problémy. Ale implementácia môže byť chabá.

Deti, ktoré boli v škole alebo v prvých rokoch vychované ako programátori, si so sebou prinášajú „veľmi krásny bicykel“, ktorý však väčšinou asymptoticky nefunguje veľmi efektívne. Naopak, nekladú si za úlohu hlboko teoretizovať a obracať sa pri hľadaní optimálnych riešení k učebniciam, pričom uprednostňujú krásny kód.

Na rôznych univerzitách počas študentských pohovorov zvyčajne vidím, ktorá „škola“ je základom jeho vzdelania. A takmer nikdy som sa nestretol s dokonalou rovnováhou v základnom vzdelávaní. Ako dieťa sa v mojom meste dalo pripravovať na matematické olympiády, ale neexistovali krúžky programovania. Teraz sa deti v kluboch učia programovať v „módnom“ Go a Pythone. Preto aj na úrovni prijímania na vysoké školy existujú rozdiely v prístupoch. Domnievam sa, že na vysokej škole je dôležité udržať si obe zručnosti, inak príde do firmy buď odborník s nedostatočným teoretickým základom, alebo človek, ktorý sa nenaučil a nechce písať dobrý kód.

Ako „napumpovať brvno“ pre budúcnosť Špecialisti v tvare T?

Ako vyťažiť maximum zo štúdia informatiky
Je jasné, že v takýchto podmienkach si študent jednoducho vyberie to, čo má najradšej. Učiteľ jednoducho sprostredkuje uhol pohľadu, ktorý je mu bližší. Každý však bude mať prospech, ak je kód napísaný krásne a z hľadiska algoritmov je všetko jasné, rozumné a efektívne.

  • IT obzory. Absolvent bakalárskeho štúdia informatiky je hotový špecialista s rozvinutým technickým rozhľadom, ktorý si zrejme vybral svoj profil. Ale v juniorskom ročníku nevieme, čo bude robiť. Môže ísť do vedy alebo analytiky, alebo naopak, môže každý deň napísať obrovské množstvo kódu. Preto je potrebné študentovi ukázať všetky aspekty práce v IT oblasti a oboznámiť ho so všetkými nástrojmi. Ideálne je, ak učitelia z teoretických kurzov ukážu prepojenie s praxou (a naopak).
  • Bod rastu. Je v záujme samotného študenta, aby si nedovolil zájsť do extrémov. Pochopiť, či ste „matematik“ alebo „programátor“, nie je ťažké. Stačí počúvať prvý impulz pri riešení problému: čo chcete urobiť - pozrieť sa do učebnice pri hľadaní optimálneho postupu alebo napísať pár funkcií, ktoré sa vám neskôr určite zídu? Na základe toho môžete vybudovať ďalšiu doplnkovú trajektóriu vášho učenia.
  • Alternatívne zdroje vedomostí. Stáva sa, že program je dobre vyvážený, ale „Programovanie systému“ a „Algoritmy“ vyučujú úplne iní ľudia a niektorí študenti sú bližšie k prvému učiteľovi a iní k druhému. Ale aj keď profesora nemáte radi, nie je to dôvod na zanedbávanie niektorých predmetov v prospech iných. Samotní bakalári majú záujem nájsť vôľu pracovať so zdrojmi vedomostí a v žiadnom prípade neveria radikálnym názorom ako „matematika je kráľovná vied, hlavná vec je poznať algoritmy“ alebo „dobrý kód kompenzuje všetko ostatné“.

Svoje teoretické vedomosti si môžete prehĺbiť pomocou odbornej literatúry a online kurzov. Svoje znalosti v programovacích jazykoch si môžete zlepšiť na Coursera, Udacity alebo Stepik, kde je prezentovaných mnoho rôznych kurzov. Študenti tiež často začnú sledovať hardcore jazykové kurzy, ak majú pocit, že učiteľ algoritmov ovláda matematiku dobre, ale nevie odpovedať na zložité implementačné otázky. Nie každý so mnou bude súhlasiť, ale v mojej praxi sa mi to osvedčilo špecializácia na C++ od spoločnosti Yandex, v ktorej sa postupne analyzujú čoraz zložitejšie znaky jazyka. Vo všeobecnosti si vyberte kurz s vysokým hodnotením od renomovaných spoločností alebo univerzít.

Mäkké zručnosti

Ako vyťažiť maximum zo štúdia informatiky
Študenti dokonca aj špičkových univerzít, ktorí prichádzajú z univerzity pracovať v akejkoľvek spoločnosti, od startupu až po veľkú korporáciu, nie sú dostatočne adaptovaní na skutočné pracovné prostredie. Faktom je, že dnes univerzity študentov veľa „opatrujú“. Dokonca aj po vymeškaní veľkého množstva hodín, nepripravovaní sa na testy a testy načas, zaspávaní alebo meškaní na skúške ju môže každý absolvovať a zopakovať ju – a nakoniec aj tak dostane diplom.

Dnes sú však vytvorené všetky podmienky na to, aby boli študenti pripravení na dospelý život a samostatnú profesionálnu činnosť. Budú musieť nielen programovať, ale aj komunikovať. A toto je tiež potrebné naučiť. Univerzity majú rôzne formy rozvoja týchto zručností, ale, žiaľ, často sa im nevenuje dostatočná pozornosť. Máme však veľa príležitostí na získanie zručností efektívnej tímovej práce.

  • Písomná obchodná komunikácia. Žiaľ, väčšina absolventov, ktorí opúšťajú univerzitu, nemá ani poňatia o korešpondenčnej etikete. Špecifikom komunikácie v instant messengeroch je výmena správ vo dne v noci a používanie konverzačného štýlu a neformálnej slovnej zásoby. Dalo by sa však trénovať písomný prejav, keď študent komunikuje s katedrou a univerzitou.

    V praxi sa manažéri často stretávajú s potrebou rozložiť veľký projekt na malé úlohy. Aby ste to dosiahli, musíte jasne opísať každú úlohu a jej súčasti, aby mladší vývojári pochopili, čo sa od nich vyžaduje. Zle definovaná úloha často vedie k potrebe niečo prerobiť, a preto skúsenosti v písomnej komunikácii pomáhajú absolventom pracovať v distribuovaných tímoch.

  • Písomná prezentácia výsledkov vašej práce. Študenti vyšších ročníkov môžu na prezentáciu svojich vzdelávacích projektov písať príspevky o Habrovi, vedecké články a tiež len správy. Príležitostí na to je veľa – práca na kurze sa na niektorých univerzitách začína už v druhom ročníku. Ako formu kontroly môžete využiť aj eseje – väčšinou sa formou približujú k publicistickému článku. Tento prístup už zaviedli na Vysokej škole ekonomickej Národnej výskumnej univerzity.

    Ak firma uplatňuje flexibilný prístup k rozvoju, musí výsledky svojej práce prezentovať v menších porciách, ale častejšie. Na to je dôležité vedieť stručne sprostredkovať výsledky práce jedného špecialistu alebo celého tímu. Mnohé spoločnosti dnes tiež vykonávajú „previerky“ - ročné alebo polročné. Zamestnanci diskutujú o výsledkoch a pracovných vyhliadkach. Úspešná recenzia je hlavným dôvodom kariérneho rastu, bonusov napríklad v Microsofte, Acronis alebo Yandex. Áno, programovať viete dobre, ale „sedieť v kúte“ aj chladný špecialista vždy prehrá s niekým, kto vie svoj úspech dobre prezentovať.

  • Akademické písanie. Osobitnú zmienku si zaslúži akademické písanie. Pre študentov je užitočné oboznámiť sa s pravidlami písania vedeckých textov, používania argumentov, vyhľadávania informácií v rôznych zdrojoch a formátovania odkazov na tieto zdroje. Odporúča sa to robiť v angličtine, pretože v medzinárodnej akademickej komunite je oveľa viac dobrých textov a pre rôzne odbory už existujú zavedené šablóny na prezentáciu vedeckých výsledkov. Samozrejme, pri príprave ruskojazyčných publikácií sú potrebné aj akademické písacie schopnosti, ale príkladov dobrých moderných článkov v angličtine je oveľa menej. Tieto zručnosti je možné získať prostredníctvom vhodného kurzu, ktorý je dnes súčasťou mnohých vzdelávacích programov.
  • Vedenie stretnutí. Väčšina študentov nevie, ako sa pripraviť na stretnutia, robiť zápisnice a spracovávať údaje. Ale ak si túto zručnosť rozvinieme na vysokej škole, napríklad účasťou na tímových projektoch, môžeme sa vyhnúť plytvaniu časom na pracovisku. Vyžaduje si to dohľad nad projektovou prácou študentov, aby sa naučili, ako efektívne viesť stretnutia. V praxi to stojí každú korporáciu veľa peňazí – ak totiž niekoľko ľudí, ktorí dostávajú vysoký plat, strávi hodinu pracovného času na mítingu, chcete, aby to malo zodpovedajúcu návratnosť.
  • Hovorenie na verejnosti. Mnohí študenti sa stretávajú s potrebou verejne vystupovať len pri obhajobe diplomovej práce. A nie každý je na to pripravený. Videl som veľa študentov, ktorí:
    • postavte sa chrbtom k publiku,
    • hojdajúc sa, snažiac sa uviesť komisiu do tranzu,
    • zlomiť perá, ceruzky a ukazovatele,
    • chodenie v kruhoch
    • pozrite sa na podlahu.

    To je normálne, keď človek vystupuje prvýkrát. S týmto stresom ale treba začať pracovať skôr – obhájením ročníkovej práce v priateľskej atmosfére, medzi spolužiakmi.

    Okrem toho štandardnou praxou v korporáciách je dať zamestnancovi príležitosť navrhnúť nápad a získať naň financie, pozíciu alebo špecializovaný projekt. Ale ak sa nad tým zamyslíte, je to rovnaká ochrana kurzov, len na vyššej úrovni. Prečo si neprecvičiť takéto užitočné kariérne zručnosti počas štúdia?

O čo som prišiel?

Jedným z dôvodov napísania tohto príspevku bol článok, zverejnené na webovej stránke Ťumeňskej štátnej univerzity. Autor článku sa zameriava len na nedostatky ruských študentov, ktoré si všimli zahraniční učitelia. Prax môjho vyučovania na rôznych univerzitách naznačuje, že ruská škola a vysokoškolské vzdelanie poskytujú dobrý základ. Ruskí študenti sú dôvtipní v matematike a algoritmoch a je ľahšie s nimi nadviazať profesionálnu komunikáciu.

Naopak, v prípade zahraničných študentov môžu byť očakávania učiteľa ruštiny niekedy privysoké. Napríklad na úrovni základného výcviku z hľadiska matematiky sú indickí študenti, ktorých som stretol, podobní tým ruským. Po ukončení bakalárskeho štúdia im však niekedy chýbajú odborné znalosti. Dobrí európski študenti budú mať pravdepodobne menej silné matematické vzdelanie na školskej úrovni.

A ak študujete alebo pracujete na univerzite, môžete teraz pracovať na komunikačných zručnostiach (svojich alebo vašich študentov), ​​rozšíriť si základnú základňu a precvičiť si programovanie. Na tento účel poskytuje ruský vzdelávací systém všetky príležitosti - stačí ich správne využiť.

Budem rád, ak sa v komentároch k príspevku podelíte o svoje odkazy na kurzy a metódy, ktoré pomáhajú vyrovnávať rovnováhu vo vzdelávaní, ako aj iné spôsoby zlepšovania mäkkých zručností počas štúdia na vysokej škole.

Zdroj: hab.com

Pridať komentár