Ingineria software poate fi o carieră incredibil de plină de satisfacții. Dar, fără o pregătire adecvată, poate fi dificil să obțineți postul de inginer software pe care îl aveți în minte. Am învățat acest lucru, în timp ce făceam cursuri de informatică în facultate pentru a obține un rol de inginerie software (SWE).
Am dat interviuri pentru o duzină de roluri software la majoritatea companiilor de tehnologie pe care le puteți numi: Google, Apple, Microsoft și startup-uri (la vremea respectivă) precum Snapchat și Uber. Aici sintetizez învățămintele mele, din experiențele mele de pregătire pentru joburi și interviuri, pentru a vă ajuta să vă pregătiți în călătoria dvs. în lumea ingineriei software: de la brainstormingul la ce companii să aplicați, trimiterea unui mesaj la rece către un recrutor pe LinkedIn, perfecționarea CV-ului, cum arată de obicei interviurile și ce subiecte de informatică să studiați.
Este singurul ghid de care aveți nevoie pentru a obține un job de inginer software entry-level.
Aplicarea la companii
Multe companii mari angajează ingineri entry-level. De obicei, acestea sunt roluri generice pentru noii absolvenți (nu dai un interviu pentru a fi în mod specific un dezvoltator iOS). Nu neglijați nici companiile non-tehnologice. Fiecare industrie caută talente în domeniul tehnologiei, iar tehnologia zguduie fiecare domeniu în moduri interesante.
Puteți găsi aceste roluri fie la târgul de cariere al colegiului dvs. vorbind cu un recrutor, fie căutând pe Google aceste cuvinte cheie: numele companiei + cariere universitare.
Dacă nu sunteți student, ci mai degrabă ați făcut tranziția către tehnologie fie printr-o tabără de pregătire în codare, fie învățându-vă singur să codificați, acesta este, de asemenea, un loc bun pentru a începe. Adesea, alături de aceste locuri de muncă pentru studenți sunt postate și locuri de muncă pentru începători. Cu toate acestea, dacă faceți o tranziție la jumătatea carierei, este posibil să fie nevoie să faceți un pic mai mult networking (prin intermediul prietenilor, evenimente sau prin mesaje la rece către recrutori).
Iată câteva idei de unde să începeți să căutați:
- Big tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
- Tech startups (Snowflake, DoorDash)
- Finance (Goldman Sachs, Visa, Robinhood)
- Entertainment (Disney, Viacom)
- Retail (Macy’s, Target, Walmart)
- Defense/Aerospațial (Boeing, Northrop Grumman)
Mesajul perfect pe LinkedIn la rece
Inevitabil, vor exista companii care nu vă vor răspunde chiar și după ce ați aplicat direct. Pentru a încerca să porniți lucrurile, încercați să vă faceți o rețea pentru a obține un interviu. Acest lucru ar putea veni fie sub forma de a ajunge la cei din rețeaua dvs. (absolvenți sau prieteni), fie de a ajunge la recrutorii înșiși.
Acestea sunt cele 5 reguli ale mele pentru un mesaj rece pe LinkedIn:
- Vezi dacă o conexiune reciprocă te poate prezenta – Este mai puțin probabil ca oamenii să îi ignore pe cei pe care îi cunosc deja.
- Să fii succint – Oamenii sunt ocupați. Nu le oferiți o scuză pentru a vă citi parțial mesajul înainte de a-l arunca.
- Găsește puncte comune – Dacă ați mers amândoi la aceeași școală sau ați lucrat la aceeași companie, aduceți în discuție acest fapt pentru a stârni familiaritate.
- Să fiți direct – Nu bateți apa-n piuă încercând să faceți conversație. Acesta nu este locul potrivit pentru asta.
- Demonstrați credibilitate – Dacă aveți experiență relevantă, spuneți acest lucru. Dacă aveți perspective deosebite, dați-le o mostră.
Iată un șablon de mesaj rece pe LinkedIn pentru a începe:
Bună, foarte interesat să mă alătur și să văd dacă există o potrivire reciprocă! Sunt un fost @ . Mi-ar plăcea să discutăm.
Exemplu:
Hey, foarte interesat să mă alătur Roblox și să văd dacă există o potrivire reciprocă! Sunt un fost PM @ Rockstar Games. Iubesc conceptul de joc social nestructurat. Mi-ar plăcea să discutăm.
Curriculum Vitae
Scrierea unui CV bun este o formă de artă, care se reduce la două lucruri: format și conținut.
Cea mai mare greșeală pe care o fac oamenii cu formatul este adăugarea de prea multe informații, CV-ul ajungând să aibă două sau chiar trei pagini. Acest lucru este inutil. Păstrați-l simplu. CV-ul tău ar trebui să aibă doar o pagină. Folosiți formatul italic și bold în mod strategic; acestea ar trebui să fie folosite cu adevărat doar pentru a ajuta recrutorul sau managerul de angajare să înțeleagă cine sunteți și ce aduceți la masă (de exemplu, folosiți-l doar pentru a evidenția secțiunile și numele companiei).
Când vine vorba de conținut, asigurați-vă că spuneți mai mult spunând mai puțin. Renunțați la prostii și folosiți în schimb cifre cantitative. Cifrele vor oferi dovezi concrete ale contribuțiilor dumneavoastră. Încercați să vă concentrați pe abilitățile dumneavoastră concrete. Nu este nevoie să îi spuneți în mod inutil recrutorului că sunteți un mare jucător de echipă, un vizionar sau un muncitor. Oricine poate spune acest lucru. În schimb, arătați prin acțiuni cum ați ajutat echipa.
Pentru mai multe informații, consultați această listă de verificare pentru a vă asigura că CV-ul dvs. de inginerie software este bine pus la punct și pregătit.
Un interviu tipic
Din experiența mea, procesul pentru interviurile de inginerie software este mai mult sau mai puțin același la fiecare companie, fie că este vorba de Google sau de un mic startup care tocmai și-a ridicat seria B. Iată la ce vă puteți aștepta în mod rezonabil în procesul de interviu.
Behavioral
Runda comportamentală se face de obicei la telefon cu un recrutor sau cu managerul de angajare pentru rolul respectiv. În această conversație, compania vrea să își dea seama dacă v-ați potrivi pentru acest rol, atât pe baza experiențelor dvs. cât și a capacității dvs. de a comunica (și pentru ca ei să evalueze dacă ați putea fi o persoană problematică cu care să lucrați). Fiți bine familiarizat cu CV-ul dumneavoastră, deoarece este posibil ca recrutorul sau managerul de angajare să vă întrebe despre experiențele enumerate în CV-ul dumneavoastră în această conversație.
- Mai multe întrebări comportamentale: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Coding Challenge
După interviul comportamental, este posibil să primiți o provocare de codare pe care să o finalizați în timpul liber. Acest lucru ar putea însemna să primiți o listă de cerințe și un schelet de cod. Vi s-ar cere apoi să completați codul și să îl trimiteți după ce ați finalizat codul în propriul mediu.
Cele mai frecvente sunt companiile care folosesc Hackerrank (sau instrumente de acest gen). Acesta este un mediu de codare online, bazat pe browser. Vă sugerez să vă înregistrați pentru un cont și să exersați utilizarea acestuia pe măsură ce vă pregătiți pentru interviuri, pentru a vă familiariza cu mediul.
În unele cazuri, companiile pot dori să finalizați mai întâi provocarea de codificare înainte de a vă chema chiar pentru runda comportamentală. Acest lucru se datorează faptului că este posibil să aibă o mulțime de candidați în partea de sus a pâlniei și au o modalitate automatizată de a filtra candidații al căror cod nu trece suficiente cazuri de testare.
- Încercați această problemă de „diferență de matrici”: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Interviu telefonic/video
Vă puteți întâlni între 1 și 3 interviuri telefonice. Acestea sunt, de obicei, despre structuri de date și/sau algoritmi.
Tipic, veți primi un link pentru un document partajabil (cum ar fi Google doc sau CodePen). Cu acestea, atât tu, cât și intervievatorul tău ați putea vedea ce tastezi în timp real. Vi s-ar prezenta o problemă de codare și, pe măsură ce vă scrieți codul, intervievatorul va putea să vă vadă progresul.
Să fiți pregătit să implementați structuri de date și algoritmi comuni. Studiați întrebările ușoare/medii din Leetcode.
Ar trebui să dați întotdeauna mai întâi soluția naivă. În calitate de dezvoltatori de software, dorim întotdeauna să scriem cel mai optim cod. Dar într-un interviu, este posibil ca timpul să se termine înainte de a termina soluția optimă. Veți câștiga cel puțin câteva puncte la interviu dacă timpul se scurge în timp ce scrieți soluția optimă, dar ați prezentat deja codul brute force/naive.
Oriceori, vă veți confrunta și cu întrebări de proiectare a sistemului în aceste interviuri telefonice.
- Practicați proiectarea arhitecturii Reddit: https://www.tryexponent.com/courses/software-engineering/design-reddit
La fața locului
Întrebările de la fața locului sunt similare cu cele de la interviul telefonic. Dacă ai ajuns până aici, dă-ți o palmă pe spate. Mai aveți puțin și ajungeți acolo! În această rundă finală, probabil că veți codifica pe o tablă albă – așa că exersați acest lucru înainte de a veni la interviu (câteva companii, cum ar fi Snapchat, vă pot permite/solicita să vă aduceți propriul laptop pentru a codifica la fața locului).
De asemenea, există de obicei o rundă de prânz în care veți lua prânzul cu echipa.
Ce trebuie să studiați
Să vă simțiți foarte confortabil să codificați atât într-un mediu de dezvoltare, cât și pe o tablă albă. Aici voi detalia subiectele de codare pe care ar trebui să le studiați.
Behavioral
Aceste întrebări vor apărea în timpul apelului telefonic inițial, dar pe măsură ce parcurgeți procesul de interviu, este inevitabil ca aceste întrebări să apară din nou (de exemplu, în timpul prânzului la fața locului). Încercați să fiți succint, să vorbiți cu încredere (terminând propozițiile cu o inflexiune descendentă a tonului) și să eliminați cuvintele de umplutură (uh, um, ca) din vocabularul dumneavoastră.
- Povestiți-mi despre dumneavoastră.
- De ce inginerie software?
- Povestește-mi despre un moment în care ai făcut o greșeală.
- Povestește-mi despre proiectul tău, x, și cu ce ai contribuit.
Limbaje de programare
Din experiența mea, companiile îți permit să programezi în orice limbaj cu care te simți cel mai confortabil. În cursurile mele de informatică din facultate (la UCLA), toți am fost învățați C++. Cu toate acestea, mi-am făcut toate interviurile în Java sau Python. Mi s-a părut foarte ușor să preiau alte limbaje odată ce m-am familiarizat cu sintaxa acestora.
Am sugera să întrebați recrutorul sau managerul de angajare dacă interviurile necesită un limbaj specific. În caz contrar, mergeți cu limbajul cu care este mai puțin probabil să faceți erori.
Structuri de date
Fiți familiarizați cu întrebările de codare în jurul acestor structuri de date. De asemenea, fiți familiarizați cu compromisurile, precum și cu complexitatea în timp și spațiu pentru fiecare dintre ele.
- Array
- Linked List
- Tree/Graph
- Hash Table
- Stack/Queue
- Heap
Algoritmi
Fiți familiarizați cu întrebările de codare care implică acești algoritmi. De asemenea, fiți familiarizat cu compromisurile, precum și cu complexitatea în timp și spațiu pentru fiecare.
- Căutare (și Graph search)
- Sort
- Programare dinamică
În funcție de rol și de companie, vi se pot pune și probleme de manipulare de biți.
Resurse
Din fericire, există o multitudine de resurse online care să vă ajute în călătoria dumneavoastră. Acestea sunt cele pe care vi le recomand.
Leetcode
Majoritatea întrebărilor dvs. de codare pot fi găsite pe Leetcode. Dacă devii foarte bun la aceste întrebări de tablă, ar trebui să fii pregătit. Pregătiți-vă pentru întrebări ușoare/medii, dar încercați și întrebările mai dificile – mai ales pe măsură ce avansați la rundele de la fața locului.
Exponent
Cursul Software Engineering Interview de la Exponent este singurul curs de care aveți nevoie. Acesta are articole și videoclipuri ghidate pentru a vă ajuta să vă reîmprospătați cunoștințele/învățați structurile de date și algoritmii de care aveți nevoie pentru interviu — toate într-un singur loc. În plus, Exponent a adăugat un curs cuprinzător de interviu de proiectare de sistem pentru unele dintre cele mai dificile întrebări de proiectare de sistem.
GeeksforGeeks
GeeksforGeeks are cele mai bune soluții pentru întrebările de codare. Pentru majoritatea întrebărilor de interviu, cu care vă puteți confrunta, GeeksforGeeks nu vă arată doar implementarea naivă, ci și o soluție optimizată, precum și complexitatea în timp și spațiu.
r/CSCareerQuestions
Această pagină Reddit (subreddit), r/CSCareerQuestions, este o comunitate de ingineri software aspiranți și experimentați. Puteți folosi această pagină pentru a citi despre experiențele altora la interviuri la anumite companii sau pentru a pune dumneavoastră întrebări. Un cuvânt de precauție: membrii acestui subreddit sunt foarte obsedați de prestigiul companiei și de compensații. Este bine să țintești spre marile companii mari de top din domeniul tehnologiei FAANG, dar amintește-ți întotdeauna să fii cu picioarele pe pământ – există o lume în afara tehnologiei!
Încheiere
Mulți oameni aleg ingineria software ca o carieră pentru unul sau mai multe dintre numeroasele motive. Este posibil să doriți să deveniți inginer software pentru că vă place să construiți lucruri. Sau poate că sunteți inspirat de modul în care tehnologia schimbă lumea. Sau poate doriți doar o carieră solidă cu un potențial de câștig bun (nimic în neregulă cu asta!).
Aveți un program de studiu consistent (de exemplu, faceți 1 întrebare Leetcode o dată la două zile) și respectați-l.
În timp ce lucrați la pregătirea pentru interviu, Exponent este întotdeauna aici pentru a vă ajuta la nevoie. Dacă aveți nevoie de o reîmprospătare, singura resursă pe care v-o recomand este Software Engineering Interview Course, care a fost alcătuit de ingineri software care au lucrat la unele dintre cele mai bune companii de tehnologie din industrie.
.