Quello che ho imparato passando da stagista di Twitter a ingegnere del software Twitter a tempo pieno

Più codifica e crescita!

Foto di Joshua Earle su Unsplash

* Guardando il calendario * Whoa! Sono già passati sei mesi ?! Il primo giorno del mio tirocinio su Twitter, sapevo che ci sarebbe voluta un'eternità per vedere la fine del tunnel, ma eccoci qui. Sono un ingegnere a tempo pieno su Twitter !!

È stato sicuramente uno sprint e ho imparato più di quanto potessi immaginare. Sono felice di poter assorbire la maggior parte delle conoscenze. Ora voglio prendermi il tempo di scrivere sulla mia esperienza nel completare il programma. So che la maggior parte dei programmi di tirocinio hanno percorsi semplici verso l'occupazione a tempo pieno. Quindi voglio evidenziare alcune delle fasi che ho attraversato, le insidie ​​che ho affrontato e riflettere su tutto ciò che ho imparato. Se posso aiutare una persona nel suo viaggio di programmazione da questo post, allora → !!

Nota: se sei curioso di sapere come ho fatto il tirocinio su Twitter, quella storia può essere trovata qui: Come sono passato dall'aeronautica arruolata al tirocinante ingegnere del software @Twitter

L'eccitazione

Non appena ho scoperto che sarei stato internato su Twitter, mi sono sentito come il motore più grande del mondo. Pieno di energia e pronto a conquistare qualunque progetto sia stato abbastanza sfortunato da atterrare sul mio cammino.

Tranne il fatto che un motore non è nulla senza il resto dell'auto, ed è improbabile che tu ti presenti come una macchina piena. Anche se hai lavorato come ingegnere prima, ci sono cose che variano da compagnia a compagnia. Ma la formazione sul posto di lavoro sarà il tuo nuovo migliore amico. Con un bel po 'di questo, navigherai in pochissimo tempo!

Mi sto avvicinando al quartier generale di Twitter il mio primo giorno. Fonte immagine.

Il primo passo verso la costruzione del resto dell'auto è stato il New Hire Orientation. Fu qui che mi resi conto che la Tech Company XYZ non basava il proprio stack sul progetto del calcolatore FreeCodeCamp.

Durante la settimana di orientamento su Twitter, agli ingegneri viene fornita una panoramica di come funziona Twitter e i dettagli su come i pezzi si uniscono per realizzarlo.

All'inizio evoca un tipo di emozione woah-this-is-follemente complessa. Dopo aver iniziato a lavorare davvero, avrà molto più senso. All'improvviso lavorerai su un progetto e ti imbatterai in cose che ricordi di aver sentito nell'orientamento. Assicurati di non sentire, pensare, desiderare o considerare la necessità di immergerti in ogni parte della pila.

Tuttavia, queste spiegazioni di alto livello sono utili. Ti aiutano a vedere il quadro generale e come il tuo team contribuisce alla missione dell'azienda. Quindi, mentre ero ansioso di iniziare, concedermi il tempo per sistemarmi mi avrebbe permesso di accelerare molto più agevolmente!

Il novizio

Iniziare in una nuova società in un settore completamente nuovo facendo un lavoro completamente nuovo è stato un grande cambiamento per me. Improvvisamente mi sentivo come se fossi di nuovo in allenamento di base. Quando ho iniziato, non sapevo nemmeno come usare un Mac. Sono stato un PC per tutta la vita. È una sensazione piuttosto spaventosa, perché come nuovo assunto, vuoi fornire valore - e invece a volte puoi sentirti piuttosto inutile. Sii paziente con te stesso. Non avere questa pazienza è stata una delle cose più difficili da affrontare quando ho iniziato.

fonte

Come ho detto, hai questo motore che è pronto a fare tutto da solo. Ma è necessario un po 'di lavoro prima di poter conquistare il mondo! Essere pazienti ti aiuterà a diventare produttivo più velocemente. Ti aiuterà anche a non sentirti uno spreco di ossigeno mentre impari.

L'accumulo

Per aumentare le capacità di cui avevo bisogno per diventare produttivo, sapevo che avrei dovuto dividerle in più fasi. Volevo prima imparare le competenze più necessarie, alcune abilità per aumentare la produttività e così via.

Il problema che ho avuto all'inizio era capire quale abilità in queste fasi imparare prima. Il numero di cose che si potevano imparare era travolgente. C'era così tanta novità che mi circondava! Tuttavia, sapevo che solo una piccola parte sarebbe pertinente a ciò che stavo cercando di realizzare.

Per riferimento, non avevo mai usato la maggior parte delle tecnologie che avrei usato nei prossimi sei mesi. Ok ok, tranne Git, ma a parte quello mi sentivo come se fossi su un nuovo pianeta!

Alla fine ho fatto imparare a usare il nuovo IDE il mio primo obiettivo. L'editor che userò si chiama IntelliJ e ha una quantità folle di pulsanti su di esso, e in precedenza utilizzavo Atom. Quindi un altro enorme interruttore!

Questo è come IntelliJ mi ha guardato all'inizio. fonte

Quando finalmente ero pronto a scrivere del codice, il mio primo istinto era quello di capire come realizzare un piccolo progetto che conoscevo. Essenzialmente facendo un progetto di traduzione con i miei nuovi strumenti. Quindi, qui stavo cercando di arrivare a un programma HelloWorld Scala (Sì, lo conto come un piccolo progetto ) per stampare sulla console. Mi sentivo come se fosse il primo giorno di FreeCodeCamp.

Dopo che ho fatto funzionare quel progetto, ho ricevuto un progetto di pratica più grande. L'unico problema era che non sapevo come costruire e testare questo progetto con i miei nuovi strumenti. Ciò che è stato ancora più folle è che avevo già realizzato questo progetto di pratica (The Short. URL Shortener style). Quindi ho saputo implementare la logica e ho persino potuto persistere nei dati. Ma, senza Atom, NPM, MongoDB e NodeJS mi ero perso! Almeno, a questo punto, sono stato decente a navigare nel Mac.

Imparare una nuova lingua (Scala) e IDE (IntelliJ) allo stesso tempo mi ha rallentato un po '. Inutile dire che è stato un processo lento per "sentirmi" produttivo.

Guardando indietro, ho imparato che l'ordinamento e la definizione delle priorità su quali argomenti imparare ora e su quali approfondire in seguito è immensamente utile. In realtà potrebbe essere più facile eliminare tutte le cose che non hai bisogno di imparare e concentrarti su ciò che resta.

C'erano almeno due o tre cose in cui ho scavato, guardando indietro, a cui non avevo tempo per dedicarmi. Se potessi ricominciare da capo, avrei iniziato esclusivamente con alcuni tutorial IntelliJ. In questo modo avrei potuto almeno eseguire semplici programmi e modificarli per sperimentare l'ambiente. So che può sembrare un gioco da ragazzi, ma quando sei bombardato da cinquanta cose di cui non hai mai sentito parlare, è un po 'difficile setacciarle.

Non importa quale percorso segui, tutto si unirà col tempo. Basta non fermarsi. È solo una questione di quanto vuoi essere efficiente! (Prius o Hellcat?) Prima di rendermene conto, stavo realizzando progetti! La gioia che ho provato è stata fantastica. Stavo scrivendo il codice Scala, usando IntelliJ e persino usando il mio Mac senza cercare su Google come utilizzare semplici funzionalità. Sicuramente una "W" ma non è ancora il momento di riposare!

L'impostore

Questa sezione tocca un argomento che molti potrebbero aver sperimentato. In caso contrario, ecco un piccolo avvertimento nel caso in cui lo fai un giorno! Questo argomento è la sindrome di impostore. Ha parecchie forme, ma tutte tornano a non sentirsi come se fossi capace. La parte strana è che puoi sperimentarlo mentre hai una storia di come fare le cose o dimostrarti ripetutamente a te stesso.

Lo provo quasi ogni volta che inizio a lavorare su un nuovo progetto. Scopro rapidamente che c'è da fare per quasi ogni progetto, non importa quanto piccolo. Questo divario di conoscenza che ho prima di ogni progetto mi fa sentire inadeguato. Questo mi porta naturalmente allo stato mentale "Appartengo qui?". E credo di aver finalmente capito perché!

Il fatto che io non abbia una formazione CS formale o anche un addestramento per il codice Boot Camp è un pezzo di esso. Voglio dire, so di non essere un principiante assoluto, ma so anche che mi mancano frammenti di conoscenza di base del CS. Per un po 'la mia conoscenza del CS mi è sembrata un pezzo di formaggio svizzero. Con il tempo, però, ho colmato molte di quelle lacune di conoscenza e ho acquisito maggiore fiducia.

Ma questo non vuol dire che è stata la fine di sentirsi un impostore! Quasi ogni volta che mi trovavo faccia a faccia con un nuovo progetto, la sindrome dell'impostore riemergeva. Eventually Alla fine ho appreso che questo resurfacing era dovuto solo al fatto che avessi familiarità 0% -25% con un determinato progetto o base di codice. Sembra una cosa del tipo "Well duh", ma quando mi viene assegnato un progetto il mio cervello inizia a correre per capire come lo affronterò. Il mio cervello sta pensando al traguardo e allo stesso tempo sa che non capisco tutte le parti intricate del progetto. Quindi il mio cervello dice qualcosa del tipo "Fratello, non abbiamo idea di cosa stia succedendo qui come lo faremo ?!".

Dopo aver scavato nel codice e aver letto la documentazione, torneremo a "I got this!". Per favore, lascia che gli altri ti raggiungano. Per me l'analogia di cui sopra è la maggior parte del motivo per cui mi sentirei e talvolta mi sento ancora un impostore. Ora che lo capisco di più, posso discutere con il mio cervello e poi rilassarmi per raggiungerlo. Chiunque soffra di sindrome di impostore sa che siamo sempre "al passo"!

Il mio consiglio

Ora il mio tirocinio è stato fantastico! Ho imparato tanto Ma farei a tutti un disservizio per tralasciare il feedback più importante che ho ricevuto. Certo che non sono perfetto! Quindi ecco un elenco dei feedback più comuni che ho ricevuto durante i miei sei mesi di internato.

  1. Prendi appunti (ho un buon ricordo, ma dopo incontri su cose diverse puoi dimenticartene). È stato fantastico parlare con i miei compagni di squadra in Slack. Potrei sempre scorrere su 24/7 e vedere i dettagli. Se solo potessi averlo per ogni conversazione. Oh sì, un quaderno o un documento Google.
  2. Dai ai compagni di squadra più contesto quando fai domande. Sento che questo è un problema comune per i nuovi ingegneri. A volte ponevo domande come se l'altra persona avesse lavorato nello stesso file e sulla stessa riga di codice su cui avevo lavorato. E non a caso porterebbe a confusione, se non una risposta errata alla mia domanda. È quasi come chiamare qualcuno sul tuo telefono e dire "Ehi! Puoi darmi indicazioni per casa? ”. (Prima di Google Maps, GPS e cose del genere ovviamente) Ma se dici "Sono all'incrocio tra Blah e Blah diretti a ovest e provo a tornare a casa, puoi aiutare?" Possono sicuramente aiutare molto di più! Se hanno una mappa o il loro cervello ingegneristico più anziano!
  3. Non essere un gladiatore! Lo sviluppo del software è uno sport di squadra. Tuttavia, non potevo scrollarmi di dosso la sensazione di dover provare me stesso. Non che non volessi lavorare in gruppo, ma sentivo di dover dimostrare di poter gestire un progetto da solo. L'unico problema era ... .. Non avevo bisogno di farlo. Questa ossessiva missione di mettermi alla prova mi ha fatto ricevere quello che considero l'unico grande feedback negativo nel mio secondo stage. Voglio dire, a meno che tu non stia creando una startup, avrai una squadra per supportarti! Lavora con loro e tutti beneficiano!

Bonus: oltre ad essere più specifico quando fai domande, assicurati di porre tutte le domande che potresti avere. Questo è un consiglio super utile per noi qui che ci insegnano a programmare.

Non c'è proprio nessun quiz da fare per vedere se le tue conoscenze sono paragonabili agli attuali ingegneri del software junior. Quindi, francamente, non sai cosa non sai. E sento che molti di noi accettano questo come vero.

Questo non è un problema fino a quando non senti qualcosa che suona come conoscenza ingegneristica comune. Se hai mai sentito altri ingegneri chattare e pensi a te stesso "Probabilmente dovrei sapere che " questo è ciò di cui sto parlando.

A quanto pare, va TOTALMENTE bene se non lo sai. È un dato di fatto, alcuni degli ingegneri più anziani pongono la domanda esatta a cui stavo pensando. Quindi ti rendi conto che ogni ingegnere non sa tutto. Vedrai quindi che ogni membro del team che conosce tutti una buona quantità è ciò che rende potente il team. E le domande e la condivisione fanno il resto! Non temere che l'argomento sia qualcosa di base che dovresti sapere. Chiedi via !!

La conclusione

Ad essere sincero, andando a questo stage non avevo idea di cosa aspettarmi. Solo che avrei scritto il codice ad un certo punto. Non avevo mai lavorato nella tecnologia o lavorato in team per sviluppare software.

Nel complesso, penso che sia andato perfettamente. Dai successi che ho avuto insieme al feedback costruttivo che ho ricevuto. Venire dai militari lo ha sicuramente reso interessante! Soprattutto dopo che sei stato addestrato a seguire gli ordini per anni e all'improvviso devi decidere la maggior parte del tuo flusso di lavoro quotidiano.

Quando chiedi quando entrare nel lavoro e il tuo manager dice

Come sempre, però, sapevo che l'avrei capito. Proprio come l'addestramento militare di base quando eravamo calvi e confusi e dovevamo capire cose a caso in 1,5 secondi. Solo ora non sono calvo.

In realtà ci sono un sacco di cose che ho imparato dai militari che sento aiutarmi molto nella tecnologia. Lo salveremo per un altro post, però. Voglio anche ringraziare tutti coloro che mi hanno aiutato nel mio viaggio e la mia famiglia per aver affrontato il tempo lontano da loro. Mi sentivo letteralmente come se avessi un piccolo villaggio che mi ha fatto diventare un grande ingegnere. Sono molto grato e fortunato per il sistema di supporto che ho. Grazie per aver letto!