Skip to content

GuidoPenta/galactic-tech-interview-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 

Repository files navigation

Guida galattica al colloquio tecnico - Galactic guide for tech interviews

Ciao! In questa guida galattica troverai alcune indicazioni utili su come gestire (e, speriamo per te) superare con successo un colloquio tecnico. Troverai inoltre un elenco dei tipi di colloqui tecnici più frequenti e, vera figata, alcune testimonianze REALI di CTO e c-level aziendali che descrivono il loro processo di technical interview. Se vuoi contribuire per descrivere il tuo processo di tech interview all'interno della tua azienda, aspettiamo la tua PR!

Let's go!

Come prepararsi al meglio per il colloquio tecnico

  1. Considerate gli strumenti e le competenze necessarie per il ruolo

    Pensate ai requisiti di base del lavoro: è fondamentale esaminare la descrizione del lavoro per determinare ciò che è necessario studiare! Ciò può includere il lavoro con le strutture di dati, la comprensione degli algoritmi, la codifica in un linguaggio specifico o l'utilizzo di strumenti di business intelligence. Una solida comprensione delle nozioni di base può mettervi in una buona posizione per rispondere alle domande del colloquio. Potete creare uno schema di ciò che potete studiare o rinfrescare le vostre conoscenze concentrandovi sui principi di base richiesti per il ruolo tecnico.

  2. Studiare!

    Dopo aver capito su cosa lavorare, potete iniziare a selezionare i materiali che vi aiuteranno ad avere più successo. Le risorse a disposizione possono essere:

    • Libri: La lettura di libri su argomenti come la codifica o gli stili di gestione può aiutarvi ad aumentare le vostre conoscenze e a fornire risposte sicure ed esaurienti durante il colloquio.
    • Corsi online: Esaminare i corsi online può essere utile per l'applicazione pratica delle competenze tecniche.
    • Pubblicazioni digitali: Le pubblicazioni online possono aiutarvi ad ampliare la vostra base di conoscenze, ma anche a tenervi al corrente delle tendenze tecnologiche che possono essere applicate al vostro colloquio.
    • Communities: il potere delle communities è ENORME. Sfruttatele per farvi dare utilissimi consigli riguardo la preparazione al colloquio, i tool necessari, le domande più probabili in relazione al ruolo, e così via.
  3. Esercitatevi

    Per prepararsi agli elementi pratici di un colloquio di lavoro, come take home assignment o la risoluzione di problemi in live coding, è possibile esercitarsi ad esempio pensando ad alta voc. Può essere utile durante questo processo in quanto non solo è un buon modo per rimanere impegnati mentre risolvete problemi complessi, ma è anche importante per gli intervistatori conoscere il vostro processo di pensiero. Mentre vi esercitate a rispondere a domande su tutti i tipi di scenari, rivedete le domande generali sulle competenze e sui comportamenti che è probabile che vi vengano rivolte durante un colloquio.

  4. Preparatevi a fare domande

    Oltre alle conoscenze e alle competenze dimostrabili, è importante saper comunicare con le persone in modo professionale. Parlare del proprio lavoro, fornire risposte esaustive e arrivare al colloquio preparati a fare domande può fare una ENORME differenza per andare avanti nel processo di selezione. Per prepararvi al meglio al colloquio, preparate alcune domande che volete porre all'intervistatore. Prendete un po' di tempo per esaminare l'azienda e la descrizione del lavoro prima del colloquio e annotate tutte le domande che vi vengono in mente. Ricordate che è consuetudine che i candidati tengano le loro domande per la fine del colloquio.

  5. Preparatevi il terreno

    Prima del colloquio, valutate il materiale da utilizzare durante il colloquio tecnico. Tool specifici, IDE, carta e penna, un notepad o altro materiale utile: preparate l'ambiente di lavoro al meglio per farvi trovare pronti e professionali in vista del colloquio. Se non siete sicuri di cosa potrebbe servire, chiedete all'azienda se dovrete utilizzare tool specifici.

I diversi tipi di colloquio tecnico

  1. Colloquio su uno specifico linguaggio di programmazione:

    Se state facendo un colloquio per un linguaggio specifico, come Javascript o C, potete aspettarvi un colloquio incentrato sulle sfumature di quel linguaggio. Prendiamo ad esempio Javascript: potete aspettarvi domande su async/await, currying, hoisting e binding. L'intervistatore vuole assicurarsi che abbiate una comprensione approfondita di questo linguaggio specifico, poiché sarà la maggior parte del vostro lavoro. Preparatevi a queste domande leggendo i colloqui tipici in quel linguaggio e ripassate i concetti più accademici del linguaggio.

  2. Colloquio su uno specifico framework:

    Molto simili ai colloqui su un linguaggio specifico, i colloqui sui framework pongono domande specifiche sul framework richiesto per il ruolo. Se state facendo un colloquio per un ruolo di frontend React, l'intervistatore potrebbe chiedervi come poter creare una piccola applicazione, in live coding oppure solamente parlando di tutti i passaggi che fareste. Inoltre, dovrete conoscere alcune delle nuove funzionalità del framework. Per restare all'esempio di React, preparatevi a rispondere a domande su hook, lazy loading, stato e router. Per prepararsi a queste domande, è necessario utilizzare molto il framework e leggere attentamente la documentazione. NB: Ricordatevi sempre che ci possono essere domande sul linguaggio di programmazione: è molto comune chiedere Javascript e/o Typescript assieme a React, oppure chiedere Php e non solamente Laravel.

  3. Pair programming

    Questo tipo di colloquio si svolge quando vi viene assegnato un problema da svolgere "live" con l'intervistatore. Alcuni esempi sono:

    • Dato questo file di test, facciamo il TDD della classe associata.
    • Scriviamo un algoritmo K-means (non preoccupatevi della parte matematica).
    • Osservate questo bug nel codice, cerchiamo di trovarne l'origine e di risolverlo insieme.
    • Infine, potreste dover rifattorizzare un pezzo di codice con un file di test funzionante.

    L'intervistatore vuole vedere come si ragiona sui problemi e come si crea un codice di qualità. Potrete scegliere tra alcuni linguaggi, ma sia voi che l'intervistatore dovrete conoscere il linguaggio. Il modo per avere successo in questi colloqui è spiegare ad alta voce il vostro ragionamento e continuare a provare soluzioni e ad andare avanti.

  4. Colloquio su system design:

    Questo è un altro tipo di colloquio su cui c'è molta letteratura. Questo tipo di colloqui è riservato soprattutto alle figure di backend e diventa sempre più importante man mano che si sale di livello. Alcuni esempi:

    • Supponiamo che vi venga affidato il compito di costruire PlowNYC. Non preoccupatevi dell'hardware, ma di quali sistemi dovrete dotarvi?
    • Supponiamo che vi venga affidato il compito di costruire la Citi Bike di New York: come progettereste il sistema?

    In genere, l'intervistatore fornisce alcune schermate da costruire e il problema di base, mentre a voi spetta il compito di progettare lo schema e gli endpoint. Si passerà anche rapidamente a domande sullo scaling e sull'infrastruttura, tra cui l'uso di load balancer, database leader-follower e sharding del database. Per ottenere buoni risultati, fate molte domande, discutete i compromessi tra le tecnologie e continuate a parlare. L'intervistatore cerca di capire se avete familiarità con la costruzione di un sistema scalabile e che comprendete i compromessi tra le scelte tecnologiche.

  5. Take-home project

    A volte vi verrà assegnato un problema più grande come compito da svolgere a casa. Un tipico compito da svolgere a casa potrebbe essere: ospitare un servizio di url-shortener con link in scadenza oppure creare una piccola web app che prende (o posta) i dati da un'api fornita da loro. L'intervistatore vuole vedervi realizzare codice di alta qualità in un periodo di tempo più lungo, che può essere da qualche ora a qualche giorno. Consiglio: fate le cose semplici e non strafate, o rischiate di perdere il focus del progetto solamente per impressionare l'intervistatore.

  6. Il colloquio tecnico che non lo è.

    Arrivi al tuo colloquio tecnico tutto preparato. Sai tutto. Ti arriva però una controparte che tecnica non è. Possono esserci diversi motivi: la persona che doveva essere presente non è disponibile al momento; il tecnico lo è, ma di un'altra tecnologia; il "tecnico" di turno è il capo. Non ha importanza. Come moduli la tua presentazione? Il primo passo è capire come ragiona la persona. Viene da esperienze di waterfall? È completamente a digiuno di tutto? È un commerciale? Capire chi si ha davanti è fondamentale. Fare domande è anche utile per prendere tempo e decidere gli step successivi:

    • ripassate i contorni del problema, i vincoli e le tecnologie, questo trasmette l'idea di essere persone ordinate e evitate magari assunzioni errate
    • quando avete individuato una soluzione esponetela logicamente, magari in pseudo-code elencando pro e contro (scelgo il linguaggio X perché... uso questo algoritmo perché...)
    • a questo punto potete procedere direttamente con il codice.

    Questo tipo di flusso funziona su due livelli: il primo è quello logico funzionale (il codice funziona, le scelte sono logiche); il secondo è quello relazionale, infatti il vostro interlocutore vi valuta sulla base di euristiche e non di dati freddi (bastasse il codice che funziona sarebbe tutto più semplice), prendere il controllo del flusso di ragionamento e saper esporre il proprio pensiero diventa fondamentale nel trasmettere competenza.

Le aziende raccontano i loro iter di colloquio tecnico

Enrico Maria Cestari, CTO @Jointly:

In Jointly il percorso di recruiting Tech è fondato sulla trasparenza: il primo colloquio di una figura tecnica avviene sempre direttamente con il CTO e vengono messe in chiaro le possibili aspettative a livello di range salariale e modalità di lavoro. In questo primo step il CTO racconta innanzitutto quelli che sono i valori dell'azienda e si assicura che il candidato abbia compreso cosa aspettarsi - l'idea è quella di arrivare ad avere un'idea reciproca sul fit a livello valoriale. Allo stesso tempo vengono approfonditi gli approcci con cui il Team Tech lavora nel quotidiano insieme al Team Prodotto, e ci si confronta sui punti di vista e culturali (e.g., Agilità, pratiche di Software Engineering)- per il Team Tech di Jointly è molto importante che le Persone possano lavorare su un terreno comune e condiviso, con spirito di confronto costruttivo e di miglioramento continuo.

A valle di questo primo colloquio, se si percepisce il fit e se si ipotizzano possibilità di lavorare insieme, vengono organizzati uno o più passaggi tecnici verticali con le figure tecniche più senior del team. Questo serve anche a valutare nel modo più corretto possibile la seniority delle Persone candidate in relazione al team in cui si troveranno a lavorare. Per ultimo c'è il passaggio con HR, nel quale vengono validate le percezioni valoriali e il fit a livello di cultura aziendale. Se anche questo passaggio trova il consenso di entrambi, si procede all'offerta.

About

A galactice guide to successfully handling a technical interview

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published