Hogyan hozzuk ki a legtöbbet a számítástechnikai oktatásból

A legtöbb modern programozó egyetemeken szerezte tanulmányait. Idővel ez változni fog, de ma már úgy alakulnak a dolgok, hogy az informatikai cégeknél még mindig egyetemekről érkeznek jó személyzet. Ebben a bejegyzésben Stanislav Protasov, az Acronis Egyetemi Kapcsolatok igazgatója a jövőbeli programozók egyetemi képzésének jellemzőiről alkotott elképzeléséről beszél. A tanárok, a diákok és az őket alkalmazók még hasznos tippeket is találhatnak a cikk alatt.

Hogyan hozzuk ki a legtöbbet a számítástechnikai oktatásból

Az elmúlt 10 évben matematikát, algoritmusokat, programozási nyelveket és gépi tanulást tanítok különböző egyetemeken. Ma az Acronisnál betöltött pozícióm mellett a MIPT elméleti és alkalmazott számítástechnikai tanszékének helyettes vezetője is vagyok. Jó orosz (és nem csak) egyetemeken szerzett tapasztalataim alapján néhány megfigyelést tettem a hallgatók számítástechnikai tudományokra való felkészítésével kapcsolatban.

A 30 másodperces szabály már nem működik

Biztosan találkoztál már a 30 másodperces szabállyal, amely kimondja, hogy a programozónak meg kell értenie egy függvény célját, miután egy gyors pillantást vet a kódjára. Nagyon régen találták fel, azóta számos operációs rendszer, nyelv, hardver és algoritmus jelent meg. 12 éve írok kódot, de viszonylag nemrég láttam meg egy termék forráskódját, ami első pillantásra varázsigéknek tűnt számomra. Ma, ha nem merül el a témakörben, akkor a 30 másodperces szabály nem működik. Ellenkező esetben nem csak 30, hanem 300 másodperc sem lesz elég ahhoz, hogy rájöjjön, mi az.

Ha például illesztőprogramokat szeretne írni, akkor el kell merülnie ezen a területen, és több ezer sornyi konkrét kódot kell olvasnia. A tantárgy tanulmányozásának ezzel a megközelítésével a szakember kialakítja az „áramlás érzését”. Mint a rapben, amikor különösebb racionalizálás nélkül megjelenik a jó rím és a megfelelő ritmus érzése. Hasonlóképpen, egy jól képzett programozó könnyen felismeri a nem hatékony vagy egyszerűen rossz kódot anélkül, hogy részletesen megvizsgálná, hol fordult elő stílussértés vagy szuboptimális megközelítést alkalmaztak (de ezt az érzést nagyon nehéz megmagyarázni).

A specializáció és a növekvő komplexitás oda vezet, hogy az alapképzés már nem ad lehetőséget minden terület kellő mélységű tanulmányozására. De pontosan ezen az oktatási szinten kell egy szemléletet elsajátítani. Utána a posztgraduális iskolában vagy a munkahelyen el kell töltenie egy kis időt a témakör problémáiban és sajátosságaiban való elmélyüléssel, a szleng, a programozási nyelvek és a kollégák kódjának tanulmányozásával, cikkek és könyvek olvasásával. Úgy tűnik számomra, hogy az egyetem segítségével csak így lehet „felpumpálni a keresztlécet” a jövőre nézve. T alakú szakemberek.

Milyen programozási nyelvet a legjobb az egyetemen tanítani?

Hogyan hozzuk ki a legtöbbet a számítástechnikai oktatásból
Örömömre az egyetemi tanárok már feladták a helyes válasz keresését a következő kérdésre: „Mi a legjobb nyelv a programozáshoz?” A vita arról, hogy melyik a jobb - C# vagy Java, Delphi vagy C++ - gyakorlatilag megszűnt. Számos új programozási nyelv megjelenése és a pedagógiai tapasztalatok felhalmozódása az akadémiai környezetben kialakult megértéshez vezetett: minden nyelvnek megvan a maga rése.

Az egyik vagy másik programozási nyelv oktatásának problémája megszűnt prioritásként kezelni. Nem mindegy, hogy milyen nyelven folyik a kurzus. A lényeg a nyelv megfelelő kifejezőképessége. Könyv "A többprocesszoros programozás művészete” jól illusztrálja ezt a megfigyelést. Ebben az immár klasszikus kiadásban minden példa Java nyelven jelenik meg – egy mutató nélküli nyelven, de a Garbage Collectorral. Aligha vitatná valaki, hogy a Java messze nem az optimális választás a nagy teljesítményű párhuzamos kódok írásához. De a nyelvezet alkalmas volt a könyvben bemutatott fogalmak magyarázatára. Egy másik példa - klasszikus gépi tanulási tanfolyam Andrew Nna, Matlabban tanított Octave környezetben. Manapság választhat egy másik programozási nyelvet, de mit jelent valójában, ha az ötletek és megközelítések fontosak?

Praktikusabb és közelebb áll a valósághoz

Ugyanakkor az elmúlt években sokkal több gyakorló volt az egyetemeken. Ha korábban az orosz egyetemi programokat aktívan kritizálták a valóságtól való elszakadás miatt, ma már ez nem mondható el az informatikai oktatásról. 10 évvel ezelőtt még szinte nem voltak valódi iparági tapasztalattal rendelkező tanárok az egyetemeken. Napjainkban egyre gyakrabban a szakosított tanszéki órákat nem főállású informatika tanárok tartják, hanem gyakorló informatikusok, akik a fő munkájukból szabadidejükben csak 1-2 kurzust tartanak. Ez a megközelítés kifizetődő a magas színvonalú személyzeti képzés, a felfrissítő tanfolyamok és természetesen a potenciális munkatársak felkutatása szempontjából a vállalatnál. Nem hiszem, hogy elárulom a titkot azzal, hogy támogatjuk a MIPT alapszakát, és kapcsolatokat építünk ki más egyetemekkel, többek között azért, hogy felkészítsük azokat a hallgatókat, akik az Acronisnál kezdhetik pályafutásukat.

Matematikus vagy programozó?

Hogyan hozzuk ki a legtöbbet a számítástechnikai oktatásból
A szent háborúk, amelyek korábban a programnyelvek körül forogtak, filozófiai irányba mozdultak el. Most az úgynevezett „programozók” és „matematikusok” vitatkoznak egymással. Elvileg ezeket az iskolákat két oktatási programra lehetne szétválasztani, de az ipar még mindig szegényes az ilyen finomságok szétválasztásában, és egyetemről egyetemre hasonló oktatásban részesülünk, kicsit más fókuszban. Ez azt jelenti, hogy mind a hallgatónak, mind a cégnek, amelyben tovább dolgozik, ki kell egészítenie a hiányzó darabokkal a tudásrejtvényt.

Az egyetemeken olyan gyakorló szakemberek megjelenése, akik különböző nyelveken írnak ipari kódokat, jobb fejlesztési készségeket ad a hallgatóknak. Mivel jól ismerik a szabványos könyvtárak, keretrendszerek és programozási technikák implementációit, a gyakorló programozók elsajátítják a tanulókban azt a vágyat, hogy jó kódot írjanak, hogy azt gyorsan és hatékonyan végezzék.

Ez a hasznos készség azonban néha olyanok megjelenéséhez vezet, akik szeretik újra feltalálni a kereket. A programozó diákok így gondolkodnak: „Írjak még 200 sornyi jó kódot, amely azonnal megoldja a problémát?”

Azok a tanárok, akik klasszikus matematikai végzettséget szereztek (például a matematika vagy az alkalmazott matematika karán), gyakran áltudományos környezetben, vagy modellezés és adatelemzés területén dolgoznak. A „matematikusok” másként látják a számítástechnika területén felmerülő problémákat. Elsősorban nem kóddal, hanem algoritmusokkal, tételekkel és formális modellekkel operálnak. A matematikai megközelítés egyik fontos előnye, hogy világosan megértjük, mit lehet és mit nem lehet megoldani. És hogyan lehet megoldani.

Ennek megfelelően a matematikatanárok az elmélet iránti elfogultsággal beszélnek a programozásról. A „matematikusoktól” érkező hallgatók gyakran átgondolt és elméletileg jobb megoldásokkal állnak elő, de nyelvi szempontból általában nem optimálisak, és gyakran egyszerűen hanyagul megírva. Egy ilyen diák úgy véli, hogy fő célja az ilyen problémák elvi megoldására való képesség bemutatása. De a megvalósítás sántíthat.

Az iskolában vagy az első éveiben programozóként nevelkedett gyerekek egy „nagyon szép biciklit” visznek magukkal, ami azonban általában nem működik túl hatékonyan tünetmentesen. Ellenkezőleg, nem tűzik ki maguk elé azt a feladatot, hogy elmélyülten gondolkodjanak és a tankönyvekhez lapozzanak optimális megoldásokat keresve, a szép kódot részesítve előnyben.

Különböző egyetemeken a hallgatói interjúk során általában azt látom, hogy melyik „iskola” képezi a képzése alapját. Az alapoktatásban pedig szinte soha nem találkoztam tökéletes egyensúlyozással. Gyerekként az én városomban lehetett készülni matematikai olimpiára, de nem voltak programozóklubok. Most a klubokban a gyerekek megtanulnak programozni „divatos” Go és Python nyelven. Ezért még az egyetemekre való felvétel szintjén is vannak megközelítési különbségek. Úgy gondolom, hogy az egyetemen mindkét készség megőrzése fontos, különben vagy egy elégtelen elméleti alappal rendelkező szakember, vagy olyan ember érkezik a céghez, aki nem tanult és nem akar jó kódot írni.

Hogyan lehet „felpumpálni a keresztlécet” a jövőre nézve T alakú szakemberek?

Hogyan hozzuk ki a legtöbbet a számítástechnikai oktatásból
Nyilvánvaló, hogy ilyen körülmények között a diák egyszerűen azt választja, ami neki a legjobban tetszik. A tanár egyszerűen a hozzá közelebb álló nézőpontot közvetíti. De mindenkinek jól jön, ha a kód szépen meg van írva, és az algoritmusok szempontjából minden világos, ésszerű és hatékony.

  • IT horizontok. A számítástechnika szakos alapképzést végzett, felkészült szakember, fejlett műszaki kitekintéssel, aki valószínűleg a profilját választotta. De a junior évben nem tudjuk, mit fog csinálni. Elmehet a tudományba vagy az analitikába, vagy éppen ellenkezőleg, naponta hatalmas mennyiségű kódot tud írni. Ezért a hallgatónak meg kell mutatni az IT területen végzett munka minden aspektusát, és meg kell ismertetni az összes eszközzel. Ideális esetben az elméleti kurzusok tanárai kapcsolatot mutatnak a gyakorlattal (és fordítva).
  • Növekedési pont. Magának a diáknak az az érdeke, hogy ne engedje meg magának a túlzásokba esést. Nem nehéz megérteni, hogy Ön „matematikus” vagy „programozó”. Elég meghallgatni az első impulzust a probléma megoldása során: mit szeretne tenni - nézzen bele a tankönyvbe, hogy megtalálja az optimális megközelítést, vagy írjon néhány olyan funkciót, amelyek később biztosan hasznosak lesznek? Ez alapján építheti fel tanulásának további kiegészítő pályáját.
  • Alternatív tudásforrások. Előfordul, hogy a program jól kiegyensúlyozott, de a „Rendszerprogramozást” és az „Algoritmusokat” teljesen más emberek tanítják, és néhány diák közelebb áll az első tanárhoz, mások pedig a másodikhoz. De még ha nem is szereti a professzort, ez nem ok arra, hogy elhanyagoljon egyes tárgyakat mások javára. Magukat a bachelorokat érdekli, hogy megtalálják a tudásforrásokkal való munkára való hajlandóságot, és semmi esetre se bízzanak olyan radikális véleményekben, mint „a matematika a tudományok királynője, a lényeg, hogy ismerjük az algoritmusokat” vagy „a jó kód minden mást kompenzál”.

Elméleti ismereteit a szakirodalom és az online tanfolyamok segítségével mélyítheti el. Fejlesztheti programozási nyelvi készségeit a Coursera, az Udacity vagy a Stepik oldalakon, ahol számos különböző tanfolyamot mutatnak be. A hallgatók gyakran elkezdenek kemény nyelvtanfolyamokat nézni, ha úgy érzik, hogy az algoritmusok tanára jól ismeri a matematikát, de nem tud válaszolni bonyolult implementációs kérdésekre. Nem mindenki fog egyetérteni velem, de az én gyakorlatomban ez jól bevált C++ specializáció a Yandextől, amelyben a nyelv egyre összetettebb sajátosságait elemezzük egymás után. Általában válasszon olyan kurzust, amely jó minősítésű cégektől vagy egyetemektől származik.

Lágy készségek

Hogyan hozzuk ki a legtöbbet a számítástechnikai oktatásból
Az egyetemről bármely vállalathoz, startuptól egy nagyvállalatig dolgozva még a legjobb egyetemek hallgatói is rosszul alkalmazkodnak a valós munkakörnyezethez. Az a tény, hogy manapság az egyetemek sokat „babysitnak” a hallgatóknak. Sok órányi hiányzás, a vizsgákra, vizsgákra nem időben történő felkészülés, túlalvás, vagy egy vizsgáról való elkésés után is mindenki átmehet és újra felveheti – és a végén még kap egy oklevelet.

Mára azonban minden feltétel adott ahhoz, hogy a tanulók felkészüljenek a felnőtt életre és az önálló szakmai tevékenységre. Nemcsak programozniuk kell, hanem kommunikálni is. És ezt is meg kell tanítani. Az egyetemek különféle formátumokkal rendelkeznek ezen készségek fejlesztésére, de sajnos gyakran nem fordítanak rájuk kellő figyelmet. Azonban számos lehetőségünk van a hatékony csapatmunka képességeinek elsajátítására.

  • Írásbeli üzleti kommunikáció. Sajnos az egyetemet elhagyó diplomások többségének fogalma sincs a levelezési etikettről. Az azonnali üzenetküldők kommunikációjának sajátossága az éjjel-nappali üzenetváltás, a társalgási stílus és az informális szókincs használata. Lehetőség lenne azonban az írásbeli beszéd képzésére, amikor a hallgató kommunikál a tanszékkel és az egyetemmel.

    A gyakorlatban a vezetők gyakran szembesülnek azzal, hogy egy nagy projektet apró feladatokra kell bontani. Ehhez világosan le kell írnia az egyes feladatokat és összetevőit, hogy a junior fejlesztők megértsék, mit várnak el tőlük. A rosszul meghatározott feladat gyakran azt eredményezi, hogy valamit újra kell csinálni, ezért az írásbeli kommunikációban szerzett tapasztalat segíti a végzettek elosztott csapatokban való munkát.

  • Munkája eredményének írásos bemutatása. Oktatási projektjeik bemutatására a felső tagozatos hallgatók bejegyzéseket írhatnak a Habrról, tudományos cikkeket és csak jelentéseket. Számos lehetőség kínálkozik erre – egyes egyetemeken a tanfolyami munka a második évben kezdődik. Az esszéket ellenőrzési formaként is használhatja – általában formájukban közelebb állnak az újságírói cikkekhez. Ezt a megközelítést már a Nemzeti Kutatóegyetem Közgazdaságtudományi Felsőiskolájában is megvalósították.

    Ha egy vállalat rugalmas fejlesztési megközelítést alkalmaz, akkor kisebb részletekben, de gyakrabban kell bemutatnia munkája eredményét. Ehhez fontos, hogy egy szakember vagy az egész csapat munkájának eredményeit röviden át lehessen közvetíteni. Ezenkívül sok vállalat manapság „felülvizsgálatot” végez - évente vagy félévente. Az alkalmazottak megbeszélik az eredményeket és a munkalehetőségeket. A sikeres áttekintés a karrier növekedésének, a bónuszoknak a fő oka például a Microsoft, az Acronis vagy a Yandex esetében. Igen, jól tudsz programozni, de a „sarokban ülve” még egy menő szakember is mindig veszít annak, aki tudja, hogyan kell jól bemutatni a sikerét.

  • Tudományos írás. Külön említést érdemel a tudományos írás. Hasznos, ha a tanulók megismerkednek a tudományos szövegírás szabályaival, az érvelések felhasználásával, a különféle forrásokban való információkereséssel, az ezekre a forrásokra való hivatkozások formázásával. Célszerű ezt angolul megtenni, mivel a nemzetközi akadémiai közösségben sokkal több jó szöveg található, és a különböző tudományterületekhez már kialakult sablonok vannak a tudományos eredmények bemutatására. Természetesen az akadémiai íráskészségre is szükség van az orosz nyelvű kiadványok elkészítésekor, de jóval kevesebb példa van angol nyelvű modern cikkekre. Ezeket a készségeket egy megfelelő tanfolyamon lehet elsajátítani, amely ma már számos oktatási programban szerepel.
  • Találkozók vezetése. A legtöbb diák nem tudja, hogyan készüljön fel az értekezletekre, hogyan készítsen jegyzőkönyvet és hogyan dolgozza fel az adatokat. De ha ezt a készséget az egyetemen fejlesztjük, például csapatprojektekben való részvétellel, elkerülhetjük a munkahelyi időveszteséget. Ez megköveteli a hallgatók projektmunkájának felügyeletét annak érdekében, hogy megtanítsák őket a találkozók hatékony lebonyolítására. A gyakorlatban ez minden vállalatnak sok pénzbe kerül – elvégre, ha többen, akik nagy fizetést kapnak, egy óra munkaidőt töltenek egy gyűlésen, azt szeretné, ha ennek megfelelő megtérülése lenne.
  • Nyilvános beszéd. Sok diák csak a szakdolgozat megvédése közben szembesül azzal, hogy nyilvánosan beszélnie kell. És nem mindenki áll készen erre. Sok diákot láttam, aki:
    • háttal állni a közönségnek,
    • imbolyogva próbálja bevezetni a bizottságot a transzba,
    • tollak, ceruzák és mutatók törése,
    • körben járva
    • nézd a padlót.

    Ez normális, amikor egy személy először lép fel. De korábban el kell kezdenie ezzel a stresszel dolgozni – úgy, hogy barátságos légkörben, osztálytársai között megvédi a kurzusát.

    Ezen túlmenően a vállalatoknál bevett gyakorlat az, hogy lehetőséget adnak egy alkalmazottnak, hogy javaslatot tegyen egy ötlettel, és ehhez finanszírozást, pozíciót vagy dedikált projektet kapjon. De ha belegondolunk, ez a tanfolyam ugyanolyan védelme, csak magasabb szinten. Miért ne gyakorolhatna ilyen hasznos karrierkészségeket tanulás közben?

Mit hagytam ki?

A bejegyzés megírásának egyik oka az volt, hogy megjelent a Tyumen Állami Egyetem honlapján. A cikk szerzője csak az orosz diákok külföldi tanárok által észlelt hiányosságaira összpontosít. A különböző egyetemeken folytatott tanítási gyakorlatom azt sugallja, hogy az orosz iskola és felsőoktatás jó alapot biztosít. Az orosz diákok értettek a matematikához és az algoritmusokhoz, és könnyebb velük professzionális kommunikációt kialakítani.

A külföldi hallgatók esetében éppen ellenkezőleg, az orosz tanárokkal szembeni elvárások néha túl magasak lehetnek. Például a matematika alapképzésének szintjén az általam megismert indiai diákok hasonlóak az oroszokhoz. Azonban időnként hiányzik belőlük a speciális tudás, amikor befejezik az alapképzést. A jó európai tanulók iskolai szinten valószínűleg kevésbé erős matematikai háttérrel rendelkeznek.

Ha pedig egyetemen tanulsz vagy dolgozol, akkor mostantól kommunikációs készségeidet fejlesztheted (saját vagy hallgatóiddal), bővítheted alapvető bázisodat és gyakorolhatod a programozást. Erre a célra az orosz oktatási rendszer minden lehetőséget biztosít - csak helyesen kell használni őket.

Örülök, ha a bejegyzéshez fűzött megjegyzésekben megosztja linkjeit olyan kurzusokhoz és módszerekhez, amelyek segítenek kiegyenlíteni az egyensúlyt az oktatásban, valamint más módszereket, amelyekkel egyetemi tanulmányok közben javíthatják a soft skilleket.

Forrás: will.com

Hozzászólás