Stagiu în IT: o perspectivă din partea managerului

Stagiu în IT: o perspectivă din partea managerului

Înscrierea pentru stagiul de vară la Yandex este în continuare deschisă. Aceasta se desfășoară pe cinci direcții: backend, ML, dezvoltare mobilă, frontend și analiză. În acest blog, precum și în alte bloguri de pe Habr și în afara acestuia, puteți găsi multe informații despre cum decurge stagiul. Totuși, multe aspecte ale acestui proces rămân o enigmă pentru cei care nu lucrează în companie. Și dacă privim din perspectiva managerilor de dezvoltare, apar și mai multe întrebări. Cum se organizează corect stagiul, cum se poate maximiza utilitatea reciprocă cu stagiarul, cum reușești să îl cunoști în trei luni și să îl înveți tot ce este necesar pentru continuarea colaborării?

Am pregătit acest articol în cinci persoane. Ne vom prezenta: Ihnat Kolesnicenko de la serviciul de tehnologii de calcul distribuit, Misha Levin de la serviciul de inteligență artificială al Market-ului, Denis Malyh de la serviciul de dezvoltare a aplicațiilor, Sergei Berezhnoi de la departamentul de dezvoltare a interfețelor de căutare și Dima Cherkasov din grupul de dezvoltare al anti-fraudei. Fiecare dintre noi reprezintă direcția sa de stagiu. Toți suntem manageri, avem nevoie de stagiari și avem o anumită experiență de lucru cu ei. Să vă povestim câteva lucruri din această experiență.

Interviul înainte de stagiu

Candidații se confruntă cu mai multe interviuri tehnice. Succesul la interviu depinde într-o măsură mai mică de abilitățile interumane (capacitatea de a comunica eficient) și într-o măsură mai mare de abilitățile tehnice (cunoștințe în matematică și programare). Totuși, managerii evaluează ambele.

Ihnat:

Chiar dacă o persoană este foarte talentată, dar complet necomunicativă — nu va putea aplica toate abilitățile. Acordăm, desigur, atenție acestui aspect, dar nu este un motiv să nu luăm pe cineva la stagiu. În trei luni, totul se poate schimba, iar, în plus, prima ta impresie poate fi greșită. Și dacă totul este corect — va trebui să explici persoanei, să căutăm echipe diferite pentru el. Pentru stagiari, comunicarea nu este, cu siguranță, un factor cheie. Totuși, abilitățile profesionale sunt mult mai importante.

Denis:

Îmi plac oamenii care spun povești — în sensul bun. O persoană care poate relata cum, împreună cu echipa, a depășit eroic o problemă este interesantă. Încep să pun întrebări suplimentare când apare o astfel de poveste. Dar asta se întâmplă rar dacă doar ceri "să vorbească despre ceva interesant în proiectele tale".

Un candidat a spus odată o frază minunată, pe care am și notat-o: "Am evitat cu succes rezolvarea sarcinilor plictisitoare".

Stagiu în IT: o perspectivă din partea managerului

Deoarece timpul de comunicare este scurt, intervievatorul încearcă în fiecare minut al întâlnirii să obțină informații utile despre candidat. Ar fi grozav dacă internul ar fi calculat dinainte ce detalii din experiența sa (nu din CV) ar putea împărtăși. Aceasta ar trebui să fie o poveste scurtă, la obiect.

Denis:

Acord atenție dacă cineva spune că a încercat multe limbi, abordări. Oamenii cu o viziune mai largă concep soluții mai elegante în timpul acțiunii. Dar aceasta este un avantaj ambiguu. Poți să aduni informații superficiale și să nu înveți nimic serios.

Timpul pentru poveștile descrise de Denis rămâne de obicei doar pentru interviul final. Până atunci, trebuie să demonstrezi acele cunoștințe fundamentale și practice care vor sta la baza muncii viitoare. Și, desigur, va fi necesar să scrii cod pe tablă sau pe o foaie de hârtie.

Misha:

Verificăm cunoștințele în teoria probabilităților și statistică matematică. Vrem să vedem dacă persoana are experiență în lucru cu metrici, algoritmi de învățare automată, reglarea parametrilor acestora, evitarea supraînvățării etc. Ne așteptăm ca persoana să poată scrie cod suficient încât să fie analist.

Denis:

Cei care vin la interviuri, în general, cunosc limbile: avem la Ecaterinburg o școală bună de limbi de bază, institute bune. Dar, sincer, un candidat pentru un stagiu cu abilități tehnice solide este o raritate, cel puțin în zona noastră epsilon. De exemplu, Swift. Este o muncă foarte complexă cu șiruri de caractere, și sunt puțini cei care pot lucra cu ele din memorie. Unii atrag imediat atenția. Adesea le ofer la interviuri o sarcină legată de procesarea șirurilor. Și pe tot parcursul timpului, a fost doar o persoană care a reușit, imediat, pe o foaie de hârtie, să scrie un astfel de cod Swift. După aceea, am mers și le-am povestit tuturor că cineva a reușit în sfârșit să rezolve această problemă în Swift pe o foaie.

Verificarea algoritmilor la interviu

Aceasta este o temă separată, deoarece candidații continuă să se întrebe — de ce evaluăm întotdeauna cunoștințele despre algoritmi și structuri de date? Chiar și viitorii dezvoltatori de mobil și frontend trec printr-o astfel de verificare.

Misha:

La interviu, oferim întotdeauna o mică problemă algoritmică. Candidatul trebuie să vină cu o soluție în Python, de preferat fără greșeli. Trebuie să înțeleagă cum să-și verifice programul și să-l corecteze singur.

Stagiu în IT: o perspectivă din partea managerului

Experiența în algoritmi este utilă din trei motive. În primul rând, aceasta este evident necesară în problemele algoritmice — care nu apar foarte des, dar totuși se întâmplă. În al doilea rând, dezvoltatorul poate rezolva mai eficient problemele legate de algoritmi, chiar dacă acestea nu necesită aprofundarea în algoritmi (iar astfel de probleme sunt deja destul de multe). În al treilea rând, dacă nu ți-au predat algoritmii la universitate, dar tu totuși știi să lucrezi cu ei, aceasta te caracterizează ca o persoană curioasă și îți va ridica autoritatea în fața intervievatorului.

Denis:

Marea majoritate a dezvoltării mobile constă în „rearanjarea JSON-ului”. Dar de două ori pe an apar cazuri când algoritmii sunt necesari. Acum desenăm hărți frumoase pentru Yandex.Weather. Și a trebuit să implementez, în decurs de o săptămână, un algoritm de netezire, algoritmul Sutherland-Hodgman și algoritmul Martinez. Dacă cineva nu știe ce este un hashmap sau o coadă de prioritate, s-ar putea să rămână blocat cu asta mult timp și nu se știe dacă ar reuși fără ajutor extern.

Algoritmii sunt baza dezvoltării. Aceasta este ceea ce ajută programatorul să devină programator. Nu contează ce faci. Sunt necesari chiar și în proiecte simple, unde munca principală constă în a "rearanja JSON-ul". Chiar dacă nu scrii tu însuți algoritmii, dar folosești în mod implicit anumite structuri de date, este mai bine să le înțelegi. Altfel, aplicațiile tale vor funcționa încet sau incorect.

Există programatori care au venit în dezvoltare pe cale academică: au intrat la universitate, au învățat cinci ani cu seriozitate, au obținut o specializare. Ei știu algoritmii, pentru că au fost învățați. În acest caz, simpla cunoaștere a algoritmilor nu caracterizează capacitățile unei persoane, trebuie să verifici acest orizont în alte moduri.

Și există autodidacți, la care mă număr și eu. Da, în mod formal am o educație în IT, un diploma de inginer programator. Însă autodidacții au învățat să programeze "în ciuda". Nu au avut un curriculum universitar. De obicei, nu sunt familiarizați cu algoritmii — pentru că nu s-au confruntat niciodată cu necesitatea de a-i studia. Și când o astfel de persoană înțelege algoritmii, înseamnă că a petrecut timp învățându-i. După ce am terminat universitatea, am realizat că am lacune în ceea ce privește algoritmii fundamentali — problema era că specializarea era aplicată. Am căutat și am studiat cursurile online ale Universității Princeton, bine cunoscutele cursuri ale lui Robert Sedgewick. Am înțeles, am realizat toate temele de casă. Și când o persoană la un interviu povestește o istorie similară, devine imediat interesant, apare dorința de a lucra cu el sau măcar de a continua discuția.

Stagiu în IT: o perspectivă din partea managerului

Ihnat:

Când intervievezi un stagiar, în anumite sensuri, te aștepți chiar mai mult decât de la un programator cu experiență. Este vorba despre abilitatea de a rezolva probleme algoritmice, de a scrie rapid un cod corect. Candidatul pentru stagiu — el este încă la universitate. Cu un an în urmă, i s-au explicat în detaliu toate despre algoritmi. Se așteaptă ca acesta să poată să le reproducă. Dacă persoana este adecvată și a ascultat cu atenție cursurile, va ști pur și simplu totul, va extrage informațiile din memorie.

Ce probleme rezolvă un stagiar

De obicei, programul de internship poate fi planificat și discutat în ultimele interviuri. Internul, la începutul activității sale, poate primi doar sarcini de antrenament, al căror rezultat nu va fi utilizat în producție. Mai mult, probabilitatea de a primi astfel de sarcini este mică. Cel mai adesea, sunt disponibile proiecte active din backlog, adică cele considerate demne de atenție, dar nu prioritare și "separate" — astfel încât realizarea lor să nu depindă de alte componente. Managerii se străduiesc să le distribuie astfel încât internul să se familiarizeze cu diferite părți ale serviciului, lucrând într-un mediu comun cu ceilalți membri ai echipei.

Ihnat:

Acestea sunt sarcini extrem de utile. Poate că nu vor crește utilizarea clusterului cu 10%, nu vor economisi un milion de dolari pentru companie, dar vor face sute de oameni fericiți. De exemplu, avem în prezent un intern care lucrează cu un client pentru a lansa operațiuni pe clusterele noastre. Înainte de lansare, operațiunea trebuie să încarce anumite date pe cluster. De obicei, acest proces durează 20–40 de secunde, și anterior se desfășura în tăcere: o lansai în consolă și aștepți, privind ecranul negru. Internul a venit și, în două săptămâni, a realizat o funcție: acum poți vedea cum se încarcă fișierele și ce se întâmplă. Sarcina, pe de o parte, este simplă în descriere, dar pe de altă parte — este ceva în care poți aprofunda, cu ce biblioteci să lucrezi. Cea mai plăcută parte este că ai realizat asta, a trecut o săptămână, a fost implementat pe clustere, iar oamenii deja îl folosesc. Scrii un post în rețeaua internă — și primești mulțumiri.

Stagiu în IT: o perspectivă din partea managerului

Misha:

Internii pregătesc modele, colectează date pentru acestea, inventează metrici și efectuează experimente. Treptat, începem să le oferim mai multă libertate și responsabilitate — verificăm dacă se descurcă. Dacă da — trec la următorul nivel. Nu presupunem că atunci când internul vine, el știe deja toate acestea. Managerul îl ajută să se familiarizeze, oferindu-i un link către o resursă internă sau un curs online.

Dacă internul își dovedește abilitățile — i se pot oferi sarcini prioritare, importante pentru departament sau pentru alte servicii.

Dima:

Stagiul nostru lucrează în prezent la îmbunătățiri hardcore ale sistemului antifraudă. Aceasta este o sistemă care se luptă cu diverse abuzuri și fraude pe platformele Yandex. La început, ne-am gândit să-i oferim sarcini care nu sunt foarte complexe și care nu sunt esențiale pentru producție. Încercăm din timp să planificăm sarcinile stagiului, dar am observat că persoana „arde”, rezolvă rapid și eficient problemele. În cele din urmă, am început să-i încredințăm lansarea sistemului antifraudă pentru noi servicii.

În plus, există o mică șansă să primească o sarcină pe care colegii nu au abordat-o anterior din cauza volumului acesteia.

Dima:

Există un sistem vechi și unul nou, care încă nu este finalizat. Trebuie să facem tranziția de la unul la altul. Pe termen lung, acesta este un proiect important, deși cu o mare incertitudine: este nevoie de multe discuții, de a citi un cod legacy complicat. La interviul final, i-am spus sincer stagiarului că sarcina este complicată. El a răspuns că este pregătit, a venit în echipa noastră și a reușit. S-a dovedit că are calități nu doar de dezvoltator, ci și de manager. Era dispus să se deplaseze, să întrebe și să facă follow-up.

Mentorat pentru stagiar

Stagiarului îi trebuie un mentor pentru a se integra în procese. Aceasta este o persoană care este la curent nu doar cu sarcinile sale, ci și cu cele ale stagiarului. Cu mentorul există o comunicare regulată, la care se poate apela întotdeauna pentru sfaturi. Mentorul poate fi fie liderul grupului (dacă este un grup mic), fie cineva din rândul colegilor, participanți permanenți în echipă.

Ihnat:

Încerc să mă apropii de el cel puțin o dată la două zile, să-l întreb cum îi merge. Dacă observ că s-a blocat, încerc să-l ajut, să întreb ce problemă are și să o dezvăluim împreună. Este clar că acest lucru îmi consumă energia și face munca stagiarului să nu fie atât de eficientă pe termen lung — și eu îmi pierd timpul. Dar le permite să nu se blocheze și să obțină rezultate. Și oricum este mai rapid decât dacă aș face eu totul. La mine ar dura aproximative 5 ore să rezolv o sarcină. Stagiul o va face în 5 zile. Și da, voi petrece 2 ore în aceste 5 zile pentru a vorbi cu stagiarul și a-l ajuta. Dar totuși economisesc 3 ore și stagiarului îi va face plăcere că a fost îndrumat și ajutat. În general, trebuie doar să comunicăm strâns, să observăm ce face persoana și să nu pierdem contactul.

Stagiu în IT: o perspectivă din partea managerului

Serioja:

Internul este mereu în legătură cu mentorul său și comunică cu el de mai multe ori pe zi. Mentorul revizuiește codul, participă la programarea în pereche cu internul și oferă ajutor atunci când apar probleme. Această combinație de asistență din partea mentorului și sarcini reale este modul prin care formăm dezvoltatori frontend.

Dima:

Pentru a evita ca internul să se simtă abandonat, discutăm înainte de angajare cine îi va fi mentor. Aceasta este, de asemenea, o mare oportunitate de dezvoltare pentru mentor, pregătindu-se pentru rolul de lider de echipă, iar acest lucru îi testează capacitatea de a gestiona atât sarcina proprie, cât și cea a internului. Există întâlniri regulate, la care uneori particip și eu, pentru a fi la curent. Totuși, mentorul comunică în mod regulat cu internul. La început, acesta investește foarte mult timp, dar rezultatele merită.

Cu toate acestea, faptul că există un mentor nu înseamnă că toate întrebările se rezolvă prin intermediul lui.

Misha:

La noi, este obișnuit ca persoanele care se confruntă cu o problemă să ceară sfatul colegilor și să găsească rapid ajutor. Cu cât o persoană crește mai repede, cu atât mai des trebuie să se ducă la colegi pentru a învăța ceva nou. Este util chiar și să afli despre sarcinile altor oameni pentru a găsi idei pentru sarcinile noi. Când internul este capabil să comunice, să înțeleagă ce este important pentru cealaltă parte și să ajungă la un rezultat în echipă, va progresa mult mai repede decât cel care are nevoie ca un lider să facă toate acestea.

Serioja:

Există documentație, dar cea mai mare parte a informațiilor se află în aer. Dacă ai ocazia să o înveți la începutul carierei, aceasta reprezintă un avantaj suplimentar, iar noi putem să ne concentrăm persoana pe ceea ce trebuie studiat.

Stagiarul ideal este cel care face un stagiu de câteva luni, devenind apoi dezvoltator junior, apoi dezvoltator de bază, apoi lider de grup și așa mai departe. Pentru aceasta, este necesar arhetipul elevului, care nu ezită să întrebe atunci când ceva nu este clar, dar în același timp este capabil să lucreze independent. Dacă i s-a spus că poate citi despre acest subiect undeva, va merge să citească și se va întoarce cu cunoștințe noi. El poate greși, dar nu ar trebui să greșească mai mult de o dată, maximum de două ori, în același loc. Stagiarul ideal trebuie să se dezvolte, să absoarbă totul ca o spugă, să învețe și să crească. Cineva care stă, încearcă să înțeleagă totul singur, se zbate mult, nu pune întrebări, va avea puțin succes.

Finalizarea stagiului

Înainte de a începe munca, semnăm cu fiecare stagiar un contract pe durată determinată. Desigur, stagiul este plătit, este formalizat conform legislației muncii din Rusia, iar stagiarul beneficiază de aceleași avantaje ca orice alt angajat al Yandex. După trei luni, programul se încheie — mulți dintre stagiari sunt apoi transferați în rândul personalului (pe un contract pe durată nedeterminată).

Stagiu în IT: o perspectivă din partea managerului

Pe de o parte, pentru lider este important ca dezvoltatorul să îndeplinească minimul necesar de stagiu. Exact la acest lucru se lucrează cu stagiarul, începând cu interviul. Cu toate acestea, aceasta este doar începutul poveștii. Stagiarii sunt întotdeauna pentru noi candidați potențiali pentru personalul permanent. Obiectivul minim pentru lider este de a observa încă de la început o astfel de persoană, pe care după trei luni să nu îi fie rușine să o recomande altor departamente. Obiectivul maxim este de a-l păstra în aceeași echipă, angajându-l permanent. În același timp, luăm în considerare că un student din anul doi sau trei — chiar dacă a devenit stagiar — cu începutul anului școlar va trebui să continue studiile la universitate.

Serioja:

În primul rând, stagiarii reprezintă pentru noi un potențial resursă umană. Încercăm să dezvoltăm oameni în cadrul Yandex, astfel încât să se potrivească perfect sarcinilor noastre. Le oferim totul, începând de la cultura comunicării și interacțiunii în echipe până la cunoștințe enciclopedice despre toate sistemele noastre.

Ihnat:

Când angajăm un stagiar, de obicei îl evaluăm pentru a vedea dacă se va integra în echipa noastră. Și, de regulă, singura barieră este lipsa unui post disponibil. Încercăm să angajăm tineri cu experiență puțină. Dacă o persoană are cinci ani de experiență în dezvoltare, vine la Yandex și este considerată stagiar, din păcate, pentru noi acest lucru înseamnă că, deși este un tip promițător, având cinci ani de experiență la Yandex, nu va putea avansa la un nivel superior de dezvoltator. De obicei, problema este viteza: o creștere lentă în trecut va însemna o creștere lentă și aici. Da, uneori, realizarea că o persoană nu se descurcă apare doar după trei luni. Dar aceasta este destul de rar. În mai mult de jumătate dintre cazuri, suntem pregătiți să angajăm persoanele în echipa noastră. Din experiența mea, nu a existat un caz în care un stagiar să finalizeze cu succes stagiul, dar să nu poată trece interviul pentru o poziție permanentă.

Misha:

Tuturor stagiilor reușite le oferim oportunitatea de a rămâne în companie. După stagiul de practică, de obicei, angajăm mai mult de jumătate pentru full-time. Cu stagiile de vară este mai complicat, deoarece, de obicei, vin la noi studenți, de exemplu, din anul trei, și le este greu să combine munca cu studiile.

Dima:

Să presupunem că un stagiar se descurcă excelent la sarcini și are multe perspective de a deveni un bun dezvoltator — chiar dacă momentan nu are suficientă experiență. Și să presupunem că nu există un post disponibil pe un contract pe termen nedeterminat. Atunci lucrurile sunt simple: trebuie să mă duc la șeful meu și să-i spun — iată o persoană extraordină, trebuie să facem tot posibilul să o păstrăm, să-i oferim ceva, să găsim o poziție în care să o integrăm.

Povești despre stagiari

Denis:

O fată care s-a angajat ca stagiar în 2017 era originară din Perm. Aceasta se află la aproximativ 400 de kilometri vest de Ekaterinburg. Și venea în fiecare săptămână de la Perm la noi cu trenul, pentru a participa la Școala de Dezvoltare Mobilă. Sosirea sa era în timpul zilei, seara studia și se întorcea înapoi târziu. Evaluând această determinare, am invitat-o să lucreze pentru noi, iar acest lucru s-a dovedit a fi o alegere bună.

Ihnat:

Cu câțiva ani în urmă, am participat la un program de schimb de stagiari. A fost interesant să lucrăm cu tineri din străinătate. Însă stagiarii de acolo nu erau mai buni decât, de exemplu, cei de la Școala de Arte Plastice sau de la Universitatea de Stat din Fălticeni. Ar părea că EPFL este în top 20 universități din Europa. La acel moment — ca un intervievator mai puțin experimentat — aveam așteptări mari: incredibil, intervievăm oameni de la EPFL, trebuie să fie extrem de calificați. Dar persoanele care au avut o educație de bază în programare la noi — inclusiv în universitățile regionale de top — se dovedeau a fi la un nivel decent.

Sau o altă poveste. Acum în echipa mea este un băiat, foarte tânăr, are aproape 20 de ani. Lucrează în Sankt Petersburg, a venit pentru un stagiu. Este foarte talentat. Așa cum se întâmplă de obicei, îi dai o sarcină, o rezolvă, iar după o lună vine și spune: am rezolvat, mă uit și, se pare, arhitectura voastră e prost construită. Hai să o refacem. Codul va deveni mai simplu, mai clar. L-am descurajat, desigur: volumul de muncă este mare, nu aduce beneficii utilizatorilor, dar ideea sună absolut rezonabil. Omul s-a descurcat într-un proces complex multi-thread și a propus îmbunătățiri — poate și tardive, refactoring doar pentru refactoring. Dar de îndată ce va dori să complice acel cod, va fi posibil să facem refactoringul totuși. De fapt, au trecut câteva luni și ne-am ocupat de această sarcină. M-am bucurat să-l iau în echipă. Nu suntem toți genii. Poate veni, înțelege ceva și ne indica problemele noastre. Asta este apreciat.

Misha:

Avem stagiari perfecti. În ciuda lipsei de experiență, ei văd sarcina nu doar la nivel tehnic, ci și pe o scară mai largă. Propun îmbunătățiri fundamentale. Au o înțelegere a modului de a traduce sarcinile din lumea reală în termeni tehnici, fără a pierde sensul. Se gândesc care este scopul final, dacă merită acum să se afunde în detalii sau e posibil să schimbe complet abordarea sarcinii sau chiar enunțul acesteia. Asta înseamnă că au potențialul de a ajunge la niveluri superioare. Pentru a realiza acest drum, trebuie doar să-și îmbunătățească abilitățile și instrumentele interne. În plus, să inițieze câteva proiecte de succes.

Stagiu în IT: o perspectivă din partea managerului

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster