Stage in IT: het perspectief van een leidinggevende

Stage in IT: het perspectief van een leidinggevende

De aanmelding voor de zomerstage bij Yandex gaat door. Het richt zich op vijf gebieden: backend, ML, mobiele ontwikkeling, frontend en analytics. In deze blog, evenals in andere blogs op Habr en daarbuiten, vind je veel informatie over hoe de stage verloopt. Maar veel van dit proces blijft een raadsel voor degenen die niet in het bedrijf werken. En als je vanuit het perspectief van de ontwikkelingsleiders kijkt, ontstaan er nog meer vragen. Hoe voer je een stage goed uit, hoe maximaliseer je wederzijdse voordelen met de stagiair, hoe leer je hem in drie maanden alles wat nodig is voor verdere samenwerking?

We hebben dit artikel met vijf personen voorbereid. Laat ons ons voorstellen: Ihnat Kolesnichenko van de dienst voor gedistribueerde rekenkunde, Misha Levin van de dienst voor kunstmatige intelligentie van de Markt, Denis Malykh van de afdeling applicatieontwikkeling, Sergey Berezhnoi van de afdeling ontwikkeling van zoekinterfaces en Dima Cherkasov van de anti-fraudegroep. Elk van ons vertegenwoordigt zijn eigen stagegebied. We zijn allemaal leidinggevenden, we hebben stagiairs nodig, en we hebben enige ervaring met hen. Laten we wat van deze ervaring delen.

Het sollicitatiegesprek voor de stage

De kandidaten worden verwelkomd met verschillende technische sollicitatiegesprekken. Succes in het sollicitatiegesprek hangt minder af van soft skills (het vermogen om effectief te communiceren) en meer van hard skills (vaardigheden in wiskunde en programmeren). Toch waarderen de leidinggevenden beide.

Ihnat:

Zelfs als iemand heel goed is, maar helemaal niet communicatief — hij zal niet al zijn vaardigheden kunnen toepassen. We letten hier natuurlijk op, maar dit is geen reden om iemand niet voor de stage aan te nemen. In drie maanden kan alles veranderen, en bovendien kan je eerste indruk onjuist zijn. En als alles klopt — dan moet je die persoon uitleggen, hem naar andere teams zoeken. Voor stagiairs is communicativiteit zeker geen cruciale factor. Professionele vaardigheden zijn toch veel belangrijker.

Denis:

Ik hou van mensen die verhalen vertellen – in de goede zin van het woord. Iemand die kan vertellen hoe ze met hun team heldhaftig een of andere blunder hebben opgelost, is interessant. Ik begin extra vragen te stellen wanneer zo'n verhaal naar boven komt. Maar dit gebeurt zelden als je gewoon vraagt: 'vertel iets interessants over je projecten.'

Een kandidaat zei ooit een geweldige zin die ik zelfs heb opgeschreven: 'Ik heb met succes saaie taken vermeden.'

Stage in IT: het perspectief van een leidinggevende

Omdat er weinig tijd is voor interactie, probeert de interviewer elke minuut van de ontmoeting bruikbare informatie over de kandidaat te verkrijgen. Het is geweldig als de kandidaat van tevoren heeft nagedacht over welke details van zijn ervaring (niet uit het cv) hij zou kunnen delen. Dit moet een kort, relevant verhaal zijn.

Denis:

Ik let erop als iemand vertelt dat hij veel talen en benaderingen heeft geprobeerd. Mensen met een breder perspectief bedenken in een stressvolle situatie elegantere oplossingen. Maar dit is een twijfelachtige plus. Je kunt oppervlakkig kennismaken zonder daadwerkelijk iets te leren.

Tijd voor de verhalen die Denis vertelt, is meestal alleen op het laatste gesprek. Tot dan moet je de fundamentele en praktische kennis tonen die de basis zal vormen voor het toekomstige werk. En natuurlijk moet je code schrijven op het bord of op een vel papier.

Misha:

We controleren de kennis van de waarschijnlijkheidstheorie en de wiskundige statistiek. We kijken of iemand ervaring heeft met metrics, machine learning algoritmes, hun parameters instellen, overfitting, enzovoort. We verwachten dat iemand voldoende code kan schrijven om een analist te zijn.

Denis:

Degen die op gesprek komen, kennen meestal de talen: we hebben in Jekaterinenburg goede scholen voor de basisvaardigheden en goede instellingen. Maar om eerlijk te zijn, is een stagiair met goede hard skills een zeldzaamheid, althans in onze epsilon-omgeving. Neem bijvoorbeeld Swift. Het werken met strings in die taal is erg complex, en er zijn weinig mensen die dat uit het hoofd kunnen. Degenen die dat kunnen, vallen meteen op. Tijdens sollicitaties geef ik vaak een taak die precies verband houdt met stringverwerking. En in al die tijd was er maar één persoon die ter plekke, op een papiertje, in staat was om dergelijke Swift-code te schrijven. Daarna ging ik rond vertellen dat iemand eindelijk in staat was om deze taak op Swift op papier op te lossen.

Algoritmecontroles tijdens sollicitaties

Dit is een apart onderwerp, aangezien kandidaten nog steeds de vraag stellen — waarom beoordelen we altijd de kennis van algoritmen en datastructuren? Zelfs toekomstige mobiele ontwikkelaars en front-end ontwikkelaars ondergaan deze beoordeling.

Misha:

Tijdens het sollicitatiegesprek geven we altijd een algoritmische taak. De kandidaat moet bedenken hoe hij deze kan implementeren in Python, bij voorkeur zonder fouten. We moeten begrijpen hoe je je programma kunt testen en het zelfstandig kunt corrigeren.

Stage in IT: het perspectief van een leidinggevende

Ervaring met algoritmen is nuttig om drie redenen. Ten eerste is het duidelijk nodig voor algoritmische taken — die komen niet vaak voor, maar ze gebeuren toch. Ten tweede kan de ontwikkelaar efficiënter problemen oplossen die gerelateerd zijn aan algoritmen, ook al vereisen ze niet dat je de algoritmen zelf doorduikt (en daar zijn er al behoorlijk wat van). Ten derde, als algoritmen je niet zijn onderwezen aan de universiteit, maar je weet er toch mee om te gaan, geeft dat je het imago van een leergierig persoon en verhoogt dat je autoriteit in de ogen van de interviewer.

Denis:

Een groot deel van mobiele ontwikkeling bestaat uit het 'verplaatsen van JSON'. Maar eens per half jaar zijn er gevallen waarin algoritmen nodig zijn. Ik ben momenteel mooie kaarten voor Yandex.Weer aan het maken. En in een week moest ik het gladheidsalgoritme, het Sutherland-Hodgman-algoritme en het Martinez-algoritme implementeren. Als iemand niet weet wat een hash-map of een prioriteitswachtrij is, zou hij daar lang mee bezig zijn en het zou onduidelijk zijn of hij het zonder hulp zou kunnen oplossen.

Algoritmes zijn de basis van ontwikkeling. Dit is wat een ontwikkelaar helpt om een ontwikkelaar te zijn. Het maakt niet uit wat je doet. Ze zijn nodig, zelfs in eenvoudige projecten, waar het belangrijkste werk bestaat uit het "herorganiseren van JSON". Zelfs als je de algoritmes zelf niet schrijft, maar impliciet gebruik maakt van bepaalde datastructuren, is het beter om ze te begrijpen. Anders krijg je applicaties die traag of onjuist functioneren.

Er zijn programmeurs die academisch in de ontwikkeling zijn gekomen: ze zijn naar de universiteit gegaan, hebben vijf jaar lang eerlijk gestudeerd en een diploma behaald. Ze kennen algoritmes omdat ze ervoor zijn opgeleid. Het weten van algoritmes zegt echter niets over de brede blik van een persoon; deze moet op een andere manier worden gecontroleerd.

En er zijn zelfstudie-programmeurs, waar ik mezelf ook bij reken. Ja, formeel heb ik een IT-opleiding, een diploma als software-ingenieur. Maar zelfstudie-programmeurs hebben leren programmeren "ondanks" hun achtergrond. Ze hadden geen universitaire programma's. Gewoonlijk zijn ze niet bekend met algoritmes, omdat ze nooit de noodzaak hebben gehad om deze te bestuderen. En wanneer zo iemand algoritmes begrijpt, betekent dit dat hij tijd heeft besteed en zich erin heeft verdiept. Na mijn studie begreep ik dat er leemtes waren in mijn kennis van fundamentele algoritmes — dat komt omdat mijn specialisatie praktisch was. Ik ben gegaan en heb online cursussen van de Princeton Universiteit bestudeerd, bekend door Robert Sedgewick. Ik heb het begrepen en al het huiswerk gemaakt. En wanneer iemand tijdens een sollicitatiegesprek een vergelijkbaar verhaal vertelt, wordt mijn interesse meteen gewekt, en krijg ik de wens om met hem samen te werken of op zijn minst het gesprek voort te zetten.

Stage in IT: het perspectief van een leidinggevende

Ihnat:

Wanneer je een stagiair interviewt, verwacht je in zekere zin zelfs meer dan van een ervaren ontwikkelaar. Het gaat om het vermogen om algoritmische taken op te lossen en snel enige correcte code te schrijven. De kandidaat voor de stage zit immers nog op de universiteit. Slechts een jaar geleden werd hem alles over algoritmes in detail uitgelegd. Het wordt verwacht dat hij ze kan reproduceren. Als iemand redelijk is en aandachtig naar de colleges heeft geluisterd, weet hij gewoon alles, hij haalt het zo uit zijn geheugen.

Welke taken voert een stagiair uit

Een stageprogramma kan meestal worden besproken en gepland tijdens de laatste sollicitatiegesprekken. Een stagiair krijgt in de beginfase van zijn werk vaak trainingsopdrachten, waarvan het resultaat niet in de productie zal worden gebruikt. Bovendien is de kans om dergelijke taken te krijgen klein. Meestal worden er operationele projecten uit de backlog aangeboden, dat wil zeggen die welke als waardevol worden beschouwd, maar niet prioritair zijn en 'afzonderlijk' kunnen worden behandeld - zodat hun uitvoering niet afhankelijk is van andere componenten. Leidinggevenden proberen deze zo toe te wijzen dat de stagiair kennismaakt met verschillende delen van de service en in dezelfde omgeving werkt als andere teamleden.

Ihnat:

Dit zijn uiterst nuttige taken. Misschien verhogen ze de clusterbenutting niet met 10%, besparen ze het bedrijf geen miljoen dollar, maar maken ze honderden mensen gelukkig. We hebben bijvoorbeeld momenteel een stagiair die zich bezighoudt met onze klant voor het uitvoeren van operaties op onze clusters. Voor de uitvoering moet de operatie enkele gegevens naar de cluster uploaden. Dit duurt meestal 20–40 seconden en eerder gebeurde dit stilzwijgend: je startte het in de console en zat gewoon naar het zwarte scherm te kijken. De stagiair kwam binnen en maakte in twee weken een functie: nu kun je zien hoe de bestanden worden geüpload en wat er gebeurt. De taak is aan de ene kant niet moeilijk te beschrijven, maar aan de andere kant is er genoeg om in te duiken en te kijken naar welke bibliotheken je moet bekijken. Het mooiste is dat je het hebt gedaan, er is een week verstreken, het staat op de clusters en mensen gebruiken het al. Je schrijft een bericht in het interne netwerk - en krijgt dank terug.

Stage in IT: het perspectief van een leidinggevende

Misha:

Stagiairs bereiden modellen voor, verzamelen gegevens hiervoor, bedenken metrics en voeren experimenten uit. Geleidelijk beginnen we hem gewoon meer vrijheid en verantwoordelijkheid te geven - we controleren of hij het aankan. Zo ja - dan gaat hij naar het volgende niveau. We verwachten niet dat de stagiair alles al kan als hij binnenkomt. De leidinggevende helpt hem op weg, geeft een link naar een interne bron of een online cursus.

Als de stagiair zich goed bewijst, kan hem iets prioritairs, belangrijks voor de afdeling of andere services worden toevertrouwd.

Dima:

Onze stagiair is momenteel bezig met hardcore aanpassingen voor antifraudebestrijding. Dit is een systeem dat zich bezighoudt met verschillende vormen van misbruik en fraude op de diensten van Yandex. In het begin dachten we aan minder complexe en minder cruciale taken voor productie. We proberen van tevoren de taken voor de stagiair goed te doord denken, maar we merkten dat hij snel en goed problemen oploste. Uiteindelijk hebben we hem de start van antifraude voor nieuwe diensten toegewezen.

Daarnaast is er een kleine kans op het krijgen van een taak waar collega's eerder niet aan begonnen zijn vanwege de omvang.

Dima:

Er is een oud systeem en er is een nieuw, nog niet afgemaakt systeem. We moeten de overstap maken van het ene naar het andere. Op de lange termijn is dit een belangrijk project, ondanks de hoge onzekerheid: er moet veel gecommuniceerd worden en er moet onbekende legacy-code gelezen worden. We hebben tijdens het eindgesprek eerlijk tegen de stagiair gezegd dat de taak ingewikkeld is. Hij antwoordde dat hij er klaar voor was, kwam bij ons in het team, en het is hem gelukt. Het bleek dat hij niet alleen kwaliteiten als ontwikkelaar had, maar ook als manager. Hij was bereid zelf rond te lopen, informatie te verzamelen en te pingelen.

Mentorschap van de stagiair

De stagiair heeft een mentor nodig om in de processen te duiken. Dit is iemand die niet alleen op de hoogte is van zijn eigen taken, maar ook van de taken van de stagiair. Er is regelmatig contact met de mentor, en je kunt altijd om advies vragen. De mentor kan ofwel de teamleider zijn (als het een kleine groep is), of iemand uit de collega's, vaste teamleden.

Ihnat:

Ik probeer minstens om de dag te vragen hoe het met de stagiair gaat. Als ik zie dat hij vastloopt, probeer ik te helpen, vraag ik wat het probleem is en samen lossen we het op. Het is duidelijk dat dit mijn energie kost en de efficiëntie van de stagiair als geheel vermindert - ik besteed ook mijn tijd eraan. Toch helpt dit hem om niet vast te lopen, en hij behaalt resultaten. Het is zelfs sneller dan wanneer ik het zelf zou doen. Zelf heb ik voor een taak ongeveer 5 uur nodig. De stagiair doet het in 5 dagen. En ja, ik besteed in die 5 dagen 2 uur aan het communiceren met de stagiair om te helpen. Maar ik bespaar tenminste 3 uur, en de stagiair zal blij zijn dat hij geholpen is. Over het geheel genomen moeten we gewoon nauw contact houden, kijken wat iemand doet en in contact blijven.

Stage in IT: het perspectief van een leidinggevende

Sergio:

Een stagiair is voortdurend in contact met zijn mentor en communiceert meerdere keren per dag met hem. De mentor reviewt de code, doet pair programming met de stagiair en biedt hulp wanneer er problemen optreden. Op deze manier, door een combinatie van mentorondersteuning en echte werkgerelateerde taken, leiden we front-end ontwikkelaars op.

Dima:

Om ervoor te zorgen dat de stagiair niet alleen gelaten wordt, bespreken we al vóór de aanstelling wie zijn mentor zal zijn. Dit is ook een grote ontwikkeling voor de mentor zelf: het voorbereiden op de rol van teamlead, en het verifiëren van zijn vermogen om zowel zijn eigen taken als die van de stagiair in gedachten te houden. Er zijn regelmatig vergaderingen, waar ik soms zelf ook bij aanwezig ben om op de hoogte te blijven. Maar de mentor communiceert regelmatig met de stagiair. Aanvankelijk besteedt hij veel tijd, maar dit betaalt zich terug.

Echter, het hebben van een mentor betekent niet dat alle vragen via hem opgelost worden.

Misha:

Bij ons is het gebruikelijk dat mensen die met een probleem geconfronteerd worden, advies vragen aan buren, collega's en snel hulp vinden. Hoe sneller iemand groeit, hoe vaker hij naar collega's moet gaan om iets te leren. Het is zelfs nuttig om op de hoogte te zijn van de taken van anderen om nieuwe ideeën te bedenken. Wanneer een stagiair in staat is om zelfstandig te onderhandelen, te begrijpen wat belangrijk is voor de andere partij, en tot een resultaat binnen het team te komen, groeit hij veel sneller dan degene voor wie de leiding dit allemaal moet doen.

Sergio:

Er is documentatie, maar het grootste deel van de informatie is ongrijpbaar. Als je dit aan het begin van je carrière oppikt, biedt dat een extra voordeel, en we kunnen iemand focussen op wat hij moet leren.

De ideale stagiair is degene die enkele maanden stage loopt, vervolgens junior ontwikkelaar wordt, daarna gewoon ontwikkelaar, dan teamleider, enzovoort. Hiervoor is een archetype van een leerling nodig die niet aarzelt om vragen te stellen als hij of zij iets niet begrijpt, maar tegelijkertijd in staat is om zelfstandig te werken. Als hem is verteld dat hij daarover iets kan lezen, gaat hij het lezen en komt hij daadwerkelijk terug met nieuwe kennis. Hij kan fouten maken, maar hij mag niet meer dan één of maximaal twee keer op dezelfde plek fout gaan. De ideale stagiair moet zich ontwikkelen, alles als een spons opnemen, leren en groeien. Degene die blijft zitten, probeert alles zelf uit te zoeken, lang twijfelt, geen vragen stelt, zal waarschijnlijk niet overleven.

Einde van de stage

Voorafgaand aan de werkzaamheden ondertekenen we met elke stagiair een tijdelijk contract. Uiteraard is de stage betaald, wordt het geregeld volgens de arbeidswetgeving van de Russische Federatie, en heeft de stagiair dezelfde voordelen als elk ander personeel van Yandex. De stage loopt na drie maanden af — veel stagiairs worden dan overgenomen in vaste dienst (onder een onbepaalde tijd contract).

Stage in IT: het perspectief van een leidinggevende

Aan de ene kant is het voor de leidinggevende belangrijk dat de ontwikkelaar zijn stagiair-minimum behaalt. Dit is wat het stagiair start vanaf het sollicitatiegesprek. Echter, dit is pas het begin van het verhaal. De stagiair is voor ons altijd een potentiële kandidaat voor een vaste aanstelling. Het minimumprogramma voor de leidinggevende is om al in het begin zo'n persoon te herkennen, die na drie maanden zonder schaamte kan worden aanbevolen voor andere afdelingen. Het maximale programma — is om hem of haar in hetzelfde team te behouden door een vaste aanstelling aan te bieden. Hierbij houden we er rekening mee dat een tweede- of derdejaarsstudent — zelfs als hij of zij een stagiair is geworden — bij het begin van het studiejaar zijn of haar studie aan de universiteit moet voortzetten.

Sergio:

Ten eerste zijn stagiairs voor ons een potentieel personeelsbestand. We proberen mensen binnen Yandex op te leiden zodat ze perfect passen bij onze taken. We bieden hen alles, vanaf de cultuur van communicatie en samenwerking in teams tot encyclopedische kennis over al onze systemen.

Ihnat:

Wanneer we een stagiair aannemen, passen we hem direct in ons team aan. Over het algemeen is het enige obstakel het ontbreken van een vacature. We proberen vooral jonge jongens als stagiairs aan te nemen. Als iemand vijf jaar ontwikkelervaring heeft en als stagiair bij Yandex komt, betekent dat helaas voor ons dat hij — hoewel hij zijn kwaliteiten heeft — niet zal kunnen doorgroeien naar senior ontwikkelaar. Meestal ligt het aan de snelheid: een trage groei in het verleden betekent ook trage groei bij ons. Ja, soms komt het besef dat iemand niet goed genoeg is pas na drie maanden. Maar dat is vrij zeldzaam. In meer dan de helft van de gevallen zijn we bereid om mensen in vaste dienst te nemen. Voor zover ik het weet, is het nog nooit voorgekomen dat iemand met succes heeft stage gelopen maar niet door de sollicitatieprocedure voor een vaste functie kwam.

Misha:

Aan alle succesvolle stagiairs bieden we aan om bij het bedrijf te blijven. Na de stage nemen we meestal meer dan de helft in vaste dienst. Bij de zomerstage is het moeilijker, omdat we vaak studenten van bijvoorbeeld het derde jaar krijgen, en die vinden het lastig om werk en studie te combineren.

Dima:

Stel dat de stagiair uitstekend presteert en veel potentieel heeft om uit te groeien tot een goede ontwikkelaar — zelfs als hij momenteel niet genoeg ervaring heeft. En stel dat er geen vacatures zijn voor een onbepaalde tijd. Dan is het simpel: ik moet naar mijn leidinggevende gaan en zeggen — dit is een geweldige persoon, we moeten alles doen om hem te houden, laten we hem iets aanbieden, en kijken waar we hem kunnen plaatsen.

Verhalen over stagiairs

Denis:

Een meisje dat in 2017 bij ons stage liep, kwam uit Perm. Dat is ongeveer 400 kilometer van Jekaterinenburg naar het westen. En elke week kwam ze met de trein vanuit Perm naar de School voor Mobiele Ontwikkeling. Ze kwam 's middags aan, volgde 's avonds les en vertrok laat in de avond weer terug. Gezien deze inzet, hebben we haar gevraagd om bij ons te komen werken, en dat heeft zich dubbel en dwars bewezen.

Ihnat:

Enkele jaren geleden namen we deel aan een stage-uitwisselingsprogramma. Het was interessant om met buitenlandse jongens te werken. Maar de stagiaires daar zijn niet beter dan degenen van bijvoorbeeld SHAD of FKN. Het lijkt erop dat EPFL in de top 20 universiteiten van Europa staat. Op dat moment had ik – als iemand zonder veel ervaring in interviews – de verwachting: wauw, we interviewen mensen van EPFL, ze moeten supergoed zijn. Maar de mensen die een basisopleiding coding bij ons hebben gevolgd – ook in belangrijke regionale universiteiten – blijken prima op niveau te zijn.

Of een ander verhaal. Momenteel heb ik een jongen in mijn team, nog heel jong, ongeveer 20 jaar. Hij werkt in St. Petersburg en kwam voor een stage. Hij is echt geweldig. Zoals gebruikelijk geef je iemand taken, hij lost ze op, en na een maand komt hij terug en zegt: ik heb het opgelost, ik kijk en het lijkt erop dat jullie architectuur slecht is opgebouwd. Laten we het opnieuw doen. De code wordt eenvoudiger en duidelijker. Ik heb hem natuurlijk afgeraden: de werklast is groot, er is geen winst voor de gebruikers, maar het idee klinkt absoluut redelijk. De jongen heeft zich verdiept in een complexe multithreaded proces en heeft verbeteringen voorgesteld – misschien niet op het juiste moment, refactoren om het refactoren. Maar zodra we deze code willen compliceren, kunnen we deze refactor toch uitvoeren. In feite zijn er een paar maanden voorbijgegaan, en we hebben deze taak aangepakt. Ik heb hem met veel plezier in dienst genomen. We zijn allemaal geen genieën. Je kunt komen, je verdiepen in iets en ons wijzen op onze problemen. Dat wordt gewaardeerd.

Misha:

Soms hebben we zulke ideale stagiaires. Ondanks het gebrek aan ervaring, zien ze de taak niet alleen op technisch niveau, maar ook op globaal niveau. Ze stellen principiële verbeteringen voor. Ze begrijpen hoe ze taken uit de echte wereld in technische oplossingen kunnen vertalen zonder de betekenis te verliezen. Ze denken na over het einddoel, of het de moeite waard is om in details te duiken of dat ze de benadering van de taak of zelfs de formulering van de taak volledig moeten wijzigen. Dat betekent dat ze potentieel hebben om op verschillende niveaus beter te worden. Om deze weg te bewandelen, moeten ze gewoon enkele vaardigheden en interne tools ontwikkelen. Plus het starten van een aantal succesvolle projecten.

Stage in IT: het perspectief van een leidinggevende

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster