Una settimana fa abbiamo parlato di , dove nei commenti ci hanno fatto notare l'importanza degli stage e dell'esperienza pratica. Non si può fare a meno di essere d'accordo, poiché le conoscenze teoriche devono essere consolidate dalla pratica. Con questo post apriamo una serie di articoli sugli stage estivi per studenti: come i ragazzi riescono ad accedervi, cosa fanno lì e perché è una cosa positiva.
Nell'articolo di apertura, spiegherò come superare con successo tutte le fasi dei colloqui e accedere a uno stage in Google.
Due parole su di me
Sono uno studente del primo anno della laurea magistrale presso il campus di San Pietroburgo della Higher School of Economics, ho completato la laurea triennale presso l'Accademia Universitaria in machine learning. Durante il mio percorso di studi triennale, mi sono dedicato attivamente alla programmazione competitiva e ho partecipato a vari hackathon. Puoi leggere di questi ultimi , e .
sullo stage
Per iniziare, voglio raccontare un po' com'è lo stage in Google dall'interno.
Ogni stagista che arriva in Google viene assegnato a un team specifico. Questo può essere un team che si occupa dello sviluppo delle infrastrutture interne, di cui una persona al di fuori dell'azienda non ha mai sentito parlare, oppure di un prodotto utilizzato da milioni di persone in tutto il mondo. Prodotti come i famosi YouTube, Google Docs e altri. Poiché lo sviluppo di questi progetti coinvolge decine, se non centinaia, di sviluppatori, entrerai a far parte di un team che si specializza in un aspetto più specifico. Ad esempio, nell'estate del 2018, ho lavorato su Google Docs, aggiungendo nuove funzionalità per la gestione dei fogli di calcolo.
Poiché sei stagista in azienda, avrai un manager chiamato host. Si tratta di un normale lavoratore full-time che si occupa anche dello sviluppo dei prodotti. Se hai domande, non sai come procedere o hai incontrato dei problemi, dovresti rivolgerti a lui. Di solito vengono fissati incontri settimanali one-on-one, durante i quali puoi discutere la situazione attuale del tuo progetto o parlare di qualcosa di completamente diverso. Inoltre, l'host è una delle persone che valuterà il lavoro che hai svolto durante lo stage. Ci sarà anche un secondo revisore che fornirà una valutazione aggiuntiva. E naturalmente, sono entrambi interessati al tuo successo.
Su Google ti diranno di scrivere un design document prima di iniziare a lavorare. Per chi non lo sapesse, un design document è un documento in cui viene descritta la natura del problema esistente e fornita una dettagliata spiegazione tecnica della sua soluzione. Può essere redatto sia per un intero prodotto che per una singola nuova funzionalità. Leggendo questa documentazione, è possibile capire qual era l'intento originale del prodotto e come è stato realizzato. Spesso si possono trovare nei commenti dialoghi tra ingegneri che discutono vari modi di implementare qualche parte del progetto. Questo fornisce una buona comprensione degli obiettivi alla base di ogni decisione presa.
Una delle caratteristiche del tirocinio è che avrai l'opportunità di utilizzare straordinari strumenti di sviluppo interni, ce ne sono così tanti in Google. Dopo aver lavorato con essi e aver parlato con molte persone che in precedenza hanno lavorato in Amazon, Nvidia e in altre rinomate aziende tecnologiche, posso concludere che questi strumenti hanno grandi probabilità di essere i migliori che tu abbia mai incontrato nella tua vita. Ad esempio, uno strumento chiamato Google Code Search non solo consente di esplorare l'intera base di codice, la cronologia delle modifiche di ogni riga di codice, ma offre anche la possibilità di navigazione nel codice, quella a cui siamo abituati nelle moderne ambienti di sviluppo come Intellij Idea. E per questo ti serve solo un browser! Un aspetto negativo associato a questa caratteristica è che al di fuori di Google ti mancheranno questi strumenti.
Per quanto riguarda i vantaggi, l'azienda ha uffici fantastici, offre un buon servizio di ristorazione, una palestra, un'ottima assicurazione e altre comodità. Lascio qui un paio di foto dell'ufficio di New York:



Come si ottiene un'offerta?
Panoramica
È ora di parlare di qualcosa di più serio: come ottenere un tirocinio?
Qui non si parla di Google, ma di come funziona in generale. Tra poco scriverò di più sulle specificità del processo di selezione dei tirocinanti in Google.
Il processo di colloquio in azienda probabilmente si presenterà così:
- Candidatura per un tirocinio
- Contest su Hackerrank/Quiz di TripleByte
- Colloquio di screening
- Primo colloquio tecnico
- Secondo colloquio tecnico
- Colloquio in sede
Candidatura per un tirocinio
Chiaramente, tutto inizia con il tuo desiderio di ottenere un tirocinio. Per farlo, devi esprimerlo compilando un modulo sul sito dell'azienda. Se hai (o conoscenze tra amici) conoscenti che ci lavorano, puoi provare a ottenere un accesso tramite di loro. Questa opzione è preferibile, poiché ti aiuta a distinguerti dal grande flusso degli altri studenti. Se non hai questa opportunità, applica da solo.
Cerca di non deprimerti troppo quando ricevi email del tipo «sei fantastico, ma abbiamo scelto altri candidati». E qui ho un consiglio per te:

Contest su Hackerrank/Quiz di TripleByte
Se il tuo curriculum piace al reclutatore, riceverai una email con il prossimo incarico entro 1-2 settimane. Probabilmente ti verrà chiesto di sostenere un contest su Hackerrank, dove dovrai risolvere problemi algoritmici in un tempo stabilito, oppure il TripleByte Quiz, in cui dovrai rispondere a diverse domande relative agli algoritmi, allo sviluppo software e al funzionamento dei sistemi a basso livello. Questo passaggio funge da filtro iniziale nel processo di selezione dei candidati.
Colloquio di screening
Se l'esame viene superato con successo, il passo successivo sarà un colloquio di screening, durante il quale parlerai con il reclutatore dei tuoi interessi e dei progetti che l'azienda offre agli stagisti. Se dimostri interesse e la tua esperienza precedente soddisfa le aspettative dell'azienda, riceverai il via libera. Dalla mia esperienza, questo è il momento più imprevedibile dell'intero processo, che dipende molto dal reclutatore.
Se hai superato queste tre prove, la maggior parte dell'imprevedibilità è già alle spalle. Resta solo da affrontare i colloqui tecnici, che dipendono molto di più da te, il che significa che puoi influenzare maggiormente il loro esito. E questo è un buon segno!
Colloqui tecnici
Dopo si svolgeranno i colloqui tecnici, che di solito avvengono tramite Skype o Hangouts. Ma a volte si possono trovare servizi più esotici che richiedono l'installazione di software aggiuntivo. Pertanto, assicurati in anticipo che tutto funzioni sul tuo computer.
Il formato dei colloqui tecnici dipende molto dalla posizione per cui stai sostenendo il colloquio. Se si tratta di una posizione di Software Engineering Intern, è probabile che ti vengano proposte alcune esercizi di programmazione algoritmica, che dovrai risolvere in un editor di codice online, ad esempio, . Possono anche chiedere qualcosa sul design orientato agli oggetti per valutare quanto sei competente nella progettazione del software. Ad esempio, potrebbero chiederti di progettare un semplice negozio online. Tuttavia, non mi è mai capitato un compito che permettesse veramente di giudicare questa abilità. Alla fine dell'intervista, ti verrà sicuramente data l'opportunità di porre domande. Ti consiglio vivamente di prendere questo sul serio, poiché attraverso le domande puoi dimostrare il tuo interesse per il progetto e la tua competenza nell'argomento. Di solito preparo in anticipo un elenco di domande potenziali:
- Com'è organizzato il lavoro su un progetto?
- Qual è stata la sfida più difficile che hai affrontato di recente?
- Qual è il ruolo dello sviluppatore nel prodotto finale?
- Perché hai deciso di lavorare per questa azienda?
Non sempre l'intervistatore è qualcuno con cui lavorerai in seguito. Pertanto, le ultime domande possono dare un'idea di ciò che sta accadendo nell'azienda nel suo complesso. Per me, ad esempio, è importante avere un'influenza sul prodotto finale.
Se il primo colloquio ha esito positivo, vi verrà proposta una seconda intervista. Questa si differenzierà dalla prima per l'intervistatore e, di conseguenza, per le mansioni. Il formato rimarrà probabilmente lo stesso. Dopo aver superato il secondo colloquio, potrebbe essere offerta anche una terza intervista.
Colloquio in sede
Se fino a quel momento non vi hanno rifiutato, vi attende un colloquio in sede, durante il quale il candidato è invitato a colloquiarsi presso l'ufficio dell'azienda. Questo di solito consiste in vari colloqui tecnici e uno comportamentale. Durante il colloquio comportamentale, discuterete con il manager dei vostri progetti, delle decisioni che avete preso in diverse situazioni e così via. L'intervistatore cerca di comprendere meglio la vostra personalità e di approfondire la vostra esperienza. Alcune aziende, che conducono 3-4 colloqui tecnici, offrono invece di fare remotamente solo un colloquio comportamentale.
Ora non resta che aspettare la risposta del recruiter. Se tutto è andato bene, riceverai sicuramente una mail con l'atteso offerta. Se non ricevi l'offerta, non ti scoraggiare. Le aziende rifiutano sistematicamente buoni candidati. Prova di nuovo a candidarti per uno stage l'anno prossimo.
Colloquio di coding
Aspetta un attimo... Non abbiamo ancora sostenuto nessun colloquio. Abbiamo solo scoperto come si svolge tutto il processo e ora dobbiamo prepararci adeguatamente per i colloqui, per non perdere l'opportunità di trascorrere un'estate piacevole e proficua.
Ci sono risorse come , e , che ho già menzionato. Su queste piattaforme puoi trovare un gran numero di problemi algoritmici e inviare le loro soluzioni per verifica automatica. È tutto fantastico, ma mi ricorda piuttosto sparare a un passero con un cannone. Molti problemi su queste risorse richiedono un lungo tempo di soluzione e richiedono conoscenze di algoritmi avanzati e strutture dati, mentre le domande dei colloqui di solito non sono così complesse e sono progettate per essere risolte in 5-20 minuti. Pertanto, nel nostro caso, una risorsa come , che è stato creato come strumento per la preparazione ai colloqui tecnici. Se decidi di risolvere 100-200 problemi di diversa difficoltà, avrai una buona probabilità di non avere problemi durante l'intervista. Tra le opzioni, c'è anche , dove puoi scegliere la durata della sessione, ad esempio 60 minuti, e il sistema ti fornirà un set di problemi, per i quali in media non occorre più di un'ora per risolverli.
Inoltre, molti consigliano di leggere il libro «». Personalmente, ho letto solo alcune parti selezionate. Vale la pena notare che ho risolto molti problemi algoritmici durante gli anni della scuola. Chi non ha questo tipo di esperienza dovrebbe comunque dare un'occhiata al libro.
Inoltre, se nella tua vita hai avuto poche interviste tecniche in aziende estere, è consigliabile fare almeno un paio di prove. Ma più sono, meglio è. Questo ti aiuterà a sentirti più sicuro durante il colloquio e a essere meno nervoso. Le interviste di prova possono essere organizzate su .
Colloqui comportamentali
Come ho già accennato, durante il colloquio comportamentale l'intervistatore cerca di approfondire la tua esperienza e capire il tuo carattere. E se fossi un ottimo sviluppatore, ma non riuscissi a lavorare in team? Temo che molti non sarebbero d'accordo. Ad esempio, potresti ricevere una domanda del tipo: "Qual è il tuo punto debole?" Oltre a domande di questo tipo, ti verrà chiesto di parlare dei progetti in cui hai avuto un ruolo chiave, delle problematiche che hai dovuto affrontare e delle soluzioni che hai trovato. Vale la pena notare che anche nei primi minuti dei colloqui tecnici potrebbero chiederti di questo. È ben descritto come prepararsi a tali colloqui in un capitolo di "Cracking the Coding Interview".
Ora che è chiaro come appare il processo di selezione per gli stagisti in generale e come prepararsi ai colloqui, è tempo di parlare di come funziona nel caso di Google.
Puoi trovare l'elenco degli stage disponibili . Se hai intenzione di partecipare a uno stage estivo, è consigliabile iniziare a fare domanda già a settembre.
Colloqui
Qui il processo sembra un po' insolito. Avrai un colloquio di screening e due interviste tecniche. Se ti esibirai bene in queste, passerai alla fase di ricerca del progetto. Dovrai compilare un questionario piuttosto lungo in cui indicherai tutte le tue attuali competenze e esprimerai preferenze sulla tematica del progetto e sulla località in cui desideri svolgere il tirocinio.
È molto importante completare questo questionario con attenzione e impegno! I potenziali host che cercano persone per i loro progetti esaminano i tirocinanti disponibili e organizzano colloqui con coloro che hanno colpito. Possono filtrare gli studenti per località, parole chiave, segni nel questionario e ordinare in base ai punteggi ottenuti nei colloqui.
Durante il colloquio, l'intervistatore parla del progetto su cui dovrai lavorare e apprende l'esperienza del candidato. C'è un'ottima opportunità per capire come sarà realmente il processo lavorativo, poiché parli con la persona che sarà il tuo host. Dopo il colloquio, invierai una mail al reclutatore con le tue impressioni sul progetto. Se il progetto ti è piaciuto e tu sei piaciuto all'intervistatore, riceverai un'offerta. In caso contrario, dovrai attendere future chiamate, che potrebbero essere 2-3-4, o magari non arrivare affatto. Vale la pena chiarire che, anche se hai fatto bene ai colloqui, se in fase di ricerca del progetto nessun team ti ha selezionato (e forse nessuno ha nemmeno parlato con te), purtroppo rimarrai senza offerta.
America o Europa?
Oltre a ciò, dovrai anche decidere dove si svolgerà il tuo tirocinio. Io ero indeciso tra gli USA e . È importante conoscere alcune peculiarità. Per esempio, si ha la percezione che sia più difficile arrivare negli Stati Uniti. In primo luogo, sarete sottoposti a un test supplementare della durata di 90 minuti, in cui dovrete risolvere problemi algoritmici, oltre a un ulteriore questionario di 15 minuti che cerca di rivelare il vostro carattere. In secondo luogo, dalla mia esperienza e da quella dei miei amici, durante la fase di ricerca del team si è meno presi in considerazione. Ad esempio, nel 2017 ho avuto solo un colloquio, dopo il quale il team ha scelto un altro candidato e non ho ricevuto un'offerta. Mentre i ragazzi che si sono candidati in Europa avevano 4-5 progetti. Nel 2018, ho trovato un team a gennaio, il che è piuttosto tardi. I ragazzi lavoravano a New York, mi è piaciuto il loro progetto e ho accettato.
Come potete vedere, con gli Stati Uniti le cose sono un po' più complicate. Ma desideravo entrarci più che in Europa. Inoltre, negli Stati Uniti pagano anche di più.

Cosa fare dopo?
Alla fine dello stage, avete due opzioni:
- Ottenere uno stage per l'anno successivo.
- Sostenere due colloqui tecnici per ottenere una posizione full-time.
Queste due opzioni sono disponibili a condizione che tu abbia gestito con successo il tuo progetto attuale. Se questa non è la tua prima esperienza di stage, potresti anche ricevere un'offerta per una posizione full-time senza colloqui.
Di conseguenza, si presenta la seguente situazione, che può essere descritta con un'immagine:

Poiché questo era il mio primo stage, ho deciso di affrontare due colloqui tecnici per ottenere una posizione full-time. Dalla loro esito, mi hanno offerto un'opportunità e hanno iniziato a cercare un team, ma ho rifiutato questa opzione poiché ho deciso di completare il mio master. Google non andrà via in 2-3 anni.
Conclusione
Amici, spero di aver spiegato in modo chiaro e accessibile come appare il percorso da studente a stagista (e poi di nuovo…), e questo materiale troverà il suo lettore, a cui sarà utile. Come potete vedere, non è così difficile come può sembrare, basta superare la propria pigrizia, le proprie paure e iniziare a provare!
P.S. Ho anche qui su Telegram, dove puoi dare un'occhiata.
Fonte: habr.com
