De flesta moderna programmerare har fÄtt sin utbildning pÄ universitet. Med tiden kommer detta att förÀndras, men just nu Àr verkligheten den att bra talanger i IT-företag fortfarande kommer frÄn universitet. I det hÀr inlÀgget delar Stanislav Protasov, direktör för Acronis med ansvar för universitetsrelationer, sin vision av egenskaperna hos universitetsutbildningen för framtida programmerare. LÀrare, studenter och de som anstÀller dem kan till och med hitta ett par anvÀndbara tips under kategorin.
Under de senaste 10 Ären har jag undervisat i matematik, algoritmer, programmeringssprÄk och maskininlÀrning vid olika universitet. Idag, förutom min tjÀnst pÄ Acronis, Àr jag ocksÄ vice ordförande för avdelningen för teoretisk och tillÀmpad datavetenskap pÄ MIPT. Genom min erfarenhet frÄn bra ryska (och inte bara) universitet har jag fÄtt vissa observationer om förberedelsen av studenter inom datordiscipliner.
Regeln om 30 sekunder fungerar inte lÀngre
Jag Àr sÀker pÄ att du har stött pÄ regeln om 30 sekunder, som sÀger att en programmerare bör förstÄ syftet med en funktion efter en snabb överblick av dess kod. Denna regel skapades för lÀnge sedan, och sedan dess har mÄnga operativsystem, sprÄk, hÄrdvara och algoritmer kommit till. Jag har skrivit kod i 12 Är, men förhÄllandevis nyligen sÄg jag kÀllkoden för en produkt som vid första anblick verkade som magiska besvÀrjelser. Idag, om du inte Àr djupt insatt i ÀmnesomrÄdet, slutar regeln om 30 sekunder att fungera. Annars kommer du inte att ha tillrÀckligt med tid, varken 30 eller 300 sekunder, för att förstÄ vad som Àr vad.
Till exempel, om du vill skriva drivrutiner mÄste du dyka ner i detta omrÄde, lÀsa tusentals rader speciell kod. Med en sÄdan metod för att studera Àmnet fÄr specialisten en "flow-kÀnsla". Precis som i rap, dÀr kÀnslan av god rim och rÀtt rytm kommer utan speciell rationalisering. PÄ samma sÀtt kan en vÀlutbildad programmerare enkelt kÀnna igen ineffektiv eller helt enkelt dÄlig kod utan att gÄ in pÄ detaljer om var stilbrottet intrÀffade eller en icke-optimal metod anvÀndes (men att förklara denna kÀnsla kan vara ganska svÄrt).
Specialisering och den vÀxande komplexiteten gör att en kandidatexamen inte lÀngre ger möjlighet att studera alla omrÄden tillrÀckligt djupt. Men just pÄ denna utbildningsnivÄ behöver man skaffa sig en bred förstÄelse. EfterÄt, i magisterutbildningen eller i arbetet, kommer man behöva spendera tid pÄ att fördjupa sig i problematiken och specifikationen av ÀmnesomrÄdet, lÀra sig jargongen, programmeringssprÄken och kollegornas kod, samt lÀsa artiklar och böcker. Jag tror att det Àr sÄ man genom universitetet kan "bygga sin grund" för framtiden. .
Vilket programmeringssprÄk Àr bÀst att undervisa pÄ universitetet?

Till min glĂ€dje har universitetets lĂ€rare redan övergivit sökandet efter det rĂ€tta svaret pĂ„ frĂ„gan: "Vad Ă€r bĂ€st att programmera pĂ„?" Diskussionerna om vilket som Ă€r bĂ€ttre â C# eller Java, Delphi eller C++ â har i stort sett avstannat. FramvĂ€xten av mĂ„nga nya programmeringssprĂ„k och ackumulerad pedagogisk erfarenhet har lett till en förstĂ„else inom akademin: varje sprĂ„k har sin specifika nisch.
Problemet med undervisning med hjĂ€lp av ett visst programmeringssprĂ„k har slutat vara en prioriterad frĂ„ga. Det spelar ingen roll vilket sprĂ„k kursen hĂ„lls pĂ„. Det viktigaste Ă€r sprĂ„kets tillrĂ€ckliga uttryckskraft. Boken "" Ă€r en bra illustration av denna observation. I denna nu klassiska publikation Ă€r alla exempel skrivna pĂ„ Java â ett sprĂ„k utan pekare, men med Garbage Collector. Det Ă€r osannolikt att nĂ„gon kommer att argumentera för att Java Ă€r det optimala valet för att skriva högpresterande parallellkod. Men för att förklara koncepten som presenteras i boken, visade sig sprĂ„ket vara lĂ€mpligt. Ett annat exempel Ă€r som Andrew Ng undervisar pĂ„ med hjĂ€lp av Matlab i miljön Octave. Idag skulle man kunna vĂ€lja ett annat programmeringssprĂ„k, men vad spelar det egentligen för roll om idĂ©erna och metoderna Ă€r viktiga?
Mer praktiskt och nÀra verkligheten
Samtidigt har det under de senaste Ären blivit betydligt fler praktiker vid universiteten. Medan de ryska universitetens program tidigare ofta kritiserades för att vara avkopplade frÄn verkligheten, kan man inte lÀngre sÀga det om IT-utbildningen idag. För tio Är sedan fanns det nÀstan inga lÀrare med verklig arbetslivserfarenhet inom industrin vid universiteten. Nu Àr det allt vanligare att undervisningen pÄ den relevanta institutionen hÄlls av praktiserande IT-specialister, som endast undervisar 1-2 kurser pÄ sin fritid. Denna metod visar sig vara effektiv ur kvalitetsperspektiv för att förbereda arbetskraft, för att uppdatera kurser och, sjÀlvklart, för att hitta potentiella anstÀllda för företagen. Jag tror inte att jag avslöjar nÄgon hemlighet genom att sÀga att vi stödjer grundkursen vid MFTI och bygger relationer med andra universitet, bland annat för att förbereda studenter som skulle kunna pÄbörja sina karriÀrer pÄ Acronis.
Matematiker eller programmerare?

De tidigare striderna kring programmeringssprÄk har övergÄtt till en filosofisk diskussion. Nu debatterar sÄledes 'programmerare' och 'matematiker' med varandra. I princip skulle dessa skolor kunna delas upp i tvÄ utbildningsprogram, men industrin ser fortfarande dÄligt pÄ sÄdana subtiliteter, och frÄn universitet till universitet har vi en liknande utbildning med nÄgot olika inriktningar. Detta innebÀr att bÄde studenten och företaget dÀr han eller hon kommer att arbeta kommer att behöva komplettera kunskapspusslet med de saknade bitarna.
Förekomsten av praktiker vid universiteten som skriver industrikod pÄ olika sprÄk ger studenterna en mer kvalitativ utvecklingskompetens. Genom att vara vÀl insatta i implementationerna av standardbibliotek, ramverk och programmeringstekniker, vÀcker praktiserande programmerare studenternas ambition att skriva bra kod, göra det snabbt och kvalitativt.
Denna anvÀndbara fÀrdighet leder emellertid ibland till att det uppstÄr entusiaster som uppfinner hjulet pÄ nytt. Studerande programmerare tÀnker sÄ hÀr: 'Vad kostar det mig att skriva ytterligare 200 rader bra kod som löser den givna uppgiften direkt?'.
LÀrare med en klassisk matematikutbildning (t.ex. matematik- eller tillÀmpad matematik), arbetar oftare i en vetenskaplig miljö eller inom datamodellering och analys. "Matematiker" ser pÄ problem inom omrÄdet Computer Science pÄ ett annat sÀtt. De arbetar framför allt med algoritmer, teorem och formella modeller, inte kod. En viktig fördel med det matematiska tillvÀgagÄngssÀttet Àr en tydlig principförstÄelse av vad som kan och inte kan lösas och hur det ska göras.
DÀrför berÀttar matematiklÀrare om programmering med en teoretisk inriktning. Studenter som kommer "frÄn matematiker" tenderar oftare att föreslÄ vÀl genomtÀnkta och teoretiskt mer sofistikerade lösningar, men de Àr oftast suboptimala sett till sprÄket och mÄnga gÄnger bara slarvigt skrivna. Denna student anser att hans huvudsakliga mÄl Àr att visa förmÄgan att lösa sÄdana uppgifter i allmÀnhet, men implementeringen kan vara bristfÀllig.
De som i skolan eller pÄ de första kurserna undervisades av programmerare tar med sig "en vÀldigt vacker cykel", som dock vanligtvis inte fungerar sÀrskilt effektivt asymptotiskt. De stÀller istÀllet inte in sig pÄ att teoretisera djupt och konsultera lÀroböcker för att söka optimala lösningar, utan föredrar vacker kod.
I olika universitet under intervjuer med studenter ser jag ofta vilken "skola" som ligger till grund för deras utbildning. Jag har sÀllan stött pÄ en perfekt balans i grundutbildningen. Som barn fanns det i min stad möjligheter att förbereda sig för olympisk matematik, men det fanns inga programmeringskurser. Nu lÀr sig barn pÄ kurser att programmera i de "trendiga" sprÄken Go och Python. DÀrför finns det redan vid antagningen till universiteten skillnader i tillvÀgagÄngssÀtt. Jag anser att det Àr viktigt att stödja bÄda fÀrdigheterna pÄ universitetet, annars kommer företaget att fÄ antingen en specialist med otillrÀcklig teoretisk grund eller en person som inte har lÀrt sig och inte vill skriva bra kod.
Hur kan man "trÀningsdagarna sÀnkas" för framtida

Det Àr förstÄeligt att under sÄdana omstÀndigheter vÀljer studenten helt enkelt det som tilltalar dem mest. LÀraren Ä sin sida förmedlar bara en synpunkt som ligger dem nÀrmare. Men alla vinner om koden Àr vackert skriven och algoritmerna Àr tydliga, vÀlgrundade och effektiva.
- IT-horisont. En kandidatexamen i datavetenskap innebÀr redan en fÀrdig specialist med utvecklad teknisk horisont, som sannolikt har valt sin inriktning. Men pÄ de lÀgre terminerna vet vi inte vad han eller hon kommer att Àgna sig Ät. Det kan bli forskning eller analys, eller det kan istÀllet bli att skriva en stor mÀngd kod varje dag. DÀrför behöver studenten fÄ en inblick i alla aspekter av IT-branschen och bli bekant med alla verktyg. Det Àr idealiskt om lÀrarna pÄ de teoretiska kurserna visar sambandet med praktiken (och vice versa).
- TillvĂ€xtpunkt. Att undvika extremiteter ligger i studentens intresse. Att förstĂ„ vem du Ă€r â "matematiker" eller "programmerare" â Ă€r inte svĂ„rt. Det rĂ€cker med att lyssna pĂ„ den första impulsen nĂ€r du ska lösa en uppgift: vad vill du göra â titta i lĂ€roboken efter den optimala metoden eller skriva nĂ„gra funktioner som garanterat kommer att behövas? UtifrĂ„n detta kan du bygga en ytterligare komplementĂ€r lĂ€randevĂ€g.
- Alternativa kunskapskÀllor. Ibland Àr programmet vÀlbalanserat, men "Systemprogrammering" och "Algoritmer" undervisas av helt olika personer, och vissa studenter kÀnner sig nÀrmare den första lÀraren medan andra föredrar den andra. Men Àven om du inte gillar professorn, Àr det ingen anledning att negligera vissa Àmnen till förmÄn för andra. Kandidatexamensstudenter Àr intresserade av att finna viljan att arbeta med kunskapskÀllor och i inget fall lita pÄ radikala Äsikter som "matematik Àr vetenskapens drottning, det huvudsakliga Àr att kunna algoritmer" eller "bra kod kompenserar för allt annat".
Att fördjupa sina kunskaper i teori kan ske genom att vÀnda sig till specialiserad litteratur och onlinekurser. För att förbÀttra sina fÀrdigheter i programmeringssprÄk kan man anvÀnda Coursera, Udacity eller Stepik, dÀr det finns mÄnga olika kurser. Studenter börjar ofta titta pÄ avancerade kurser i sprÄk om de kÀnner att lÀraren i algoritmer har god kunskap i matematik, men inte kan svara pÄ svÄra frÄgor inom implementation. Inte alla hÄller med mig, men i min erfarenhet har det fungerat bra. , dÀr alla mer komplexa funktioner i sprÄket behandlas i tur och ordning. Generellt sett, vÀlj en kurs med höga betyg frÄn betrodda företag eller universitet.
Mjukvarukompetenser

NĂ€r studenter frĂ„n universitetet gĂ„r in i arbetslivet, oavsett om det Ă€r en startup eller ett stort företag, Ă€r de, Ă€ven frĂ„n toppuniversitet, dĂ„ligt anpassade till den verkliga arbetsmiljön. Detta beror pĂ„ att högskolorna idag ofta "skĂ€mmer bort" sina studenter. Ăven om man missat mĂ„nga lektioner, inte förberett sig i tid för tentor och prov, försovit sig eller kommit för sent till tentamen, kan vem som helst klara av och Ă„ter göra om â och i slutĂ€ndan fĂ„ sin examen.
Det finns dock idag alla möjligheter för att förbereda studenterna för vuxenlivet och sjÀlvstÀndigt professionellt arbete. De kommer inte bara att programmera utan ocksÄ kommunicera. Och detta mÄste ocksÄ lÀras ut. I universitet finns det olika format för att förbÀttra dessa fÀrdigheter, men tyvÀrr ges de ofta inte tillrÀcklig uppmÀrksamhet. Det finns dock mÄnga möjligheter för att fÄ fÀrdigheter i effektivt teamarbete.
- Skrivande affÀrskommunikation. TyvÀrr har de flesta specialister som lÀmnar universitetet ingen aning om etiketten för skrivande. SÀrskilt meddelandets karaktÀr i meddelandeappar pÄ natten och dagen och anvÀndningen av vardagligt sprÄk och informell vokabulÀr. Men man skulle kunna trÀna sina skriftliga fÀrdigheter genom kommunikation med universitetsavdelningen och universitetet.
I praktiken stöter chefer ofta pÄ behovet av att bryta ner ett stort projekt i mindre uppgifter. För detta krÀvs det att varje uppgift och dess komponenter beskrivs tydligt, sÄ att yngre utvecklare förstÄr vad som förvÀntas av dem. En dÄligt formulerad uppgift leder ofta till att nÄgot mÄste göras om, och dÀrför hjÀlper erfarenhet av skriftlig kommunikation nyutexaminerade att arbeta i distribuerade team.
- Skriftlig presentation av sina resultat. För att presentera sina projekt kan studenter i högre Ă„rskurser skriva inlĂ€gg pĂ„ Habr, vetenskapliga artiklar samt rapporter. Det finns mĂ„nga möjligheter för detta â redan frĂ„n det andra Ă„ret börjar vissa högskolor med projektarbete. EssĂ€er kan ocksĂ„ anvĂ€ndas som en form av bedömning â de liknar vanligtvis publicistiska artiklar. Denna metod har redan implementerats vid HSE.
Om ett företag praktiserar en flexibel utvecklingsmetod behöver resultaten ofta presenteras i mindre portioner, men oftare. För detta Ă€r det viktigt att kunna förmedla resultatet av en specialists eller hela teamets arbete kortfattat. I mĂ„nga företag hĂ„lls idag Ă€ven "review" â Ă„rliga eller halvĂ„rsvisa. AnstĂ€llda diskuterar resultat och framtidsutsikter. En framgĂ„ngsrik review Ă€r den frĂ€msta anledningen till karriĂ€rtillvĂ€xt och bonusar, exempelvis pĂ„ Microsoft, Acronis eller Yandex. Ja, du kanske kan programmera bra, men "om du sitter i hörnet" kommer Ă€ven en duktig specialist alltid att förlora mot nĂ„gon som kan.presentation av sin framgĂ„ng.
- Akademiskt skrivande. Akademiskt skrivande Àr ocksÄ vÀrt att nÀmna. Det Àr viktigt för studenter att bekanta sig med reglerna för att skriva vetenskapliga texter, anvÀnda argument, hitta information i olika kÀllor och citera dessa kÀllor. Det Àr önskvÀrt att göra detta pÄ engelska, eftersom det finns mycket fler bra texter inom det internationella akademiska samfundet, och för olika discipliner finns det redan etablerade mallar för presentation av vetenskapliga resultat. SjÀlvklart behövs fÀrdigheter i akademiskt skrivande Àven vid förberedelsen av rysksprÄkiga publikationer, men det finns betydligt fÀrre exempel pÄ bra moderna artiklar pÄ engelska. Dessa fÀrdigheter kan erhÄllas genom motsvarande kurs, som nu ingÄr i mÄnga utbildningsprogram.
- HĂ„lla möten. De flesta studenter vet inte hur man förbereder sig för möten, för protokoll och bearbetar data. Men om vi utvecklar denna fĂ€rdighet pĂ„ universitetet, till exempel genom att delta i grupprojekt, kan vi undvika slöseri med tid pĂ„ arbetsplatsen. Det krĂ€vs kontroll över studenternas projektarbete för att lĂ€ra dem att effektivt leda möten. I praktiken kostar detta varje företag en hel del pengar â för om flera personer som tjĂ€nar bra pengar tillbringar en timme av sin arbetstid pĂ„ ett möte, vill man att det ska ge motsvarande avkastning.
- Publikt talande. MÄnga studenter stÀlls inför behovet av att tala offentligt endast vid presentationen av sin examensarbete. Och lÄngt ifrÄn alla Àr redo för detta. Jag har sett mÄnga studenter som:
- stÄr med ryggen mot Ähörarna,
- vinglar fram och tillbaka i ett försök att fÄ kommittén i trans,
- bryter pennor, blyertspennor och pekpinnar,
- gÄr runt i cirklar,
- ser ner i marken.
Det Ă€r normalt nĂ€r en person upptrĂ€der för första gĂ„ngen. Men man bör börja arbeta med denna stress tidigare â med skyddet av kursarbeten i en vĂ€nskaplig atmosfĂ€r, bland sina klasskamrater.
Dessutom Ă€r det standardpraxis i företag att ge en anstĂ€lld möjlighet att föreslĂ„ en idĂ©, fĂ„ finansiering för den, en position eller ett tilldelat projekt. Men, om man tĂ€nker efter â det Ă€r exakt som att försvara sitt kursarbete, bara pĂ„ en högre nivĂ„. Varför inte trĂ€na sĂ„dana anvĂ€ndbara karriĂ€rfĂ€rdigheter under studietiden?
Vad missade jag?
En av anledningarna till att jag skrev detta inlÀgg var en artikel, . Artikelförfattaren fokuserar endast pÄ de brister hos ryska studenter som observerats av utlÀndska lÀrare. Min erfarenhet av undervisning pÄ olika högskolor visar att den ryska grundskolan och högre utbildning ger en bra grund. Ryska studenter Àr duktiga inom matematik och algoritmer, och det Àr lÀttare att etablera professionell kommunikation med dem.
NÀr det gÀller utlÀndska studenter kan ibland de ryska lÀrarnas förvÀntningar vara för höga. Till exempel, nÀr det gÀller grundlÀggande matematiknivÄ, pÄminner de indiska studenter jag har mött om de ryska. Men ibland saknar de sÀrskilda kunskaper nÀr de avslutar sina kandidatexamen. Bra europeiska studenter har oftare en svagare matematikutbildning pÄ gymnasienivÄ.
Och om du studerar eller arbetar pĂ„ ett universitet kan du redan nu börja förbĂ€ttra dina kommunikativa fĂ€rdigheter (dina eller studenternas), bredda din grundlĂ€ggande kunskapsbas och öva pĂ„ programmering. För detta finns det alla möjligheter i det ryska utbildningssystemet â du behöver bara utnyttja dem pĂ„ rĂ€tt sĂ€tt.
Jag skulle vara glad om ni i kommentarerna till inlÀgget delar med er av era lÀnkar till kurser och metoder som hjÀlper till att jÀmna ut balansen i utbildningen, samt andra sÀtt att förbÀttra soft skills under studietiden pÄ universitetet.
KĂ€lla: habr.com
