Jak co nejlépe využít výuku informatiky

Většina moderních programátorů získala vzdělání na univerzitách. Časem se to změní, ale nyní je to tak, že dobří pracovníci v IT firmách stále přicházejí z univerzit. V tomto příspěvku Stanislav Protasov, ředitel pro vztahy s univerzitami společnosti Acronis, hovoří o své vizi funkcí univerzitního školení pro budoucí programátory. Učitelé, studenti a ti, kteří je najímají, mohou pod škrtem dokonce najít užitečné tipy.

Jak co nejlépe využít výuku informatiky

Posledních 10 let vyučuji matematiku, algoritmy, programovací jazyky a strojové učení na různých univerzitách. Dnes jsem kromě své pozice v Acronisu také zástupcem vedoucího katedry teoretické a aplikované informatiky na MIPT. Ze svých zkušeností z práce na dobrých ruských (nejen) univerzitách jsem učinil několik postřehů o přípravě studentů počítačových oborů.

Pravidlo 30 sekund již nefunguje

Určitě jste se setkali s pravidlem 30 sekund, které říká, že programátor by měl po zběžném nahlédnutí do jejího kódu pochopit účel funkce. Byl vynalezen již dávno a od té doby se objevilo mnoho operačních systémů, jazyků, hardwaru a algoritmů. Kód píšu 12 let, ale relativně nedávno jsem viděl zdrojový kód k jednomu produktu, což mi na první pohled připadalo jako kouzelná kouzla. Dnes, pokud nejste ponořeni do oblasti předmětu, pravidlo 30 sekund přestane fungovat. V opačném případě vám nejen 30, ale ani 300 sekund nebude stačit na to, abyste zjistili, co je co.

Pokud chcete například psát ovladače, budete se muset ponořit do této oblasti a přečíst tisíce řádků specifického kódu. S tímto přístupem ke studiu předmětu si odborník vyvine „pocit plynutí“. Jako v rapu, kdy se dostaví pocit dobrého rýmu a správného rytmu bez zvláštního zdůvodnění. Stejně tak dobře vyškolený programátor snadno rozpozná neefektivní nebo jednoduše špatný kód, aniž by se podrobně zabýval tím, kde došlo k porušení stylu nebo byl použit neoptimální přístup (tento pocit lze ale jen velmi těžko vysvětlit).

Specializace a rostoucí složitost vedou k tomu, že bakalářské vzdělání již neposkytuje možnost studovat všechny oblasti dostatečně do hloubky. Ale právě na této úrovni vzdělání je potřeba získat rozhled. Poté, na postgraduální škole nebo v práci, budete muset strávit nějaký čas ponořením se do problémů a specifik oblasti předmětu, studiem slangu, programovacích jazyků a kódu kolegů, čtením článků a knih. Zdá se mi, že je to jediný způsob, jak s pomocí univerzity „napumpovat břevno“ pro budoucnost Specialisté ve tvaru T.

Jaký programovací jazyk je nejlepší učit na univerzitě?

Jak co nejlépe využít výuku informatiky
Vysokoškolští učitelé k mé radosti již vzdali hledání správné odpovědi na otázku: „V jakém jazyce se nejlépe programuje?“ Debata o tom, co je lepší - C# nebo Java, Delphi nebo C++ - prakticky zmizela. Vznik mnoha nových programovacích jazyků a nahromadění pedagogických zkušeností vedly k ustálenému porozumění v akademickém prostředí: každý jazyk má své vlastní místo.

Problém výuky pomocí jednoho nebo druhého programovacího jazyka přestal být prioritou. Nezáleží na tom, v jakém jazyce je kurz vyučován. Hlavní je dostatečná expresivita jazyka. Rezervovat "Umění víceprocesorového programování“ je dobrým příkladem tohoto pozorování. V této dnes již klasické edici jsou všechny příklady uvedeny v Javě – jazyce bez ukazatelů, ale s Garbage Collector. Málokdo by tvrdil, že Java není zdaleka optimální volbou pro psaní vysoce výkonného paralelního kódu. Ale jazyk byl vhodný pro vysvětlení pojmů uvedených v knize. Další příklad - klasický kurz strojového učení Andrew Nna, učil v Matlabu v prostředí Octave. Dnes byste si mohli vybrat jiný programovací jazyk, ale jaký je v tom skutečně rozdíl, pokud jsou myšlenky a přístupy důležité?

Praktičtější a blíže realitě

Zároveň je v posledních letech na univerzitách mnohem více odborníků z praxe. Jestliže dřívější ruské univerzitní programy byly aktivně kritizovány za odtržení od reality, dnes totéž nelze říci o IT vzdělávání. Před 10 lety nebyli na univerzitách téměř žádní učitelé se skutečnými průmyslovými zkušenostmi. V dnešní době stále častěji výuku na specializované katedře nevyučují učitelé informatiky na plný úvazek, ale praktikující IT specialisté, kteří ze své hlavní náplně vyučují ve svém volném čase pouze 1-2 kurzy. Tento přístup se ospravedlňuje z hlediska kvalitního školení personálu, aktualizací kurzů a samozřejmě vyhledávání potenciálních zaměstnanců ve firmě. Myslím, že neprozradím tajemství, když řeknu, že podporujeme základní oddělení na MIPT a budujeme vztahy s jinými univerzitami, mimo jiné za účelem přípravy studentů, kteří by mohli začít svou kariéru v Acronis.

Matematik nebo programátor?

Jak co nejlépe využít výuku informatiky
Svaté války, které se dříve točily kolem programovacích jazyků, se posunuly filozofickým směrem. Nyní se takzvaní „programátoři“ a „matematici“ mezi sebou dohadují. V zásadě by se tyto školy daly rozdělit do dvou vzdělávacích programů, ale průmysl je na oddělování takových jemností stále chudý a od univerzity k univerzitě máme podobné vzdělání s trochu jiným zaměřením. To znamená, že jak student, tak firma, ve které bude dále pracovat, budou muset doplnit skládačku znalostí o chybějící dílky.

Vznik odborníků z praxe na univerzitách, kteří píší průmyslový kód v různých jazycích, dává studentům lepší rozvojové dovednosti. Praktičtí programátoři, kteří jsou dobře obeznámeni s implementacemi standardních knihoven, frameworků a programovacích technik, vštěpují studentům touhu psát dobrý kód, dělat to rychle a efektivně.

Tato užitečná dovednost však někdy vede ke vzniku těch, kteří rádi znovu vynalézají kolo. Studenti programování uvažují takto: „Mám napsat dalších 200 řádků dobrého kódu, který problém vyřeší přímo?“

Učitelé, kteří získali klasické matematické vzdělání (např. z Fakulty matematiky nebo Aplikované matematiky), často pracují v pseudovědeckém prostředí nebo v oblasti modelování a analýzy dat. „Matematici“ vidí problémy v oblasti informatiky jinak. Primárně nepracují s kódem, ale s algoritmy, teorémy a formálními modely. Důležitou výhodou matematického přístupu je jasné základní pochopení toho, co lze a co nelze vyřešit. A jak to vyřešit.

Učitelé matematiky proto mluví o programování se zaujetím k teorii. Studenti, kteří pocházejí z řad „matematiků“, často přicházejí s dobře promyšlenými a teoreticky špičkovými řešeními, ale obvykle z lingvistického hlediska neoptimálními a často jednoduše nedbale napsanými. Takový student se domnívá, že jeho hlavním cílem je prokázat schopnost principiálně takové problémy řešit. Implementace ale možná pokulhává.

Děti, které vyrostly ve škole nebo v prvních letech jako programátoři, si s sebou přivezou „velmi krásné kolo“, které však většinou asymptoticky nefunguje příliš efektivně. Naopak si nekladou za úkol hluboce teoretizovat a obracet se při hledání optimálních řešení k učebnicím, preferovat krásný kód.

Na různých univerzitách při pohovorech se studenty obvykle vidím, která „škola“ je základem jeho vzdělání. A téměř nikdy jsem se nesetkal s dokonalou vyvážeností v základním vzdělávání. Jako dítě jste se v mém městě mohli připravovat na matematické olympiády, ale neexistovaly žádné kroužky programování. Nyní se děti v klubech učí programovat v „módním“ Go a Pythonu. Proto i na úrovni přijímání na vysoké školy existují rozdíly v přístupech. Domnívám se, že na vysoké škole je důležité udržet si obě dovednosti, jinak do firmy přijde buď specialista s nedostatečným teoretickým základem, nebo člověk, který se nenaučil a nechce psát dobrý kód.

Jak „napumpovat břevno“ pro budoucnost Specialisté ve tvaru T?

Jak co nejlépe využít výuku informatiky
Je jasné, že v takových podmínkách si student prostě vybere to, co má nejraději. Učitel prostě zprostředkuje úhel pohledu, který je mu bližší. Každému ale přijde vhod, když je kód napsaný krásně a z hlediska algoritmů je vše jasné, rozumné a efektivní.

  • IT obzory. Absolvent bakalářského oboru Informatika je hotový specialista s rozvinutým technickým rozhledem, který si pravděpodobně zvolil svůj profil. Ale v juniorském ročníku nevíme, co bude dělat. Může jít do vědy nebo analytiky, nebo naopak může každý den napsat obrovské množství kódu. Studentovi je proto potřeba ukázat všechny aspekty práce v IT oboru a seznámit ho se všemi nástroji. V ideálním případě učitelé z teoretických kurzů ukáží propojení s praxí (a naopak).
  • rostoucí bod. Je v zájmu samotného studenta, aby si nedovolil zacházet do extrémů. Pochopit, zda jste „matematik“ nebo „programátor“, není těžké. Při řešení problému stačí naslouchat prvnímu impulsu: co chcete dělat - podívat se do učebnice při hledání optimálního postupu nebo napsat pár funkcí, které se vám později určitě budou hodit? Na základě toho můžete sestavit další doplňkovou trajektorii svého učení.
  • Alternativní zdroje poznání. Stává se, že program je dobře vyvážený, ale „Programování systému“ a „Algoritmy“ vyučují úplně jiní lidé a někteří studenti jsou blíže prvnímu učiteli a jiní - druhému. Ale i když profesora nemáte rádi, není to důvod zanedbávat některé předměty ve prospěch jiných. Samotní bakaláři mají zájem najít vůli pracovat se zdroji znalostí a v žádném případě nevěřit radikálním názorům typu „matematika je královnou věd, hlavní je znát algoritmy“ nebo „dobrý kód kompenzuje vše ostatní“.

Své znalosti v teorii si můžete prohloubit pomocí odborné literatury a online kurzů. Své dovednosti v programovacích jazycích můžete zlepšit na Coursera, Udacity nebo Stepik, kde je prezentováno mnoho různých kurzů. Studenti také často začnou sledovat hardcore jazykové kurzy, pokud mají pocit, že učitel algoritmů zná matematiku dobře, ale nedokáže odpovědět na složité implementační otázky. Ne každý se mnou bude souhlasit, ale v mé praxi se to dobře osvědčilo specializace na C++ od společnosti Yandex, ve kterém jsou postupně analyzovány stále složitější rysy jazyka. Obecně si vyberte kurz s vysokým hodnocením od renomovaných společností nebo univerzit.

Jemné dovednosti

Jak co nejlépe využít výuku informatiky
Studenti dokonce i špičkových univerzit, kteří přišli z univerzity pracovat v jakékoli společnosti, od startupu po velkou společnost, nejsou dostatečně přizpůsobeni skutečnému pracovnímu prostředí. Faktem je, že dnes univerzity hodně „hlídají“ studenty. I poté, co zameškáte spoustu hodin, nepřipravíte se na testy a testy včas, zaspíte nebo přijdete pozdě na zkoušku, může ji každý složit a opakovat – a nakonec stejně dostane diplom.

Dnes jsou však všechny podmínky pro to, aby byli studenti připraveni na dospělý život a samostatnou profesní činnost. Budou muset nejen programovat, ale i komunikovat. A to je také potřeba naučit. Univerzity mají různé formáty pro rozvoj těchto dovedností, ale bohužel jim často není věnována dostatečná pozornost. Máme však mnoho příležitostí získat dovednosti efektivní týmové práce.

  • Písemná obchodní komunikace. Bohužel většina absolventů opouštějících vysokou školu nemá o korespondenční etiketě ani ponětí. Specifikem komunikace v instant messengerech je výměna zpráv ve dne v noci a používání konverzačního stylu a neformální slovní zásoby. Bylo by však možné trénovat písemný projev, kdy student komunikuje s katedrou a univerzitou.

    V praxi se manažeři často potýkají s nutností rozložit velký projekt na malé úkoly. Chcete-li to provést, musíte jasně popsat každý úkol a jeho součásti, aby mladší vývojáři pochopili, co se od nich vyžaduje. Špatně definovaný úkol často vede k nutnosti něco předělat, a proto zkušenosti v písemné komunikaci pomáhají absolventům pracovat v distribuovaných týmech.

  • Písemná prezentace výsledků vaší práce. Pro prezentaci svých vzdělávacích projektů mohou studenti vyšších ročníků psát příspěvky o Habrovi, vědecké články a také jen zprávy. Příležitostí k tomu je mnoho – na některých univerzitách začíná výuka již ve druhém ročníku. Jako formu kontroly můžete využít i eseje – většinou se formou blíží publicistickému článku. Tento přístup byl již implementován na Vysoké ekonomické škole National Research University.

    Pokud firma uplatňuje flexibilní přístup k rozvoji, musí výsledky své práce prezentovat v menších porcích, ale častěji. K tomu je důležité umět stručně zprostředkovat výsledky práce jednoho specialisty nebo celého týmu. Mnoho společností dnes také provádí „revize“ - roční nebo pololetní. Zaměstnanci diskutují o výsledcích a pracovních vyhlídkách. Úspěšná recenze je hlavním důvodem kariérního růstu, bonusy například v Microsoftu, Acronisu nebo Yandexu. Ano, programovat umíte dobře, ale „sedět v koutě“ i cool specialista vždy prohraje s někým, kdo umí svůj úspěch dobře prezentovat.

  • Akademické psaní. Zvláštní zmínku si zaslouží akademické psaní. Pro studenty je užitečné seznámit se s pravidly psaní odborných textů, používání argumentů, vyhledávání informací v různých zdrojích a formátování odkazů na tyto zdroje. Je vhodné to udělat v angličtině, protože v mezinárodní akademické komunitě existuje mnohem více dobrých textů a pro různé obory již existují zavedené šablony pro prezentaci vědeckých výsledků. Při přípravě ruskojazyčných publikací je samozřejmě zapotřebí i akademické psaní, ale příkladů dobrých moderních článků v angličtině je mnohem méně. Tyto dovednosti lze získat prostřednictvím vhodného kurzu, který je dnes součástí mnoha vzdělávacích programů.
  • Vedení porad. Většina studentů neví, jak se připravit na schůzky, dělat zápisy a zpracovávat data. Pokud ale tuto dovednost rozvíjíme na vysoké škole, například účastí na týmových projektech, můžeme se vyhnout plýtvání časem na pracovišti. To vyžaduje dohled nad projektovou prací studentů, abychom je naučili, jak efektivně vést porady. V praxi to stojí každou korporaci hodně peněz – když totiž několik lidí, kteří dostávají velký plat, stráví hodinu pracovní doby na shromáždění, chcete, aby z toho byla odpovídající návratnost.
  • Řečnictví. Mnoho studentů se potýká s potřebou veřejně vystupovat pouze při obhajobě diplomové práce. A ne každý je na to připraven. Viděl jsem mnoho studentů, kteří:
    • stát zády k publiku,
    • kymácející se, snažící se uvést komisi do transu,
    • zlomit pera, tužky a ukazovátka,
    • chodit v kruzích
    • podívejte se na podlahu.

    To je normální, když člověk vystupuje poprvé. S tímto stresem je ale potřeba začít pracovat dříve – obhájením ročníkové práce v přátelské atmosféře, mezi spolužáky.

    Kromě toho je standardní praxí v korporacích dát zaměstnanci příležitost navrhnout nápad a získat pro něj finanční prostředky, pozici nebo specializovaný projekt. Ale když se nad tím zamyslíte, je to stejná ochrana výuky, jen na vyšší úrovni. Proč si takové užitečné kariérní dovednosti neprocvičit při studiu?

O co jsem přišel?

Jedním z důvodů pro napsání tohoto příspěvku byl článek, zveřejněno na webu Tyumen State University. Autor článku se zaměřuje pouze na nedostatky ruských studentů, kterých si všimli zahraniční učitelé. Praxe mé výuky na různých univerzitách naznačuje, že ruská škola a vysokoškolské vzdělání poskytuje dobrý základ. Ruští studenti jsou důvtipní v matematice a algoritmech a je snazší s nimi navázat profesionální komunikaci.

V případě zahraničních studentů mohou být naopak očekávání učitele ruštiny někdy příliš vysoká. Například na úrovni základního výcviku z hlediska matematiky jsou indičtí studenti, které jsem potkal, podobní ruským. Po absolvování bakalářského studia jim však někdy chybí specializované znalosti. Dobří evropští studenti budou mít na školní úrovni pravděpodobně méně silné matematické znalosti.

A pokud studujete nebo pracujete na univerzitě, můžete nyní pracovat na komunikačních dovednostech (vlastních nebo vašich studentů), rozšířit si základní základnu a procvičit si programování. K tomuto účelu poskytuje ruský vzdělávací systém všechny příležitosti – stačí je jen správně využít.

Budu rád, když se v komentářích k příspěvku podělíte o své odkazy na kurzy a metody, které pomáhají vyrovnat rovnováhu ve vzdělávání, ale i další způsoby, jak zlepšit měkké dovednosti při studiu na vysoké škole.

Zdroj: www.habr.com

Přidat komentář