Praktik i IT: et ledelsesperspektiv

Praktik i IT: et ledelsesperspektiv

Rekrutteringen til sommerpraktik i Yandex fortsætter. Den dækker fem områder: backend, ML, mobiludvikling, frontend og analyse. I denne blog og i andre blogs på Habré og uden for kan man finde en del indsigt i, hvordan praktikopholdet forløber. Men meget af denne proces forbliver et mysterium for dem, der ikke arbejder i virksomheden. Set fra udviklingsledernes perspektiv opstår der endnu flere spørgsmål. Hvordan gennemfører man praktikophold korrekt, hvordan maksimerer man den gensidige nytte med praktikanten, hvordan får man tid til at lære dem at kende på tre måneder og uddanne dem i alt, hvad der kræves for at fortsætte arbejdet?

Vi har forberedt denne artikel i fem personer. Lad os præsentere os: Ignat Kolesnichenko fra tjenesten for distribueret computing, Misha Levin fra tjenesten for maskinintelligens i Marketa, Denis Malykh fra applikationsudviklingstjenesten, Seryozha Berezhnoy fra udviklingsafdelingen for søgegrænseflader, og Dima Cherkasov fra antifraud udviklingsgruppen. Hver af os repræsenterer sit eget praktikområde. Vi er alle ledere, vi har brug for praktikanter, og vi har noget erfaring med dem. Lad os dele noget af denne erfaring.

Interview før praktikopholdet

Kandidaterne står over for flere tekniske interviews. Succes i interviewet afhænger i mindre grad af soft skills (evnen til at kommunikere effektivt) og i højere grad af hard skills (færdigheder inden for matematik og programmering). Men lederne vurderer begge dele.

Ignat:

Selv hvis en person er rigtig dygtig, men helt uden kommunikative evner - vil de ikke kunne anvende alle deres færdigheder. Det tager vi selvfølgelig hensyn til, men det er ikke grund til ikke at vælge nogen til praktikopholdet. På tre måneder kan alt ændre sig, og desuden kan dit første indtryk vise sig at være forkert. Hvis alt er korrekt - skal vi forklare personen, tage et kig efter andre teams til dem. For praktikanter er kommunikativitet bestemt ikke en nøglefaktor. Professionelle færdigheder er langt vigtigere.

Denis:

Jeg kan godt lide mennesker, der fortæller historier – på den gode måde. En person, der kan fortælle, hvordan de med deres team heroisk har håndteret en eller anden fejl, er interessant. Jeg begynder at stille opfølgende spørgsmål, når sådan en historie dukker op. Men det sker sjældent, hvis man bare beder dem om at 'fortælle noget interessant om deres projekter.'

En kandidat sagde engang en bemærkelsesværdig sætning, som jeg endda skrev ned: 'Har med succes undgået at løse kedelige opgaver.'

Praktik i IT: et ledelsesperspektiv

Da der er lidt tid til kommunikation, forsøger intervieweren hvert minut af mødet at få nyttig information om kandidaten. Det er fantastisk, hvis praktikanten på forhånd har overvejet, hvilke detaljer fra deres erfaring (ikke fra cv'et) de kunne dele. Det skal være en kort beretning, strengt vedrørende emnet.

Denis:

Jeg bemærker, hvis en person fortæller, at de har prøvet mange sprog, tilgange. Mennesker med bredere udsigt udvikler mere elegante løsninger i kampens hede. Men det er ikke entydigt en fordel. Man kan tage lidt af hvert, men ikke lære noget alvorligt.

Tid til historier, som Denis beskriver, er typisk kun til rådighed ved det afsluttende interview. Indtil da skal man demonstrere de grundlæggende og praktiske færdigheder, der vil danne grundlag for det fremtidige arbejde. Og selvfølgelig vil det kræve at skrive kode på en tavle eller på et stykke papir.

Misha:

Vi tester kendskabet til sandsynlighedsteori og matematisk statistik. Vi ser, om personen har erfaring med metrikker, med maskinlæringsalgoritmer, med justering af deres parametre, med overfitting osv. Vi forventer, at personen kan skrive kode i tilstrækkelig grad til at kunne være analytiker.

Denis:

De, der kommer til samtale, ved som regel godt, hvordan man programmerer: vi har en god skole i grundlæggende skriftsprog i Jekaterinburg, gode institutter. Men for at være ærlig, så er det en sjældenhed at finde en praktikant med gode hard skills, særligt i vores epsilon-nabolag. For eksempel Swift. Det involverer meget komplekse opgaver med strenge, og der er ikke mange, der kan arbejde med dem fra hukommelsen. De fanger straks ens opmærksomhed. Jeg giver ofte en opgave til samtaler, som netop involverer behandling af strenge. Og blandt alle de kandidater, jeg har haft, var der kun én, der kunne skrive Swift-kode nedenunder på et stykke papir. Jeg gik efter det og fortalte alle, at nogen endelig kunne løse denne opgave med Swift på papir.

Kontrol af algoritmer under en samtale

Dette er et separat emne, da kandidaterne stadig ofte spørger — hvorfor vurderer vi altid kendskabet til algoritmer og datastrukturer? Selv kommende mobiludviklere og frontend-udviklere gennemgår en sådan kontrol.

Misha:

Under samtalen giver vi altid en algoritmisk opgave. Kandidaten skal finde ud af, hvordan man implementerer den i Python, helst uden fejl. Det er vigtigt at forstå, hvordan man tester sit program og selv kan rette det.

Praktik i IT: et ledelsesperspektiv

Erfaring med algoritmer vil være nyttig af tre grunde. For det første vil det åbenlyst være nødvendigt til algoritmiske opgaver — som sjældent opstår, men dog eksisterer. For det andet vil udvikleren kunne løse opgaver relateret til algoritmer mere effektivt, selvom disse ikke kræver at dykke ned i selve algoritmerne (der er allerede en del af dem). For det tredje, hvis algoritmer ikke blev undervist i universitetet, men du stadig kan arbejde med dem, viser det, at du er en nysgerrig person, og det vil hæve din autoritet i øjnene på intervieweren.

Denis:

Størstedelen af mobiludvikling består af at "omarrangere JSON". Men en gang hver sjette måned er der tilfælde, hvor algoritmer er nødvendige. Jeg tegner nu smukke kort til Yandex.Vejr. Og i løbet af en uge måtte jeg implementere en glatningsalgoritme, Sutherland-Hodgman algoritmen og Martinez-algoritmen. Hvis en person ikke vidste, hvad en hashmap eller en prioritetskø var, ville de sidde fast med dette i lang tid og det ville være uklart, om de ville klare det uden hjælp.

Algoritmer er grundlaget for udvikling. Det er det, der hjælper udvikleren med at være en udvikler. Uanset hvad du laver, er de nødvendige, selv i enkle projekter, hvor hovedarbejdet består af "omlægning af JSON". Selv hvis du ikke skriver algoritmerne selv, men indirekte bruger nogle datatyper, så er det bedre at forstå dem. Ellers vil du ende med at lave applikationer, der kører langsomt eller fungerer forkert.

Der er programmører, som er kommet ind i udvikling akademisk: de er blevet optaget på universitetet, har ærligt studeret i fem år og har fået en uddannelse. De kender algoritmer, fordi de er blevet undervist i dem. Men blot at kende algoritmer karakteriserer ikke personens perspektiv; dette perspektiv skal kontrolleres på en anden måde.

Og så er der autodidakter, som jeg selv betragter. Ja, jeg har formelt en IT-uddannelse, en diplom som ingeniør-programmør. Men autodidakter har lært at programmere "på trods af". De har ikke haft en universitetsuddannelse. Normalt er de ikke bekendt med algoritmer — fordi de aldrig har stået over for nødvendigheden af at studere dem. Og når en sådan person forstår algoritmer, betyder det, at han har brugt tid og har sat sig ind i dem. Efter jeg havde færdiggjort universitetet, indså jeg, at jeg havde blinde punkter i grundlæggende algoritmer — problemet var, at specialet var anvendt. Jeg gik og studerede onlinekurser fra Princeton Universitet, kendt ved Robert Sedgewick. Jeg forstod det, lavede alle opgaverne. Og når en person under et jobinterview fortæller en lignende historie, bliver jeg straks interesseret, og jeg får lyst til at arbejde sammen med ham eller i det mindste fortsætte samtalen.

Praktik i IT: et ledelsesperspektiv

Ignat:

Når du interviewer en praktikant, forventer du på en måde endda mere end fra en erfaren udvikler. Det handler om evnen til at løse algoritmiske opgaver, hurtigt skrive en eller anden korrekt kode. Praktikanten er jo stadig på universitetet. Bare et år tidligere blev han alt om algoritmer fortalt i detaljer. Det forventes, at han kan gengive dem. Hvis personen er fornuftig og har lyttet nøje til forelæsningerne, vil han bare vide alt, tage det fra cachen.

Hvilke opgaver løser praktikanten

Som regel kan praktikprogrammet planlægges og diskuteres ved de afsluttende samtaler. En praktikant får i starten ofte tildelt træningsopgaver, hvis resultater ikke anvendes i produktionen. Desuden er chancen for at få sådanne opgaver ikke stor. Ofte gives der arbejdsprojekter fra backloggen, det vil sige anerkendt værdifulde men ikke prioriterede og "adskillelige" - så deres gennemførelse ikke afhænger af andre komponenter. Ledelsen prøver at fordele dem, så praktikanten får kendskab til forskellige dele af servicen og arbejder i det samme miljø som de andre teammedlemmer.

Ignat:

Dette er ekstremt nyttige opgaver. Måske vil de ikke øge udnyttelsen af klyngen med 10%, ikke spare virksomheden millioner af dollars, men de vil gøre hundredvis af mennesker glade. For eksempel har vi lige nu en praktikant, der arbejder med vores kunde for at starte operationer på vores klynger. Før operationen startes, skal den indlæse nogle data på klyngen. Dette tager normalt 20-40 sekunder, og før skete det lydløst: man startede det i konsollen og sad og kiggede på en sort skærm. Praktikanten kom og lavede på to uger en funktion: nu kan man se, hvordan filerne bliver uploadet, og hvad der sker. Opgaven er, på den ene side, ikke svær at beskrive, men på den anden side er der noget at grave i, hvilke biblioteker man skal se på. Det mest behagelige er, at man har lavet det, en uge er gået, det er blevet implementeret på klyngerne, og folk bruger det allerede. Man skriver et indlæg på det interne netværk - man får at vide tak.

Praktik i IT: et ledelsesperspektiv

Misha:

Praktikanter forbereder modeller, indsamler data til dem, finder metrikker og gennemfører eksperimenter. Langsomt begynder vi bare at give dem mere frihed og ansvar - vi tjekker, om de klarer det. Hvis de gør - går de videre til næste niveau. Vi forventer ikke, at når praktikanten kommer, kan de alt dette. Lederen hjælper dem med at finde ud af det og giver et link til interne ressourcer eller onlinekurser.

Hvis praktikanten viser sig at være dygtig - kan de få tildelt noget prioriteret, vigtigt for afdelingen eller andre tjenester.

Dima:

Vores praktikant arbejder lige nu med hårdcore forbedringer af anti-fraud systemet. Dette system bekæmper forskellige former for misbrug og svindel på Yandex-tjenester. Oprindeligt overvejede vi at give ham mindre komplekse opgaver, der ikke var så vigtige for produktionen. Vi prøver at forudse opgaverne for praktikanten, men vi så, at han virkelig 'brænder' for det, løser opgaver hurtigt og godt. I sidste ende begyndte vi at tildele ham opgaven med at implementere anti-fraud for nye tjenester.

Derudover er der en lille chance for at få en opgave, som kollegerne tidligere ikke har taget fat på på grund af dens omfang.

Dima:

Der er et gammelt system, og der er et nyt, som endnu ikke er færdigt. Vi skal gennemføre overførslen fra det ene til det andet. I perspektivet er det et vigtigt projekt, selvom der er høj usikkerhed: der skal kommunikeres meget, og læses uforståelig legacy-kode. Vi sagde ærligt til praktikanten under den afsluttende samtale, at opgaven var kompleks. Han svarede, at han var klar, kom ind i vores team, og han klarede det hele. Det viste sig, at han har kvaliteter, der ikke kun gør ham til udvikler, men også til leder. Han var villig til at gå ud, spørge, og pinge.

Mentorordning for praktikanten

Praktikanten har brug for en mentor for at kunne fordøje processerne. Det er en person, der er opdateret om ikke kun sine egne opgaver, men også praktikantens opgaver. Der er etableret regelmæssig kommunikation med mentoren, og man kan altid kontakte ham for rådgivning. Mentoren kan være enten gruppelederen (hvis det er en lille gruppe) eller en kollega, der er en fast deltager i teamet.

Ignat:

Jeg prøver at komme hen til praktikanten hver anden dag og spørge, hvordan det går. Hvis jeg kan se, at han er steget ned i noget, prøver jeg at hjælpe ham, spørge, hvad problemet er, og sammen med ham finde løsningen. Det er klart, at dette tager mine kræfter og gør praktikantens arbejde mindre effektivt som helhed - for jeg bruger også min tid. Men det tillader ham ikke at gå i stå og opnå resultater. Og det er stadig hurtigere, end hvis jeg havde gjort det selv. Personligt ville jeg bruge cirka 5 timer på opgaven. Praktikanten vil bruge 5 dage på den. Ja, jeg vil bruge 2 timer i løbet af de 5 dage på at kommunikere med praktikanten og hjælpe ham. Men jeg sparer mindst 3 timer, og praktikanten vil sætte pris på, at nogen har givet ham tips og hjulpet ham. Generelt er det vigtigt at kommunikere tæt, se hvad personen laver, og ikke miste kontakten.

Praktik i IT: et ledelsesperspektiv

Seryozha:

Praktikanten er konstant i kontakt med sin mentor og kommunikerer med ham flere gange om dagen. Mentoren gennemgår koden, deltager i parprogrammering med praktikanten og hjælper, når der opstår problemer. På denne måde, gennem en kombination af mentorhjælp og reelle arbejdsopgaver, uddanner vi frontend-udviklere.

Dima:

For at sikre, at praktikanten ikke føler sig forladt, diskuterer vi allerede før ansættelsen, hvem der skal være hans mentor. Det er også en stor udvikling for mentoren selv: en forberedelse til rollen som teamleder, en test af evnen til at holde både sine egne opgaver og praktikantens opgaver i mente. Der er regelmæssige møder, som jeg nogle gange deltager i for at være opdateret. Men det er primært mentoren, der kommunikerer regelmæssigt med praktikanten. I starten bruger han meget tid, men det betaler sig.

Men at have en mentor betyder ikke, at alle opståede spørgsmål løses gennem ham.

Misha:

Vi har en kultur, hvor folk, der står over for problemer, spørger deres naboer, kolleger om råd og hurtigt finder hjælp. Jo hurtigere en person vokser, jo oftere skal han gå til kolleger for at lære noget nyt. Det er nyttigt bare at vide, hvad andre arbejder på, for at kunne komme op med nye opgaver. Når praktikanten selv er i stand til at forhandle, forstå, hvad der er vigtigt for den anden part, og nå frem til resultater i teamet, vokser han meget hurtigere end den, som lederen skal tage sig af.

Seryozha:

Der er dokumentation, men størstedelen af informationen er fordampet. Hvis du absorberer det i starten af din karriere, er det en yderligere fordel, og vi kan fokusere personen på det, der er nødvendigt at lære.

Den ideelle praktikant er en, der praktiserer i flere måneder, bliver juniorudvikler, derefter bare udvikler, derefter gruppesupervisor osv. For dette er der brug for en elevtype, der ikke er bange for at spørge, hvis noget er uklart, men samtidig er i stand til at arbejde selvstændigt. Hvis de får at vide, at de kan læse om et emne her, vil de gå derhen, læse det og faktisk vende tilbage med nye færdigheder. De kan begå fejl, men de må ikke begå mere end én eller maksimalt to fejl samme sted. Den ideelle praktikant skal udvikle sig, absorbere alt som en svamp, lære og vokse. Den, der sidder og prøver at finde ud af det hele selv, krummer sig over det i lang tid, stiller ikke spørgsmål, vil næppe klare sig.

Afslutning af praktikopholdet

Før arbejdet begynder, underskriver vi en tidsbegrænset kontrakt med hver praktikant. Selvfølgelig er praktikopholdet betalt, det registreres i henhold til den russiske arbejdsret, og praktikanten får de samme fordele som enhver anden medarbejder hos Yandex. Efter tre måneder afsluttes programmet - mange praktikanter overgår derefter til fastansættelse (med en tidsubegriblet kontrakt).

Praktik i IT: et ledelsesperspektiv

På den ene side er det vigtigt for lederen, at udvikleren gennemfører sit praktikminimum. Det er netop det, praktikanten ledes mod fra starten af interviewet. Men det er kun begyndelsen på historien. Praktikanten er altid en potentiel kandidat til fastansættelse for os. Minimumsprogrammet for lederen er at opdage en person fra starten, som efter tre måneder ikke vil være pinligt at anbefale til andre afdelinger. Maksimumsprogrammet er at beholde dem i det samme team ved at ansætte dem. Samtidig tager vi højde for, at en anden- eller tredjeårs studerende - selv hvis de er blevet praktikant - bliver nødt til at fortsætte deres uddannelse på universitetet, når studiet året begynder.

Seryozha:

Først og fremmest er praktikanter for os et personale potentiale. Vi forsøger at opdrage folk internt i Yandex, så de passer perfekt til vores opgaver. Vi giver dem alt fra kommunikationskultur og samarbejde i teams til encyklopedisk viden om alle vores systemer.

Ignat:

Når vi ansætter en praktikant, er det straks med henblik på, at de skal blive en del af vores team. Og som regel er den eneste hindring manglen på ledige stillinger. Vi forsøger at tage unge folk ind som praktikanter. Hvis en person har fem års erfaring inden for udvikling, og de kommer til Yandex på praktikantniveau, så desværre, for os betyder det, at selvom de er dygtige, og de får en stilling i Yandex med fem års erfaring, så vil de ikke kunne vokse til en seniorudvikler. Det handler normalt om hastighed: en langsom vækst i fortiden vil betyde langsom vækst hos os også. Ja, nogle gange indser vi først efter tre måneder, at personen ikke lever op til kravene. Men det er ret sjældent. I mere end halvdelen af tilfældene er vi klar til at ansætte folk på fast basis. Jeg har ikke oplevet, at en person har gennemført sin praktik med succes, men ikke kunne bestå interviews til en fast stilling.

Misha:

Vi tilbyder alle vellykkede praktikanter at blive i virksomheden. Efter praktikken ansætter vi som regel mere end halvdelen på fuld tid. Det er sværere med sommerpraktikken, fordi der ofte kommer studerende til os, for eksempel på tredje år, og de har svært ved at kombinere arbejde med studier.

Dima:

Lad os antage, at praktikanten klarer opgaverne fremragende og har masser af potentiale til at vokse til en god udvikler — selvom de måske ikke har nok erfaring endnu. Og lad os antage, at der ikke er ledige stillinger med en ubegrænset kontrakt. Så er det simpelt: jeg skal gå til min leder og sige — her er en fantastisk person, som vi skal holde på for enhver pris, lad os tilbyde dem noget, og finde et sted, hvor vi kan placere dem.

Historier om praktikanter

Denis:

Pigen, der kom til os som praktikant i 2017, kom fra Perm. Det ligger cirka 400 kilometer vest for Jekaterinburg. Og hun tog hver uge toget fra Perm til Skolen for mobiludvikling. Hun ankom om dagen, studerede om aftenen og tog tilbage om aftenen. På grund af hendes iver inviterede vi hende til at arbejde, og det viste sig at være en god beslutning.

Ignat:

For flere år siden deltog vi i et praktikprogram. Det var interessant at arbejde med udenlandske unge. Men praktikanterne derfra er ikke stærkere end for eksempel fra SHAD eller FKN. Det ville man tro, når EPFL ligger blandt de 20 bedste universiteter i Europa. På det tidspunkt havde jeg — som en ikke særlig erfaren interviewer — en forventning: utrolig, vi interviewer folk fra EPFL, de må være superdygtige. Men folk, der har fået grunduddannelse i kodning hos os — inklusive fra nøgleregionsuniversiteter — viser sig at være helt på niveau.

Eller en anden historie. Lige nu har jeg en ung fyr ansat, han er kun omkring 20 år. Han arbejder i Skt. Petersborg, og kom her på praktik. Han er virkelig dygtig. Som sædvanligt giver du en person opgaver, de løser dem, og en måned senere kommer han og siger: jeg har løst det, og jeg kigger, og det ser ud til, at jeres arkitektur ikke er godt bygget. Lad os ændre det. Koden vil blive enklere og mere forståelig. Jeg frarådede ham selvfølgelig: arbejdsbyrden er stor, der er ingen fordel for brugerne, men idéen lyder fuldstændig rimeligt. Manden har forstået en kompleks multitrådede proces og foreslået forbedringer — måske er de ikke aktuelle, refactoring for refactoringens skyld. Men så snart man ønsker at komplicere denne kode, kan man stadig lave refactoreringen. Som sagt, flere måneder senere tog vi fat på denne opgave. Jeg tog glædeligt ham ind i teamet. Vi er ikke genier alle sammen. Man kan komme ind, forstå noget og pege på vores problemer. Det værdsættes.

Misha:

Vi har sådanne ideelle praktikanter. På trods af manglende erfaring ser de opgaven ikke kun på det tekniske, men også på det globale niveau. De foreslår principielle forbedringer. De har en forståelse for, hvordan man oversætter opgaver fra den virkelige verden til teknisk, uden at miste meningen. De tænker over, hvad den endelige mål er, om det er værd at grave sig ned i detaljerne nu, eller om man helt kan ændre tilgangen til opgaven eller endda selve problemstillingen. Det betyder, at de har potentiale til at være flere niveauer over. For at komme igennem denne proces skal de bare opgradere nogle færdigheder og indre værktøjer. Plus, lancere nogle succesfulde projekter.

Praktik i IT: et ledelsesperspektiv

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster