Praktik inom IT: en chefssyn

Praktik inom IT: en chefssyn

Rekrytering för sommarpraktik i Yandex fortsätter. Det går i fem riktningar: backend, ML, mobilutveckling, frontend och analys. I den här bloggen, i andra bloggar på Habré och därutöver, kan du hitta en hel del insikter om hur praktiken fungerar. Men mycket i denna process förblir ett mysterium för dem som inte arbetar i företaget. Och ser man ur utvecklingschefernas synvinkel uppstår ännu fler frågor. Hur genomför man en praktik på rätt sätt, hur man maximerar ömsesidig nytta med en praktikant, hur man lär känna honom på tre månader och lär honom allt han behöver för att fortsätta arbeta?

Fem av oss förberedde den här artikeln. Låt oss presentera oss: Ignat Kolesnichenko från den distribuerade datortekniktjänsten, Misha Levin från marknadens maskinunderrättelsetjänst, Denis Malykh från applikationsutvecklingstjänsten, Seryozha Berezhnoy från avdelningen för utveckling av sökgränssnitt och Dima Cherkasov från utvecklingsgruppen för bedrägeribekämpning. Var och en av oss representerar vårt eget praktikområde. Vi är alla chefer, vi behöver praktikanter och vi har viss erfarenhet av att arbeta med dem. Låt oss berätta något från denna erfarenhet.

Intervju före praktik

Flera tekniska intervjuer väntar på kandidaterna. Framgång vid en intervju beror mindre på mjuka färdigheter (förmågan att kommunicera effektivt) och mer på hårda färdigheter (färdigheter i matematik och programmering). Men chefer utvärderar båda.

Ignat:

Även om en person är väldigt cool, men absolut okommunikativ, kommer han inte att kunna tillämpa alla sina färdigheter. Självklart uppmärksammar vi detta, men det är ingen anledning att inte ta någon på praktik. Om tre månader kan allt förändras, och dessutom kan ditt första intryck visa sig vara fel. Och om allt är korrekt måste du förklara för personen, leta efter andra kommandon. För praktikanter är kommunikationsförmåga definitivt inte en nyckelfaktor. Ändå är yrkeskunskaper mycket viktigare.

Denis:

Jag gillar folk som berättar historier – på ett bra sätt. En person som kan berätta hur han och hans team heroiskt hanterade någon fakap är intressant. Jag börjar ställa följdfrågor när en sådan här historia dyker upp. Men detta händer sällan om du bara ber "berätta om något intressant i dina projekt."

En kandidat sa en gång en underbar fras, som jag till och med skrev ner: "Undvikit framgångsrikt att lösa tråkiga problem."

Praktik inom IT: en chefssyn

Eftersom det finns lite tid för kommunikation försöker intervjuaren få användbar information om kandidaten varje minut av mötet. Det är bra om praktikanten i förväg kom på vilka detaljer om sin erfarenhet (inte från hans CV) han kunde dela med sig av. Detta bör vara en kort berättelse strikt till punkten.

Denis:

Jag uppmärksammar om en person säger att han har provat många språk och tillvägagångssätt. Människor med en bredare syn kommer på mer eleganta lösningar i stridsläge. Men detta är ett tvetydigt plus. Du kan få kläm på det, men inte riktigt lära dig någonting.

Tiden för berättelserna som beskrivits av Denis återstår vanligtvis först vid den sista intervjun. Tills dess är det nödvändigt att visa på de grundläggande och praktiska kunskaper som kommer att ligga till grund för framtida arbete. Och, naturligtvis, måste du skriva koden på en tavla eller på ett papper.

Misha:

Vi testar kunskaper i sannolikhetsteori och matematisk statistik. Vi tittar på om personen har erfarenhet av att arbeta med mätetal, med maskininlärningsalgoritmer, med att sätta sina parametrar, med omskolning etc. Vi förväntar oss att personen kan skriva kod tillräckligt för att vara analytiker.

Denis:

De som kommer för en intervju kan mestadels språk: i Jekaterinburg har vi en bra skola för grundläggande språk, bra institut. Men för att vara ärlig, en praktikkandidat med goda hårda färdigheter är ett sällsynt fall, åtminstone i vårt epsilon-kvarter. Till exempel Swift. Det innebär mycket komplext arbete med strängar, och det är få människor som kan arbeta med dem över huvudet. Ögat fångar omedelbart din uppmärksamhet. Under intervjuer ger jag ofta en uppgift som är relaterad till strängbearbetning. Och under hela denna tid var det bara en person som kunde skriva en sådan Swift-kod direkt, på ett papper. Efter det gick jag runt och berättade för alla att någon äntligen kunde lösa det här problemet i Swift på ett papper.

Testa algoritmer under en intervju

Detta är ett separat ämne eftersom kandidaterna fortfarande har en fråga - varför bedömer vi alltid kunskap om algoritmer och datastrukturer? Även framtida mobilutvecklare och frontend-utvecklare genomgår sådana tester.

Misha:

Under intervjun kommer vi säkert att ge något slags algoritmproblem. Kandidaten måste ta reda på hur man implementerar det i Python, helst utan fel. Du måste förstå hur du kontrollerar ditt program och korrigerar det själv.

Praktik inom IT: en chefssyn

Erfarenhet av algoritmer är användbar av tre anledningar. För det första kommer det uppenbarligen att behövas i algoritmiska uppgifter - som inte händer ofta, men som händer. För det andra kommer utvecklaren att mer effektivt kunna lösa problem relaterade till algoritmer, även om de inte behöver fördjupa sig i själva algoritmerna (och det finns redan en hel del av dem). För det tredje, om du inte har lärt dig algoritmer på universitetet, men du fortfarande vet hur du ska arbeta med dem, så kännetecknar detta dig som en nyfiken person och kommer att öka din auktoritet i intervjupersonens ögon.

Denis:

En stor del av mobilutvecklingen är JSON-shuffling. Men en gång var sjätte månad finns det fall då algoritmer behövs. Jag håller just nu på att rita vackra kartor för Yandex.Weather. Och på en vecka var jag tvungen att implementera utjämningsalgoritmen, Sutherland-Hodgman-algoritmen och Martinez-algoritmen. Om en person inte visste vad en hashmap eller en prioriterad kö var, skulle han ha fastnat med den länge och det skulle vara oklart om han skulle ha klarat det eller inte utan hjälp utifrån.

Algoritmer är grunden för utveckling. Detta är vad som hjälper en utvecklare att vara en utvecklare. Det spelar ingen roll vad du gör. De behövs också i enkla projekt, där huvudarbetet består av att ”översätta JSON”. Även om du inte skriver själva algoritmerna, utan du implicit använder vissa datastrukturer, är det bättre att förstå dem. Annars kommer du att få applikationer som är långsamma eller felaktiga.

Det finns programmerare som kom in i utvecklingen akademiskt: de gick in på universitetet, studerade i fem år och fick en specialitet. De känner till algoritmerna eftersom de lärde sig. Och då kännetecknar inte kunskapen om algoritmer i sig en persons horisont på något sätt, denna horisont måste testas på ett annat sätt.

Och det finns självlärda människor, som jag själv räknar med. Ja, formellt har jag en IT-utbildning, diplom i mjukvaruteknik. Men självlärda lärde sig att programmera "trots det". De hade inget universitetsprogram. Vanligtvis är de inte bekanta med algoritmer - eftersom de aldrig har mött behovet av att studera dem. Och när en sådan person förstår algoritmer betyder det att han tillbringade tid och förstod dem. Efter examen från universitetet insåg jag att jag hade blinda fläckar när det gäller grundläggande algoritmer - faktum är att min specialitet tillämpades. Jag gick och studerade onlinekurser från Princeton University, den välkände Robert Sedgwick. Jag kom på det och gjorde alla mina läxor. Och när en person berättar en liknande historia under en intervju blir jag direkt intresserad, jag har en önskan att arbeta med honom eller åtminstone fortsätta samtalet.

Praktik inom IT: en chefssyn

Ignat:

När du intervjuar en praktikant förväntar du dig på vissa sätt ännu mer än av en erfaren utvecklare. Vi pratar om förmågan att lösa algoritmiska problem, skriv snabbt åtminstone någon korrekt kod. Praktikkandidaten är kvar på universitetet. För bara ett år sedan fick han veta allt om algoritmer i detalj. Det förväntas att han kan reproducera dem. Om en person är adekvat och lyssnade på föreläsningarna noggrant, kommer han helt enkelt att veta allt, hämta det från cachen.

Vilka uppgifter löser praktikanten?

Vanligtvis kan praktikprogrammet beskrivas och diskuteras under de avslutande intervjuerna. Först i början av arbetet kan en praktikant tilldelas utbildningsuppgifter, vars resultat inte kommer att användas i produktionen. Sannolikheten att få sådana uppgifter är dessutom liten. Oftast ges stridsprojekt från eftersläpningen, det vill säga de som erkänns som värda uppmärksamhet, men inte prioriterade och "separerbara" - så att andra komponenter inte beror på deras genomförande. Chefer försöker fördela dem så att praktikanten lär känna olika delar av tjänsten och arbetar i samma miljö med andra teammedlemmar.

Ignat:

Det är extremt användbara uppgifter. De kanske inte ökar klusteranvändningen med 10 % eller sparar företaget en miljon dollar, men de kommer att göra hundratals människor glada. Till exempel har vi för närvarande en praktikant som arbetar med vår kund för att driva verksamheten på våra kluster. Innan operationen startas måste vissa data laddas till klustret. Detta tar vanligtvis 20–40 sekunder, och innan det skedde tyst: du startade det i konsolen och satt där och tittade på en svart skärm. Praktikanten kom och gjorde funktionen på två veckor: nu kan du se hur filerna laddas upp och vad som händer. Uppgiften är å ena sidan inte svår att beskriva, men å andra sidan finns det något att gräva i, vilka bibliotek man ska titta på. Det bästa är att du gjorde det, det gick en vecka, det visade sig vara på kluster, folk använder det redan. När du skriver ett inlägg på det interna nätverket säger de tack.

Praktik inom IT: en chefssyn

Misha:

Praktikanter förbereder modeller, samlar in data för dem, kommer med mätvärden och genomför experiment. Efter hand börjar vi helt enkelt ge honom mer frihet och ansvar – vi kollar om han klarar det. Om ja, flyttar han till nästa nivå. Vi utgår inte från att när en praktikant kommer in så vet de hur man gör allt. Chefen hjälper honom att ta reda på det, ger honom en länk till en intern resurs eller onlinekurs.

Om en praktikant visar sig vara på sitt bästa, kan han få något av prioritet, viktigt för institutionen eller andra tjänster.

Dima:

Vår praktikant gör nu svåra modifieringar av bedrägeribekämpningen. Detta är ett system som bekämpar en mängd olika missbruk och bedrägerier på Yandex-tjänster. Först tänkte vi ge saker som inte var särskilt komplexa och inte särskilt viktiga för produktionen. Vi försöker tänka igenom praktikantens uppgifter i förväg, men sedan såg vi att personen "brände" och löste problem snabbt och bra. Som ett resultat började vi anförtro honom att lansera bedrägeribekämpning för nya tjänster.

Dessutom finns det en liten chans att få en uppgift som kollegor inte tidigare närmat sig på grund av dess volym.

Dima:

Det finns ett gammalt system, och det finns ett nytt, ännu inte färdigställt. Det är nödvändigt att flytta från en till en annan. I framtiden är detta ett viktigt projekt, om än med hög osäkerhet: du behöver kommunicera mycket, läsa obegriplig äldre kod. Vid den avslutande intervjun sa vi ärligt till praktikanten att uppgiften var svår. Han svarade att han var redo, kom till vårt team och allt löste sig för honom. Det visade sig att han har egenskaperna som inte bara en utvecklare utan också en chef. Han var redo att gå runt, ta reda på det, plinga.

Mentor för en praktikant

En praktikant behöver en mentor för att fördjupa sig i processer. Det här är en person som är medveten om inte bara sina egna uppgifter, utan även praktikantens uppgifter. Regelbunden kommunikation etableras med mentorn, du kan alltid vända dig till honom för råd. Mentorn kan vara antingen gruppledaren (om det är en liten grupp) eller en av kollegorna, vanliga teammedlemmar.

Ignat:

Jag försöker komma upp minst varannan dag och fråga hur det går för praktikanten. Om jag ser att jag har fastnat försöker jag hjälpa honom, fråga honom vad problemet är och gräva fram det med honom. Det är tydligt att detta tar bort min energi och gör att praktikantens arbete inte är så integrerat effektivt - jag slösar också bort min tid. Men detta tillåter honom att inte fastna i någonting och få resultat. Och det är fortfarande snabbare än om jag gjort det själv. Själv behöver jag ca 5 timmar för uppgiften. Praktikanten kommer att göra det om 5 dagar. Och ja, jag kommer att spendera 2 timmar under dessa 5 dagar för att chatta med praktikanten och hjälpa till. Men jag kommer att spara minst 3 timmar, och praktikanten kommer att vara glad att han fick lite råd och hjälp. I allmänhet behöver du bara kommunicera nära, se vad personen gör och inte tappa kontakten.

Praktik inom IT: en chefssyn

Seryozha:

Praktikanten är ständigt i kontakt med sin mentor och kommunicerar med honom flera gånger om dagen. Mentorn granskar koden, gör parprogrammering med praktikanten och hjälper till när några problemområden uppstår. Det är på detta sätt, genom att kombinera hjälp av en mentor och riktiga stridsuppgifter, som vi utbildar front-end-utvecklare.

Dima:

För att förhindra att en praktikant blir övergiven diskuterar vi vem som ska mentora honom redan innan anställningen. Detta är också en stor uppgradering för mentorn själv: förberedelse för rollen som teamleader, testning av förmågan att ha i åtanke både sin egen uppgift och praktikantens uppgift. Det är regelbundna möten, som jag ibland går på själv, för att hålla mig informerad. Men det är mentorn som kommunicerar med praktikanten ganska regelbundet. Han tillbringar mycket tid i början, men det lönar sig.

Att ha en mentor betyder dock inte att alla problem som uppstår löses genom honom.

Misha:

Det är brukligt för oss att människor som ställs inför problem ber grannar och kollegor om råd och snabbt får hjälp. Ju snabbare en person växer, desto oftare behöver han gå till sina kollegor för att lära sig något. Det är till och med bra att helt enkelt lära sig om andras uppgifter så att du kan komma på nya. När en praktikant kan komma överens, förstå vad som är viktigt för den andra sidan och komma till resultat i ett team, kommer han att växa mycket snabbare än någon för vilken chefen måste göra allt detta.

Seryozha:

Det finns dokumentation, men det mesta av informationen försvinner i luften. Om du tar till dig det tidigt i din karriär är det en extra fördel, och vi kan fokusera personen på vad de behöver lära sig.

Den idealiska praktikanten är någon som tränar i flera månader, blir juniorutvecklare, sedan bara utvecklare, sedan teamledare etc. Detta kräver en arketyp av en student som inte skäms för att fråga om något inte är klart för honom, men kan även arbeta självständigt. Om han fick veta att han kunde läsa om det någonstans, skulle han gå, läsa det och faktiskt återkomma med ny kunskap. Han kan göra misstag, men han bör inte göra misstag mer än en gång, max två gånger, på samma plats. Den ideala praktikanten ska utvecklas, absorbera allt som en svamp, lära sig och växa. Den som sitter och försöker reda ut allt på egen hand, spenderar lång tid med att peta runt och inte ställer några frågor, kommer knappast att vänja sig.

Slut på praktik

Innan vi börjar arbeta tecknar vi ett visstidskontrakt med varje praktikant. Naturligtvis är praktiken betald, formaliserad i enlighet med Ryska federationens arbetskod, och praktikanten har samma fördelar som alla andra Yandex-anställda. Efter tre månader avslutas programmet - vi överför sedan många av praktikanterna till personalen (på ett tillsvidarekontrakt).

Praktik inom IT: en chefssyn

Å ena sidan är det viktigt för chefen att utvecklaren uppfyller sitt internminimum. Det är där praktikanten leds, med början på intervjun. Detta är dock bara början på historien. För oss är en praktikant alltid en potentiell kandidat för personal. Minimiprogrammet för en chef är att redan i början identifiera en person som efter tre månader inte skäms för att rekommendera till andra avdelningar. Det maximala programmet är att behålla honom i samma team och anställa honom som anställd. Samtidigt tar vi hänsyn till att en andra- eller tredjeårsstudent - även om han blivit praktikant - kommer att behöva fortsätta sina studier vid ett universitet med läsårets början.

Seryozha:

Först och främst är praktikanter för oss mänskliga resurser. Vi försöker få människor att växa inom Yandex så att de är idealiska för våra uppgifter. Vi ger dem allt, från en kultur av kommunikation och interaktion i team till encyklopedisk kunskap om alla våra system.

Ignat:

När vi anställer en praktikant provar vi omedelbart ut honom för att ansluta sig till vårt team. Och som regel är det enda hindret avsaknaden av en ledig plats. Vi försöker anställa tillräckligt många unga killar som praktikanter. Om en person har fem års utvecklingserfarenhet kommer han till Yandex och är praktikant på nivån, så, tyvärr, för oss betyder detta att även om han är en fantastisk kille, eftersom han får jobb på Yandex med fem års erfarenhet kommer han inte att kunna växa till en senior utvecklare. Det är vanligtvis en fråga om hastighet: långsam tillväxt i det förflutna kommer att innebära långsam tillväxt här. Ja, ibland kommer förståelsen att en person inte klarar uppgiften först efter tre månader. Men detta är ganska sällsynt. I mer än hälften av fallen är vi redo att anställa personal. I mitt minne har det aldrig hänt att en person framgångsrikt genomfört en praktikplats, men inte klarat av en intervju för en heltidstjänst.

Misha:

Vi erbjuder alla framgångsrika praktikanter att stanna kvar i företaget. Efter praktik tar vi vanligtvis mer än hälften på heltid. Sommarpraktik är svårare eftersom det ofta kommer tredjeårsstudenter till oss och det är svårt för dem att kombinera arbete och studier.

Dima:

Låt oss säga att praktikanten gör ett bra jobb och har många möjligheter att växa till en bra utvecklare – även om han inte har tillräckligt med erfarenhet just nu. Och anta att det inte finns någon ledig plats för ett tillsvidarekontrakt. Då är allt enkelt: jag måste gå till min chef och säga till honom - det här är en väldigt cool person, vi måste behålla honom med alla medel, låt oss erbjuda honom något, låt oss hitta en plats att placera honom på.

Berättelser om praktikanter

Denis:

Tjejen som fick praktik hos oss 2017 var från Perm. Detta är 400 kilometer från Jekaterinburg västerut. Och varje vecka kom hon till oss från Perm med tåg till School of Mobile Development. Hon kom på dagen, studerade på kvällen och gick tillbaka sent på kvällen. Vi uppskattade en sådan iver och bjöd in henne till jobbet, och det gav resultat.

Ignat:

För flera år sedan deltog vi i ett internt utbytesprogram. Det var intressant att jobba med utländska killar. Men praktikanterna därifrån är inte starkare än till exempel från ShAD eller från datavetenskapliga fakulteten. Det verkar som att EPFL är bland de 20 bästa universiteten i Europa. I det ögonblicket, som en fortfarande inte särskilt erfaren intervjuare, hade jag den här förväntningen: otroligt, vi intervjuar människor från EPFL, de kommer att bli supercoola. Men personer som har fått en grundläggande utbildning om kodning här – bland annat vid viktiga regionala universitet – visar sig vara ganska på topp.

Eller en annan historia. Nu har jag en kille i min stab, han är väldigt ung, ungefär 20 år gammal. Jobbar i St Petersburg, kom för praktik. Han är väldigt cool. Du, som vanligt, ger en person problem, han löser dem, och en månad senare kommer han och säger: Jag löste dem, jag tittar, och det verkar som att din arkitektur är dåligt byggd. Låt oss göra om det. Koden blir enklare och tydligare. Jag avrådde honom naturligtvis: mängden arbete är stort, det finns ingen vinst för användarna, men idén låter helt rimlig. Personen kom på en komplicerad process med flera trådar och föreslog förbättringar - kanske olämpliga sådana, omfaktorer för omfaktoreringens skull. Men så fort du vill komplicera den här koden kan du fortfarande göra denna refaktorering. Det gick faktiskt flera månader och vi tog oss an denna uppgift. Jag anlitade honom gärna. Vi är alla inte genier. Du kan komma, hitta på något och peka på våra problem. Detta uppskattas.

Misha:

Vi har så idealiska praktikanter. Trots bristen på erfarenhet ser de uppgiften inte bara på en teknisk, utan också på en global nivå. De erbjuder grundläggande förbättringar. De har en förståelse för hur man kan översätta problem från den verkliga världen till den tekniska världen utan att förlora sin mening. De undrar vad det slutliga målet är, om det är värt att gräva i detaljer nu eller om de helt kan ändra inställningen till uppgiften eller till och med problemformuleringen. Det betyder att de har potential att vara flera nivåer högre. För att gå den här vägen behöver de bara uppgradera vissa färdigheter och interna verktyg. Dessutom starta flera framgångsrika projekt.

Praktik inom IT: en chefssyn

Källa: will.com

Lägg en kommentar