Stage in IT: il punto di vista di un manager

Stage in IT: il punto di vista di un manager

Reclutamento per stage estivo in Yandex continua. Va in cinque direzioni: backend, ML, sviluppo mobile, frontend e analisi. In questo blog, in altri blog su Habré e non solo, puoi trovare molti approfondimenti su come funziona lo stage. Ma gran parte di questo processo rimane un mistero per coloro che non lavorano in azienda. E se guardi dal punto di vista dei responsabili dello sviluppo, sorgono ancora più domande. Come condurre correttamente uno stage, come massimizzare l'utilità reciproca con uno stagista, come conoscerlo in tre mesi e insegnargli tutto ciò di cui ha bisogno per continuare a lavorare?

Cinque di noi hanno preparato questo articolo. Presentiamoci: Ignat Kolesnichenko del servizio di tecnologia di calcolo distribuito, Misha Levin del servizio di intelligenza artificiale del mercato, Denis Malykh del servizio di sviluppo di applicazioni, Seryozha Berezhnoy del dipartimento di sviluppo dell'interfaccia di ricerca e Dima Cherkasov del gruppo di sviluppo antifrode. Ognuno di noi rappresenta la propria area di stage. Siamo tutti manager, abbiamo bisogno di stagisti e abbiamo una certa esperienza di lavoro con loro. Vi raccontiamo qualcosa di questa esperienza.

Colloquio pre-tirocinio

Numerosi colloqui tecnici attendono i candidati. Il successo in un colloquio dipende meno dalle soft skills (la capacità di comunicare in modo efficace) e più dalle hard skills (competenze in matematica e programmazione). Tuttavia, i manager valutano entrambi.

Ignato:

Anche se una persona è molto simpatica, ma assolutamente poco comunicativa, non sarà in grado di applicare tutte le sue capacità. Naturalmente prestiamo attenzione a questo, ma questo non è un motivo per non assumere qualcuno per uno stage. In tre mesi tutto può cambiare e inoltre la tua prima impressione potrebbe rivelarsi sbagliata. E se tutto è corretto, dovrai spiegare alla persona, cercare altri comandi. Per gli stagisti, le capacità comunicative non sono sicuramente un fattore chiave. Tuttavia, le competenze professionali sono molto più importanti.

Denis:

Mi piacciono le persone che raccontano storie, in senso positivo. È interessante una persona che possa raccontare come lui e la sua squadra hanno affrontato eroicamente qualche fakap. Comincio a fare domande di follow-up quando viene fuori una storia come questa. Ma questo accade raramente se chiedi semplicemente di “raccontare qualcosa di interessante nei tuoi progetti”.

Un candidato una volta ha detto una frase meravigliosa, che ho persino scritto: "Evitato con successo di risolvere problemi noiosi".

Stage in IT: il punto di vista di un manager

Dato che c'è poco tempo per la comunicazione, l'intervistatore cerca di ottenere informazioni utili sul candidato in ogni minuto dell'incontro. Sarebbe fantastico se il tirocinante capisse in anticipo quali dettagli della sua esperienza (non dal suo curriculum) potrebbe condividere. Questa dovrebbe essere una breve storia strettamente pertinente.

Denis:

Faccio attenzione se una persona dice di aver provato tanti linguaggi e approcci. Le persone con una prospettiva più ampia escogitano soluzioni più eleganti in modalità combattimento. Ma questo è un vantaggio ambiguo. Puoi capirlo, ma non imparare davvero nulla.

Il tempo per le storie descritte da Denis di solito rimane solo durante l'intervista finale. Fino ad allora, è necessario dimostrare le conoscenze fondamentali e pratiche che costituiranno la base del lavoro futuro. E, naturalmente, dovrai scrivere il codice su una lavagna o su un pezzo di carta.

Topo:

Verifichiamo la conoscenza della teoria della probabilità e della statistica matematica. Valutiamo se la persona ha esperienza di lavoro con le metriche, con gli algoritmi di apprendimento automatico, con l'impostazione dei parametri, con la riqualificazione, ecc. Ci aspettiamo che la persona possa scrivere codice sufficientemente per essere un analista.

Denis:

Chi viene al colloquio conosce soprattutto le lingue: a Ekaterinburg abbiamo una buona scuola di lingue di base, buoni istituti. Ma ad essere onesti, un candidato al tirocinio con buone competenze è un caso raro, almeno nel nostro quartiere epsilon. Ad esempio, Swift. Implica un lavoro molto complesso con gli archi e sono poche le persone che riescono a lavorarci a mente aperta. L'occhio cattura immediatamente la tua attenzione. Durante le interviste, spesso assegno un compito relativo all'elaborazione delle stringhe. E in tutto questo tempo c’è stata una sola persona che è riuscita a scrivere subito, su un pezzo di carta, un codice Swift del genere. Dopodiché, sono andato in giro a dire a tutti che qualcuno era finalmente riuscito a risolvere questo problema in Swift su un pezzo di carta.

Testare gli algoritmi durante un'intervista

Questo è un argomento a parte perché i candidati hanno ancora una domanda: perché valutiamo sempre la conoscenza degli algoritmi e delle strutture dati? Anche i futuri sviluppatori mobili e sviluppatori front-end vengono sottoposti a tali test.

Topo:

Durante l'intervista siamo sicuri di porre qualche tipo di problema algoritmico. Il candidato deve capire come implementarlo in Python, preferibilmente senza errori. Devi capire come controllare il tuo programma e correggerlo tu stesso.

Stage in IT: il punto di vista di un manager

L’esperienza negli algoritmi è utile per tre ragioni. In primo luogo, sarà ovviamente necessario nei compiti algoritmici, che non accadono spesso, ma accadono. In secondo luogo, lo sviluppatore sarà in grado di risolvere in modo più efficace i problemi relativi agli algoritmi, anche se non richiedono l'approfondimento degli algoritmi stessi (e ce ne sono già parecchi). In terzo luogo, se non ti sono stati insegnati gli algoritmi all'università, ma sai comunque come lavorarci, questo ti caratterizza come una persona curiosa e aumenterà la tua autorità agli occhi dell'intervistato.

Denis:

Una parte importante dello sviluppo mobile è lo shuffle JSON. Ma una volta ogni sei mesi ci sono casi in cui sono necessari algoritmi. Attualmente sto disegnando bellissime mappe per Yandex.Weather. E in una settimana ho dovuto implementare l'algoritmo di livellamento, l'algoritmo di Sutherland-Hodgman e l'algoritmo di Martinez. Se una persona non sapesse cosa sia una hashmap o una coda prioritaria, rimarrebbe bloccata per molto tempo e non sarebbe chiaro se ce l’avrebbe fatta o meno senza un aiuto esterno.

Gli algoritmi sono la base dello sviluppo. Questo è ciò che aiuta uno sviluppatore a essere uno sviluppatore. Non importa cosa fai. Sono necessari anche in progetti semplici, dove il lavoro principale consiste nel “tradurre JSON”. Anche se non scrivi gli algoritmi stessi, ma usi implicitamente alcune strutture dati, è meglio capirle. Altrimenti ti ritroverai con applicazioni lente o errate.

Ci sono programmatori che sono entrati nello sviluppo accademicamente: sono entrati all'università, hanno studiato per cinque anni e hanno ricevuto una specializzazione. Conoscono gli algoritmi perché gli sono stati insegnati. E poi la conoscenza degli algoritmi in sé non caratterizza in alcun modo gli orizzonti di una persona; questo orizzonte deve essere testato in altro modo.

E ci sono autodidatti, tra cui mi annovero. Sì, formalmente ho una formazione informatica, un diploma in ingegneria del software. Ma gli autodidatti hanno imparato a programmare “malgrado ciò”. Non avevano un programma universitario. Di solito non hanno familiarità con gli algoritmi, perché non hanno mai avuto la necessità di studiarli. E quando una persona del genere comprende gli algoritmi, significa che ha dedicato del tempo e li ha capiti. Dopo la laurea, mi sono reso conto di avere dei punti ciechi in termini di algoritmi fondamentali: il fatto è che veniva applicata la mia specialità. Sono andato e ho studiato corsi online presso l'Università di Princeton, il noto Robert Sedgwick. L'ho capito e ho fatto tutti i compiti. E quando una persona racconta una storia simile durante un'intervista, mi interesso subito, ho voglia di lavorare con lui o almeno continuare la conversazione.

Stage in IT: il punto di vista di un manager

Ignato:

Quando intervisti uno stagista, per certi versi ti aspetti anche di più che da uno sviluppatore esperto. Stiamo parlando della capacità di risolvere problemi algoritmici, scrivere rapidamente almeno del codice corretto. Il candidato allo stage è ancora all'università. Solo un anno fa gli è stato spiegato in dettaglio tutto sugli algoritmi. Si prevede che possa riprodurli. Se una persona è adeguata e ascolta attentamente le lezioni, saprà semplicemente tutto, lo prenderà dalla cache.

Quali compiti risolve il tirocinante?

Tipicamente, il programma del tirocinio può essere delineato e discusso durante i colloqui finali. Solo all'inizio del lavoro allo stagista possono essere assegnati compiti di formazione, i cui risultati non verranno utilizzati nella produzione. Inoltre, la probabilità di ricevere tali compiti è ridotta. Molto spesso, i progetti di combattimento vengono forniti dal backlog, cioè quelli riconosciuti come degni di attenzione, ma non prioritari e "separabili", in modo che altri componenti non dipendano dalla loro attuazione. I manager cercano di distribuirli in modo che il tirocinante conosca le diverse parti del servizio e lavori nello stesso ambiente con gli altri membri del team.

Ignato:

Questi sono compiti estremamente utili. Potrebbero non aumentare l'utilizzo dei cluster del 10% o far risparmiare all'azienda un milione di dollari, ma renderanno felici centinaia di persone. Ad esempio, attualmente abbiamo uno stagista che lavora con il nostro cliente per eseguire operazioni sui nostri cluster. Prima di iniziare l'operazione deve caricare alcuni dati sul cluster. Di solito ci vogliono 20-40 secondi e prima accadeva in silenzio: lo avviavi sulla console e ti sedevi lì, guardando uno schermo nero. Lo stagista è venuto e ha realizzato la funzionalità in due settimane: ora puoi vedere come vengono caricati i file e cosa sta succedendo. Il compito, da un lato, non è difficile da descrivere, ma dall'altro c'è qualcosa in cui scavare, quali biblioteche guardare. La parte migliore è che l'hai fatto, è passata una settimana e si è scoperto che era sui cluster, le persone lo stanno già utilizzando. Quando scrivi un post sulla rete interna, ti dicono grazie.

Stage in IT: il punto di vista di un manager

Topo:

I tirocinanti preparano modelli, raccolgono dati, elaborano metriche e conducono esperimenti. A poco a poco, iniziamo semplicemente a dargli più libertà e responsabilità: controlliamo se può farcela. Se sì, passa al livello successivo. Non diamo per scontato che quando arriva uno stagista, sappia come fare tutto. Il manager lo aiuta a capirlo, gli fornisce un collegamento a una risorsa interna o a un corso online.

Se uno stagista si dimostra al meglio, gli può essere assegnato qualcosa di prioritario, importante per il dipartimento o altri servizi.

dima:

Il nostro stagista sta ora apportando modifiche radicali all'antifrode. Questo è un sistema che combatte un'ampia varietà di abusi e frodi sui servizi Yandex. All'inizio pensavamo di dare cose poco complesse e poco importanti per la produzione. Cerchiamo di pensare in anticipo ai compiti del tirocinante, ma poi abbiamo visto che la persona era “in fiamme”, risolvendo i problemi rapidamente e bene. Di conseguenza, abbiamo iniziato ad affidargli il lancio dell'antifrode per nuovi servizi.

Inoltre, c'è una piccola possibilità di ricevere un compito a cui i colleghi non hanno mai affrontato in precedenza a causa del suo volume.

dima:

C'è un vecchio sistema e ce n'è uno nuovo, non ancora completato. È necessario passare dall'uno all'altro. In futuro, questo è un progetto importante, anche se con elevata incertezza: è necessario comunicare molto, leggere codici legacy incomprensibili. Durante il colloquio finale, abbiamo detto onestamente al tirocinante che il compito era difficile. Ha risposto che era pronto, è venuto nella nostra squadra e tutto ha funzionato per lui. Si è scoperto che ha le qualità non solo di uno sviluppatore, ma anche di un manager. Era pronto a fare un giro, scoprire, ping.

Tutoraggio di uno stagista

Uno stagista ha bisogno di un mentore per immergersi nei processi. Si tratta di una persona che è consapevole non solo dei propri compiti, ma anche dei compiti del tirocinante. Viene stabilita una comunicazione regolare con il mentore, puoi sempre rivolgerti a lui per un consiglio. Il mentore può essere il leader del gruppo (se si tratta di un gruppo piccolo) o uno dei colleghi, membri abituali del team.

Ignato:

Cerco di presentarmi almeno a giorni alterni e chiedere come sta il tirocinante. Se vedo che sono bloccato, cerco di aiutarlo, gli chiedo qual è il problema e lo risolvo insieme a lui. È chiaro che questo mi toglie energie e rende il lavoro di stagista non così integralmente efficace - sto anche perdendo tempo. Ma questo gli permette di non impantanarsi in nulla e di ottenere risultati. Ed è ancora più veloce che se lo facessi da solo. Io stesso ho bisogno di circa 5 ore per l'attività. Il tirocinante lo farà in 5 giorni. E sì, trascorrerò 2 ore durante questi 5 giorni per chiacchierare con il tirocinante e aiutarlo. Ma risparmierò almeno 3 ore e il tirocinante sarà contento di aver ricevuto qualche consiglio e aiuto. In generale, devi solo comunicare da vicino, osservare cosa sta facendo la persona e non perdere il contatto.

Stage in IT: il punto di vista di un manager

Serge:

Il tirocinante è costantemente in contatto con il suo mentore e comunica con lui più volte al giorno. Il mentore esamina il codice, abbina la programmazione al tirocinante e aiuta quando sorgono aree problematiche. È in questo modo, combinando l'aiuto di un mentore e compiti di combattimento reali, che formiamo gli sviluppatori front-end.

dima:

Per evitare che uno stagista venga abbandonato, discutiamo su chi gli farà da mentore anche prima dell'assunzione. Questo è anche un grande aggiornamento per il mentore stesso: preparazione per il ruolo di team leader, verifica della capacità di tenere a mente sia il proprio compito che il compito del tirocinante. Ci sono incontri regolari, a cui a volte vado da solo, per rimanere informato. Ma è il mentore che comunica con lo stagista abbastanza regolarmente. All'inizio passa molto tempo, ma questo ripaga.

Tuttavia, avere un mentore non significa che tutti i problemi che si presentano vengano risolti attraverso di lui.

Topo:

Per noi è consuetudine che le persone che si trovano ad affrontare un problema chiedano consiglio a vicini e colleghi e trovino rapidamente aiuto. Più una persona cresce velocemente, più spesso ha bisogno di andare dai suoi colleghi per imparare qualcosa. È anche utile semplicemente conoscere i compiti degli altri in modo da poterne inventare di nuovi. Quando uno stagista riesce a mettersi d'accordo, a capire cosa è importante per l'altra parte e ad arrivare a risultati in squadra, crescerà molto più velocemente di qualcuno per il quale il manager deve fare tutto questo.

Serge:

Esiste la documentazione, ma la maggior parte delle informazioni si perde nell'aria. Se lo assorbi all'inizio della tua carriera, è un ulteriore vantaggio e possiamo concentrare la persona su ciò che deve imparare.

Lo stagista ideale è qualcuno che si forma per diversi mesi, diventa uno sviluppatore junior, poi solo uno sviluppatore, poi un team leader, ecc. Ciò richiede un archetipo di studente che non si vergogna di chiedere se qualcosa non gli è chiaro, ma è anche capace di lavoro autonomo. Se gli fosse stato detto che poteva leggerlo da qualche parte, sarebbe andato, lo avrebbe letto e sarebbe tornato con nuove conoscenze. Potrebbe commettere errori, ma non dovrebbe commetterli più di una volta, massimo due, nello stesso posto. Lo stagista ideale dovrebbe svilupparsi, assorbire tutto come una spugna, imparare e crescere. Chi si siede e cerca di capire tutto da solo, passa molto tempo a curiosare e non fa domande, difficilmente si abituerà.

Fine del tirocinio

Prima di iniziare il lavoro firmiamo un contratto a tempo determinato con ogni tirocinante. Naturalmente, lo stage è retribuito, formalizzato in conformità con il Codice del lavoro della Federazione Russa e lo stagista ha gli stessi vantaggi di qualsiasi altro dipendente Yandex. Dopo tre mesi il programma termina e molti degli stagisti vengono trasferiti nello staff (con contratto a tempo indeterminato).

Stage in IT: il punto di vista di un manager

Da un lato, per il manager è importante che lo sviluppatore soddisfi il minimo richiesto per il tirocinio. È qui che viene condotto il tirocinante, a partire dal colloquio. Tuttavia, questo è solo l’inizio della storia. Per noi uno stagista è sempre un potenziale candidato per lo staff. Il programma minimo per un manager è individuare fin dall'inizio una persona che, dopo tre mesi, non si vergognerà di raccomandare ad altri dipartimenti. Il programma massimo è mantenerlo nella stessa squadra, assumendolo come membro dello staff. Allo stesso tempo, teniamo conto che uno studente del secondo o terzo anno, anche se è diventato stagista, dovrà proseguire gli studi presso un'università con l'inizio dell'anno accademico.

Serge:

Per noi i tirocinanti rappresentano innanzitutto il potenziale delle risorse umane. Stiamo cercando di far crescere le persone all'interno di Yandex in modo che siano ideali per i nostri compiti. Diamo loro tutto, dalla cultura della comunicazione e dell'interazione in team alla conoscenza enciclopedica di tutti i nostri sistemi.

Ignato:

Quando assumiamo uno stagista, lo proviamo immediatamente per inserirlo nel nostro team. E di regola, l'unico ostacolo è la mancanza di posti vacanti. Cerchiamo di assumere un numero sufficiente di ragazzi giovani come stagisti. Se una persona ha cinque anni di esperienza nello sviluppo, viene a Yandex ed è uno stagista di livello, allora, ahimè, per noi questo significa che anche se è un bravo ragazzo, dal momento che ottiene un lavoro in Yandex con cinque anni di esperienza esperienza, non sarà in grado di diventare uno sviluppatore senior. Di solito è una questione di velocità: una crescita lenta nel passato significherà una crescita lenta qui. Sì, a volte la comprensione che una persona non è all'altezza del compito arriva solo dopo tre mesi. Ma questo è abbastanza raro. In più della metà dei casi siamo pronti ad assumere personale. Nella mia memoria, non c'è mai stata una situazione in cui una persona ha completato con successo uno stage, ma non è riuscita a superare un colloquio per una posizione a tempo pieno.

Topo:

Offriamo a tutti gli stagisti di successo di rimanere in azienda. Dopo uno stage, di solito ne assumiamo più della metà a tempo pieno. I tirocini estivi sono più difficili perché spesso vengono da noi gli studenti del terzo anno e per loro è difficile conciliare lavoro e studio.

dima:

Diciamo che il tirocinante fa un ottimo lavoro e ha molte prospettive di diventare un buon sviluppatore, anche se al momento non ha abbastanza esperienza. E supponiamo che non ci sia posto vacante per un contratto a tempo indeterminato. Allora tutto è semplice: devo andare dal mio manager e dirgli: questa è una persona molto simpatica, dobbiamo tenerlo con tutti i mezzi, offriamogli qualcosa, troviamo un posto dove metterlo.

Storie di stagisti

Denis:

La ragazza che ha fatto uno stage con noi nel 2017 era di Perm. Questo è a 400 chilometri da Ekaterinburg a ovest. E ogni settimana veniva da noi da Perm in treno alla Scuola di sviluppo mobile. Veniva di giorno, studiava la sera e tornava tardi la sera. Apprezzando tale zelo, l'abbiamo invitata a lavorare e questo ha dato i suoi frutti.

Ignato:

Diversi anni fa abbiamo partecipato ad un programma di scambio di stagisti. È stato interessante lavorare con ragazzi stranieri. Ma i tirocinanti da lì non sono più forti di, ad esempio, quelli dello ShAD o della Facoltà di Informatica. Sembrerebbe che l'EPFL sia tra le prime 20 università d'Europa. In quel momento, da intervistatore ancora poco esperto, avevo questa aspettativa: incredibile, stiamo intervistando persone dell'EPFL, saranno fantastici. Ma le persone che hanno ricevuto una formazione di base sulla programmazione qui, anche nelle principali università regionali, si rivelano abbastanza all'altezza.

O un'altra storia. Adesso ho un ragazzo nel mio staff, è molto giovane, sui 20 anni. Lavora a San Pietroburgo, è venuto per uno stage. È molto simpatico. Tu, come al solito, dai problemi a una persona, lui li risolve, e un mese dopo viene e dice: li ho risolti, guardo, e sembra che la tua architettura sia mal costruita. Rifacciamolo. Il codice diventerà più semplice e chiaro. Ovviamente l'ho dissuaso: la mole di lavoro è elevata, non c'è profitto per gli utenti, ma l'idea sembra assolutamente ragionevole. La persona ha individuato un complesso processo multi-thread e ha suggerito miglioramenti, forse prematuri, refactoring per il gusto di refactoring. Ma non appena vuoi complicare questo codice, puoi comunque eseguire questo refactoring. In effetti, sono passati diversi mesi e abbiamo intrapreso questo compito. L'ho assunto volentieri. Non siamo tutti dei geni. Puoi venire, capire qualcosa e sottolineare i nostri problemi. Questo è apprezzato.

Topo:

Abbiamo degli stagisti ideali. Nonostante la loro mancanza di esperienza, vedono il compito non solo a livello tecnico, ma anche globale. Offrono miglioramenti fondamentali. Sanno come tradurre i problemi dal mondo reale al mondo tecnico senza perderne il significato. Si chiedono quale sia l'obiettivo finale, se valga la pena approfondire ora i dettagli o se sia possibile cambiare completamente l'approccio al compito o addirittura la formulazione del problema. Ciò significa che hanno il potenziale per essere diversi livelli più alti. Per procedere in questo modo, devono solo aggiornare alcune competenze e strumenti interni. Inoltre lancia diversi progetti di successo.

Stage in IT: il punto di vista di un manager

Fonte: habr.com

Aggiungi un commento