Hogyan hozhatunk ki a legtöbbet a Computer Science oktatásból

A modern programozók többsége egyetemeken szerezte meg a képzését. Ez idővel változni fog, de jelenleg a helyzet az, hogy a jó munkaerő az IT cégeknél még mindig az egyetemekről érkezik. Ebben a bejegyzésben Sztanyiszlav Protasov, az Acronis egyetemi kapcsolatokért felelős igazgatója a jövő programozóinak egyetemi képzéséről osztja meg a nézeteit. A tanárok, diákok és a munkáltatók egyaránt találhatnak néhány hasznos tanácsot a kattintás után.

Hogyan hozhatunk ki a legtöbbet a Computer Science oktatásból

Az utolsó 10 évben matematikát, algoritmusokat, programozási nyelveket és gépi tanulást tanítok különböző egyetemeken. Ma az Acronis-ban betöltött pozícióm mellett az MFTI Elméleti és Alkalmazott Informatikai Tanszékének helyettes vezetője is vagyok. A jó orosz (és nem csak) egyetemeken szerzett tapasztalataimból néhány megfigyelést vontam le a számítástechnikai tárgyakra való felkészítésről.

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

Biztos vagyok benne, hogy Ön is találkozott a 30 másodperces szabállyal, amely azt mondja, hogy a programozónak egy gyors pillantás után meg kell értenie egy funkció célját a kódján. Ezt régen találták ki, azóta számos operációs rendszer, nyelv, hardver és algoritmus jelent meg. Már 12 éve írok kódot, de viszonylag nemrégiben láttam egy termék forráskódját, amely első ránézésre varázslatos varázsigáknak tűnt. Ma, ha nem vagyunk elmerülve a szakterületben, a 30 másodperces szabály már nem működik. Ellenkező esetben nemcsak 30, hanem 300 másodperc sem elég, hogy megértsük, mi micsoda.

Például, ha meghajtókat szeretnél írni, bele kell merülnöd ebbe a területbe, és el kell olvasnod ezer sor specifikus kódot. Ezzel a megközelítéssel a szakember „flow”-érzést tapasztalhat. Akárcsak a rapben, amikor a jó rím és a helyes ritmus érzése speciális racionalizálás nélkül is megjelenik. Hasonlóképpen, egy jól képzett programozó könnyen felismerheti a hatástalan vagy egyszerűen rossz kódot anélkül, hogy részletesen megértené, hol történt a stílus megsértése vagy hol használtak nem optimális megoldást (de ezt az érzést elmagyarázni meglehetősen nehéz lehet).

A specializáció és a növekvő összetettség miatt a bachelor diploma már nem ad lehetőséget arra, hogy minden irányzatot kellően mélyen megismerjünk. De éppen ezen a képzési szinten kell szélesebb látókörre szert tenni. Később, a mesterszakon vagy a munkahelyen bizonyos időt kell majd szentelni a problémák és a szakterület sajátosságainak megértésére, a szleng, a programozási nyelvek és a kollégák kódjának tanulmányozására, cikkek és könyvek olvasására. Szerintem csak így tud a szakszerű egyetem a jövőbeni sikerhez „emelni azon a lécen”. T-alakú szakértők.

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

Hogyan hozhatunk ki a legtöbbet a Computer Science oktatásból
Örömmel tapasztalom, hogy az egyetemi oktatók már felhagytak azzal, hogy a kérdésre keressenek helyes választ: „Mivel érdemes programozni?”. A viták arról, hogy mi a jobb — C# vagy Java, Delphi vagy C++ — gyakorlatilag megszűntek. Az új programozási nyelvek megjelenése és a pedagógiai tapasztalatok felhalmozódása arra vezetett, hogy az akadémiai környezetben megszilárdult a megértés, hogy minden nyelvnek megvan a maga helye.

A programozási nyelv használatával kapcsolatos oktatási probléma már nem elsődleges. Nem számít, hogy milyen nyelven zajlik a kurzus. A fő dolog a nyelv megfelelő kifejezőképessége.A Multiprocessor Programming Művészete— jó illusztrációja ennek a megfigyelésnek. Ebben a már klasszikussá vált kiadásban az összes példa Java nyelven van bemutatva — egy olyan nyelven, amely nem használ mutatókat, de rendelkezik Garbage Collectorral. Aligha fog bárki vitatkozni azzal, hogy a Java messze van az optimális választástól a nagy teljesítményű párhuzamos kód írása során. De a könyvben bemutatott koncepciók magyarázatához a nyelv megfelelőnek bizonyult. Egy másik példa — a klasszikus gépi tanulási kurzus Andrew Ng-től, amelyet Matlab nyelven tanítanak az Octave környezetében. Ma már választhatnánk egy másik programozási nyelvet, de valójában mi a különbség, ha az ötletek és megközelítések fontosak?

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

Ugyanakkor az utóbbi években sokkal több gyakorló szakember került az egyetemekre. Ha korábban a orosz felsőoktatási programokat kritikával illették, hogy el vannak szakadva a valóságtól, ma már ezt nem lehet elmondani az IT-oktatásról. 10 évvel ezelőtt az egyetemeken szinte nem voltak olyan tanárok, akik valódi ipari tapasztalattal rendelkeztek. Ma egyre gyakrabban a szakmai tanszéken nem a számítástudomány oktatói, hanem gyakorló IT-szakemberek tartják az órákat, akik csak 1-2 kurzust tartanak fő munkájuk mellett. Ez a megközelítés indokolt a munkaerő minőségi képzése, a kurzusok aktualizálása és természetesen a potenciális alkalmazottak keresése szempontjából. Nem hiszem, hogy titkot árulok el, ha elmondom, hogy támogatjuk a MFTI alapvető tanszékét, és kapcsolatokat építünk más egyetemekkel is, hogy olyan hallgatókat készítsünk fel, akik elindíthatják karrierjüket az Acronis-nál.

Matematikus vagy programozó?

Hogyan hozhatunk ki a legtöbbet a Computer Science oktatásból
A polémák, amelyek korábban a programozási nyelvek körül zajlottak, filozófiai irányba fordultak. Most a feltételes "programozók" és "matematikai szakemberek" vitáznak egymással. Ezek az iskolák alapvetően két külön oktatási programra is elkülönülhetnének, de az ipar még mindig gyengén osztja fel az ilyen finomságokat, és egyetemtől függően hasonló képzést tapasztalunk, kissé eltérő hangsúlyokkal. Ezért a diáknak és annak a cégnek, ahol dolgozni fog, ki kell egészítenie tudását a hiányzó puzzle-darabokkal.

A gyakorlatban dolgozó szakemberek megjelenése az egyetemeken, akik különböző nyelveken ipari kódot írnak, jobb fejlesztési készséget ad a hallgatóknak. Azáltal, hogy jól ismerik a standard könyvtárak implementálását, keretrendszereket és programozási technikákat, a gyakorló programozók arra törekednek, hogy jó kódot írjanak, és ezt gyorsan és minőségben végezzék el.

Ez a hasznos készség ugyanakkor néha a kerék feltalálásának kedvelőit eredményezi. A programozó hallgatók azt gondolják: "Miért ne írnék még 200 sor jó kódot, ami közvetlenül megoldja a feladatot?"

A klasszikus matematikai képzésben részesült tanárok (például matematikai fakultás vagy alkalmazott matematika) gyakrabban dolgoznak tudományos környezetben, vagy az adatelemzés és modellezés területén. A „matematikusok” másként látják a számítástechnika problémáit. Elsősorban nem a kóddal, hanem algoritmusokkal, tételekkel és formális modellekkel dolgoznak. A matematikai megközelítés fontos előnye, hogy világosan megértik, mi az, amit meg lehet oldani, és mi az, amit nem lehet, valamint hogyan kell ezt megoldani.

Ennek megfelelően a matematikai pedagógusok a programozásról a teória felé hajló szemlélettel beszélnek. Azok a hallgatók, akik „matematikusoktól” érkeznek, gyakran jól megfontolt, elméletileg tökéletesebb megoldásokat javasolnak, de általában nem optimálisak a nyelvi szempontok alapján, és sokszor egyszerűen pontatlanul vannak megírva. Az ilyen hallgató úgy véli, hogy a fő célja az, hogy bizonyítsa, képes hasonló feladatokat megoldani. A megvalósítás viszont akadozhat.

Azok a fiatalok, akiket az iskolában vagy az első években programozók neveltek, „nagyon szép kerékpárt” hozzák magukkal, amely azonban általában nem működik hatékonyan aszimptotikusan. Ők éppen ellenkezőleg, nem tűzik ki célul, hogy mélyen elméletben gondolkodjanak és tankönyveket keressenek optimális megoldásokért, hanem a szép kódra helyezik a hangsúlyt.

Különböző egyetemeken a hallgatók interjúi során általában látom, hogy milyen „iskola” áll a képzésük mögött. Szinte sosem találkoztam tökéletes egyensúllyal az alapoktatásban. Gyerekkoromban a városomban volt lehetőség olimpiai matematikára készülni, de programozási szakkörök nem léteztek. Most már a szakkörökben a gyerekek a „divatos” Go és Python nyelveken tanulnak programozni. Ezért már az egyetemre való bejutás szintjén eltérések vannak a megközelítésekben. Szerintem az egyetemen fontos mindkét készséget fenntartani, különben a céghez olyan szakember érkezik, akinek nincs megfelelő elméleti háttere, vagy olyan ember, aki nem tanulta meg és nem szeretne jó kódot írni.

Hogyan lehet „fejleszteni a húzódzkodást” a jövőbeli T-alakú szakemberek számára?

Hogyan hozhatunk ki a legtöbbet a Computer Science 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 pedig csak azt a nézőpontot közvetíti, amely közelebb áll hozzá. De mindenki nyer, ha a kód szépen van megírva, és az algoritmusok szempontjából minden világos, indokolt és hatékony.

  • IT-látókör. A Computer Science alapképzés végzőse már egy kész szakember, aki fejlett műszaki látókörrel rendelkezik, aki valószínűleg már választott magának profilját. De az alsóbb éveseknél nem tudjuk, mivel fogják foglalkozni. Lehet, hogy a tudományban vagy az elemzésben találják meg a helyüket, de akár naponta rengeteg kódot is írhatnak. Ezért a diáknak meg kell mutatni az IT szféra munkájának minden aspektusát, megismertetve őt minden eszközzel. Ideális lenne, ha az elméleti kurzusok tanárai is bemutatnák a gyakorlat és az elmélet összefüggését (és fordítva).
  • Növekedési pont. Meg kell akadályozni, hogy a diák szélsőségekbe csapjon át — ez a diák érdeke. Megérteni, hogy „matematikus” vagy „programozó” vagy, nem nehéz. Elég, ha figyelmesen hallgatod az első impulzusodat a feladat megoldásakor: mit szeretnél csinálni — belefülelni a tankönyvbe a legoptimálisabb megoldás keresése érdekében, vagy pár funkciót írni, amelyek később biztosan hasznosak lesznek? Ebből kiindulva építheted tovább az oktatásod kiegészítő útvonalát.
  • Alternatív tudásforrások. Előfordul, hogy a program jól van balanszírozva, de a „Rendszerszintű programozás” és az „Algoritmusok” teljesen eltérő emberek vezetik, és egyes diákok közelebb állnak az első tanárhoz, mások pedig a másodikhoz. De még ha nem is kedveled a professzort, ez nem ok arra, hogy elhanyagold az egyik tantárgyat a másik javára. A hallgatók maguk is érdekelték abban, hogy erőt találjanak a tudásforrásokkal való munkához, és semmiképp ne bízzanak radikális véleményekben, mint például „a matematika a tudományok királynője, a legfontosabb az algoritmusok ismerete” vagy „a jó kód mindent kompenzál”.

A tudás elméleti elmélyítéséhez érdemes szakirodalmat és online kurzusokat keresni. A programozási nyelvek ismeretét a Courserán, Udacity-n vagy Stepiken fejleszthetjük, ahol számos különböző kurzus érhető el. A hallgatók gyakran hardcore nyelvi kurzusokat kezdenek nézni, ha érzik, hogy az algoritmusok oktatója jól ismeri a matematikát, de nem tud válaszolni a megvalósítás terén felmerülő bonyolult kérdésekre. Nem mindenki ért velem egyet, de a gyakorlatomban jól bevált C++ specializáció a Yandextől, amely sorra veszi a nyelv egyre bonyolultabb jellemzőit. Összességében válassz magas értékeléssel rendelkező kurzust, tekintélyes cégektől vagy egyetemektől.

Soft skillek

Hogyan hozhatunk ki a legtöbbet a Computer Science oktatásból
A főiskoláról munkába lépve bármely vállalatnál, a startupoktól a nagyvállalatokig, még a legjobban teljesítő egyetemek hallgatói is rosszul alkalmazkodnak a valós munkakörnyezethez. Ennek az az oka, hogy a mai egyetemeken sokkal inkább "babusgatják" a diákokat. Még ha sok tantárgyat is kihagynak, nem készülnek fel időben a dolgozatokra és vizsgákra, vagy késnek az időpontokról, akkor is át tudják menni a vizsgát és újra meg újra meg tudják csinálni — végül mégis csak diplomát szereznek.

Mindazonáltal ma minden adott ahhoz, hogy a diákokat felkészítsék a felnőtt életre és a független szakmai tevékenységre. Nemcsak programozniuk kell, hanem kommunikálniuk is. Ezt is tanítani kell. Az egyetemeken különböző formátumú képzések léteznek ezeknek a készségeknek a fejlesztésére, de sajnos gyakran nem kapnak elegendő figyelmet. Mindazonáltal számos lehetőség áll rendelkezésünkre a csapatban való hatékony munkavégzés készségeinek elsajátítására.

  • Írásbeli üzleti kommunikáció. Sajnos a legtöbb szakember a főiskola végén nem rendelkezik írásbeli etikett ismeretekkel. A messengerek közötti kommunikáció sajátosságai, az üzenetek váltakozása éjjel és nappal, illetve a beszélt stílus és a laza lexika használata. Azonban az írásbeli kommunikációt a diák és a tanszék, valamint az egyetem közötti interakciók során lehetne gyakorolni.

    A gyakorlatban a menedzserek gyakran szembesülnek azzal, hogy egy nagy projektet kisebb feladatokra kell lebontani. Ehhez jól kell megfogalmazni minden egyes feladatot és annak összetevőit, hogy a junior fejlesztők megértsék, mit várnak el tőlük. Rosszul megfogalmazott feladat gyakran vezet ahhoz, hogy valamit újra kell csinálni, ezért a jó írásbeli kommunikációs készség segít a diplomásoknak a távoli csapatokban való munkavégzésben.

  • A munkájuk eredményeinek írásos bemutatása. A diplomások a tanulmányi projektjeik bemutatására posztokat írhatnak a Habr-ra, tudományos cikkeket, valamint egyszerű jelentéseket. Számos lehetőség van erre — már a második évben néhány egyetemen elkezdődnek a kurzusmunkák. Az esszék szintén használhatók ellenőrzési formaként — azok általában formájukban közelebb állnak a közéleti cikkekhez. Ez a megközelítés már megvalósult a HSE-n.

    Ha egy vállalat rugalmas megközelítést alkalmaz a fejlesztésben, a munkájának eredményeit kisebb részekben, de gyakrabban kell bemutatni. Ehhez fontos, hogy tudni kell röviden kommunikálni egy szakember vagy az egész csapat munkájának eredményét. Ma számos cégnél tartanak “értékeléseket” — éves vagy féléves találkozókat. Az alkalmazottak megvitatják a munkájuk eredményeit és kilátásait. A sikeres értékelés a karrier előrehaladásának, prémiumoknak, például a Microsoftnál, Acronisnál vagy a Yandexnál a fő oka. Igen, lehet, hogy jól programozol, de aki

  • Akadémiai írás. Külön említést érdemel az akadémiai írás. Hasznos, ha a diákok megismerkednek a tudományos szövegek írásának szabályaival, érvek használatával, információk keresésével különböző forrásokban és a hivatkozások formázásával. Tanácsos ezt angol nyelven tenni, 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ányágakhoz már kialakultak a tudományos eredmények bemutatásának mintái. Természetesen az akadémiai írás készségei szükségesek a magyar nyelvű publikációk előkészítésekor is, de jó, modern angol cikkekből sokkal kevesebb a példa. Ezeket a készségeket egy megfelelő tantárgy keretein belül lehet elsajátítani, ami most már sok oktatási programba belekerül.
  • Találkozók vezetése. A legtöbb diák nem tud felkészülni a találkozókra, jegyzőkönyvet vezetni és adatokat feldolgozni. De ha ezt a képességet az egyetemen fejlesztjük, például csoportos projektekben való részvétellel, elkerülhetjük, hogy felesleges időt pazaroljunk a munkahelyen. Ehhez szükség van a diákok projektjeinek ellenőrzésére, hogy megtanulják, hogyan kell hatékonyan lebonyolítani a találkozókat. Gyakorlatilag ennek jelentős költsége van minden vállalat számára – hiszen ha több, jól megfizetett ember is egy órát tölt el egy megbeszélésen, akkor szeretnénk, ha ez megfelelő eredményt hozna.
  • Nyilvános beszéd. Sok diák csak a diplomamunka védésekor találkozik azzal, hogy nyilvánosan kell beszélnie. És messze nem mindenki van felkészülve erre. Sok diákot láttam, akik:
    • a hallgatóságnak háttal állnak,
    • hintáznak, próbálva hipnotizálni a bizottságot,
    • tördelik a tollakat, ceruzákat és mutatókat,
    • körbe-körbe járkálnak,
    • a földet nézik.

    Ez normális, ha valaki először lép fel. De ezzel a stresszel már korábban kellene foglalkozni – például a kurzusmunkák védésekor baráti légkörben, az évfolyamtársak között.

    Emellett a vállalatokban szokás, hogy lehetőséget adjanak a munkavállalóknak ötleteik előterjesztésére, költségvetésük megszerzésére, pozícióra vagy dedikált projektre. De ha belegondolunk – ez ugyanaz, mint a kurzusmunka védése, csak egy magasabb szinten. Miért ne fejlesztenénk ezeket a hasznos karrierkészségeket az egyetem alatt?

Mit hagytam ki?

Egyik oka ennek a posztnak az volt, hogy olvastam egy cikket, amelyet a TjuMU weboldalán publikáltak.. A cikk szerzője csak az orosz diákok egyes hiányosságaira összpontosít, amelyeket külföldi oktatók észleltek. A különböző egyetemeken szerzett tanítási tapasztalatom azt mutatja, hogy az orosz közép- és felsőoktatás jó alapot ad. Az orosz diákok jártasak a matematikában és az algoritmusokban, könnyebb velük szakmai kommunikációt kialakítani.

A külföldi diákok esetében viszont az orosz oktatók elvárásai néha túlzottak lehetnek. Például az indiai hallgatók, akikkel találkoztam, hasonlóak az oroszokhoz a matematikai alapok terén. Ám néha hiányzik a speciális tudásuk a bachelor's képzés befejezése után. A jó európai diákok valószínűleg gyengébb matematikai alapokkal rendelkeznek középiskolai szinten.

Ha pedig egyetemre jársz vagy ott dolgozol, már most elkezdheted fejleszteni a kommunikációs készségeidet (saját vagy diákjaid), bővíteni az alapokat és gyakorolni a programozást. Az orosz oktatási rendszerben minden lehetőség adott — csak helyesen kell kihasználni őket.

Örülnék, ha a poszt kommentjeiben megosztanád a tanfolyamaid és módszereid linkjeit, amelyek segítenek az oktatásban a létszám kiegyenlítésében, valamint más módokat, amelyekkel fejleszthetők a soft skillek az egyetem során.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster