Un giorno da ingegnere informatico

Ingegnere informatico

Lo sviluppo dell’economia digitale, iniziato qualche decennio fa, ha creato tante nuove professioni che richiedono elevate competenze informatiche. Una tra le più prestigiose – e ben pagate – è quella dell’ingegnere informatico.

Abbiamo fatto una chiacchierata con Mike, un ingegnere informatico che lavora per una delle più prestigiose aziende tecnologiche americane. Mike ci ha raccontato un po’ del suo percorso di carriera, di come svolge una sua giornata tipo e di cosa rende questo mestiere così affascinante.

Di seguito puoi trovare un riassunto della conversazione. Per la versione integrale ti consigliamo di guardare il video (in lingua inglese).

Senza entrare troppo nei dettagli, puoi spiegare di cosa si occupa un ingegnere informatico?

Gli ingegneri informatici – o programmatori di computer – creano software, cioè utilizzano un linguaggio di programmazione per dare istruzioni ad un computer. Alcuni esempi di software che tutti conoscono sono Facebook, Google e YouTube. Tuttavia, ci sono tanti altri esempi di prodotti meno “affascinanti” che tutti noi utilizziamo quotidianamente, senza sapere che sono stati creati da ingegneri informatici. Per esempio, un bancomat per prelevare o depositare denaro richiede un software piuttosto sofisticato per far sì che funzioni correttamente. Anche questo software viene creato da ingegneri informatici. Potremmo dire che, se si tratta di un servizio digitale, è stato creato da ingegneri informatici.

In pratica, per creare software un ingegnere informatico trascorre gran parte del proprio tempo programmando, ovvero scrivendo codice. Il codice non è altro che una lista di istruzioni date al computer per fargli eseguire dei comandi. Per comunicare con il computer, l’ingegnere informatico utilizza un linguaggio di programmazione, cioè una lingua che il computer sa leggere. Una volta che queste istruzioni vengono scritte, lo stesso comando può essere eseguito dal computer un numero infinito di volte in tempi rapidissimi. Questa è una delle ragioni per cui un programmatore può avere un impatto così importante sulla società. Ad esempio, l’algoritmo dietro il motore di ricerca di Google viene utilizzato contemporaneamente da milioni di persone che cercano cose completamente diverse.

Quando hai deciso di voler diventare un ingegnere informatico?

In realtà, ho deciso di fare il programmatore durante il mio ultimo anno di università. Ho intuito che le competenze tecniche sono le più difficili da ottenere e, quindi, danno delle buone opportunità di lavoro a chi le ha.

Inoltre, avere queste competenze ti permette di essere “auto-sufficiente” qualora decidessi di voler sviluppare una startup innovativa. Infatti, essendo un programmatore potresti creare il software da solo senza dover assumere nessuno all’inizio.

Cosa hai studiato all’università?

Ho studiato ingegneria industriale e, seppure la mia laurea non avesse molti corsi di programmazione, sono riuscito a frequentarne un paio. Oggi non è raro trovare ingegneri informatici che non hanno una laurea in ingegneria informatica.

Come hai imparato a programmare e come ti sei preparato per i primi colloqui di lavoro in questo campo?

Prima di fare i colloqui ho fatto dei corsi online su Coursera, che sono disponibili gratuitamente anche su YouTube. Mi sono concentrato su argomenti come algoritmi e strutture dei dati per rafforzare la mia comprensione dei fondamentali della programmazione. Comprendere fino in fondo questi argomenti è molto importante per avere successo nei colloqui con le principali aziende tecnologiche.

A grandi linee, quali sono i diversi tipi di ingegnere informatico?

In generale, possiamo dire che ci sono due tipi di ingegnere informatico: front-end engineer e back-end engineer. Io sono un back-end engineer.

Un front-end engineer si occupa di creare software che può essere visto direttamente dall’utente. Per esempio, la bacheca di Facebook, la pagina di un sito, o un’app per cellulare.

Al contrario, un back-end engineer crea il software che sta dietro le quinte e che l’utente non vede. Questa parte forse è ancora più importante del front-end.

Per fare un esempio, quando fai una ricerca su Google, la pagina che vedi sullo schermo viene creata dal front-end engineer. Quando scrivi una parola chiave e premi sul pulsante “cerca”, l’algoritmo inizia a cercare i contenuti più rivelanti in base alla tua ricerca. Questo algoritmo viene creato dal back-end engineer.

Parlami di un giorno tipo per un ingegnere informatico

Agli inizi della mia carriera tendevo a trascorrere più tempo programmando.

Essendo un Team Lead, a questo punto della mia carriera non sono più solamente un programmatore. Infatti, ormai passo gran parte del mio tempo aiutando il mio team e condividendo le mie conoscenze per aumentare la loro produttività. Trascorro anche molto tempo collaborando con altri team e assicurandomi che la direzione del mio team sia allineata alle priorità dell’azienda.

Direi che ormai trascorro circa il 30% del mio tempo programmando, un altro 30% ragionando sulla direzione da dare al mio team, 15% in meeting ed il restante 25% per tutto il resto.

Qual è una cosa che ti piace dell’essere un ingegnere informatico?

Una delle cose più belle e soddisfacenti è che in un solo giorno puoi creare un qualcosa che ha un impatto immediato su tantissime persone. Ad esempio, un ingegnere di Facebook può cambiare il colore del pulsante “mi piace” ed immediatamente vederne i risultati. Tutto questo ti dà un senso di gratificazione immediata e penso che tante persone scelgano questo mestiere per avere questa sensazione.

Ora parlaci di qualcosa che non ti piace

Talvolta ricevi richieste contrastanti da diversi utenti. In questi casi è difficile soddisfare entrambi, dato che si tratta di richieste opposte. La bravura sta nel capire a fondo che tipo di problema bisogna risolvere ed andare alla radice. Da ingegnere informatico tu vorresti semplicemente creare software ma devi anche fare attenzione a queste dinamiche.

A chi si addice questo tipo di carriera?

Una carriera da ingegnere informatico è perfetta per chi ama risolvere puzzle ed altri quesiti che richiedono l’utilizzo del ragionamento logico. Deve piacerti risolvere problemi ambigui, che richiedono un certo livello di creatività per essere risolti.

Per essere un ingegnere informatico devi essere molto paziente e razionale. A volte il codice che hai scritto non svolge il comando richiesto per via di un piccolo errore di sintassi, ad esempio la mancanza di una virgola. Risalire all’errore richiede tanta pazienza e capacità investigativa.

Come detto in precedenza, anche le capacità comunicative sono molto importanti, in particolare quando acquisisci qualche anno di esperienza e diventi manager di un team.

Che consiglio daresti a qualcuno che sta considerando una carriera in ingegneria informatica?

Per prima cosa direi di usare qualche risorsa gratuita online per vedere se ti piace. Impara un linguaggio di programmazione come Java, Python o Ruby e poi prova a scrivere codice per creare un’applicazione reale.

Un altro consiglio è di sviluppare una serie di progetti, magari su GitHub, che potrai mostrare a potenziali datori di lavoro durante i colloqui. In questo modo puoi facilmente dimostrare di avere le competenze necessarie a svolgere il lavoro. Conviene iniziare il prima possibile, dato che per sviluppare un portafoglio ampio di progetti possono volerci anni.

Se decidi che questo è il percorso che desideri seguire puoi iscriverti ad ingegneria informatica. Durante il corso di laurea ti conviene fare dei tirocini, in modo da poter mettere in pratica le conoscenze che hai studiato e prepararti per il mondo del lavoro.

Parlaci di qualcosa che hai scoperto strada facendo e che sarebbe stato utile sapere all’inizio della tua carriera

L’importanza di avere delle capacità comunicative e relazionali, anche per un ruolo come questo. È una cosa che ho scoperto di recente, ora che il mio ruolo è meno programmazione e più collaborazione con altri team.

Essere capaci di comunicare ed influenzare il management dell’azienda è molto importante per ottenere il loro supporto ed i fondi necessari a portare avanti il progetto a cui il mio team sta lavorando. A questo punto della mia carriera queste sono competenze che fanno davvero la differenza.

Direi che un ingegnere informatico agli inizi della sua carriera deve essere molto preparato sulle competenze tecniche, mentre man mano che passano gli anni l’aspetto comunicativo diventa sempre più importante.