Inżynieria oprogramowania może być niesamowicie satysfakcjonującą karierą. Ale bez odpowiedniego przygotowania, to może być trudne do uzyskania pracy inżyniera oprogramowania masz w umyśle. Dowiedziałem się tego, jak brałem kursy informatyki w college’u, aby wylądować w roli inżyniera oprogramowania (SWE).
Mam wywiady dla tuzina ról oprogramowania w większości firm technologicznych można wymienić: Google, Apple, Microsoft, i startupów (w tym czasie) jak Snapchat i Uber. Tutaj podsumowuję moje nauki, z mojego przygotowania do pracy i doświadczenia wywiadu, aby pomóc przygotować się do podróży w świecie inżynierii oprogramowania: od burzy mózgów, które firmy ubiegać się o, wysyłając zimną wiadomość do rekrutera na LinkedIn, doskonalenie CV, jak wywiady zazwyczaj wyglądają, i które tematy informatyki studiować.
To jest tylko przewodnik trzeba wylądować entry-level pracy inżynierii oprogramowania.
Stosowanie się do firm
Wiele dużych firm zatrudnia inżynierów entry-level. Zazwyczaj są to ogólne role dla nowych absolwentów (nie prowadzisz rozmowy kwalifikacyjnej, aby zostać programistą iOS). Nie dyskontuj firm nietechnicznych albo. Każda branża poszukuje talentów technicznych, a technologia wstrząsa każdym polem w ekscytujący sposób.
Możesz znaleźć te role albo na targach kariery w college’u, rozmawiając z rekruterem, albo przez Google-ing te słowa kluczowe: nazwa firmy + kariery uniwersyteckie.
Jeśli nie jesteś studentem, ale raczej przeszedł do techniki albo przez obóz kodowania lub ucząc się kodu, jest to również dobre miejsce, aby zacząć. Często obok ofert pracy dla studentów pojawiają się oferty pracy na poziomie podstawowym. Jednakże, jeśli robisz przejście w połowie kariery, może trzeba zrobić trochę więcej networking (przez przyjaciół, wydarzenia, lub zimnej wiadomości rekruterów).
Oto kilka pomysłów na to, gdzie zacząć szukać:
- 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/Aerospace (Boeing, Northrop Grumman)
The Perfect LinkedIn Cold Message
Nieuchronnie, będą firmy, które nie odezwą się do Ciebie nawet po bezpośrednim zastosowaniu. Aby spróbować dostać piłkę toczenia, spróbuj sieci swoją drogę do wywiadu. To może przyjść albo w formie dotarcia do tych w sieci (absolwentów lub przyjaciół) lub dotarcie do rekruterów sami.
To są moje 5 zasad do zimnej wiadomości LinkedIn:
- Sprawdź, czy wzajemne połączenie może wprowadzić cię – Ludzie są mniej prawdopodobne, aby zignorować tych, którzy już wiedzą.
- Keep go zwięźle – Ludzie są zajęci. Nie dawaj im pretekstu do częściowego przeczytania wiadomości przed jej odrzuceniem.
- Znajdź wspólny mianownik – Jeśli oboje chodziliście do tej samej szkoły lub pracowaliście w tej samej firmie, wspomnij o tym fakcie, aby wzbudzić znajomość.
- Bądź bezpośredni – Nie owijaj w bawełnę, próbując nawiązać krótką rozmowę. To nie jest miejsce na to.
- Pokaż wiarygodność – Jeśli masz odpowiednie doświadczenie, powiedz o tym. Jeśli masz szczególne spostrzeżenia, daj im posmakować.
Tutaj znajduje się szablon zimnej wiadomości LinkedIn, abyś mógł zacząć:
Hej, bardzo zainteresowany dołączeniem i sprawdzeniem, czy istnieje wzajemne dopasowanie! Jestem byłym pracownikiem @ . Z przyjemnością porozmawiamy.
Przykład:
Hej, bardzo zainteresowany dołączeniem do Roblox i sprawdzeniem, czy jest wzajemne dopasowanie! Jestem byłym PM @ Rockstar Games. Kocham koncepcję niestrukturalizowanej gry społecznej. Chętnie porozmawiam.
Resume
Pisanie dobrego CV jest formą sztuki, która sprowadza się do dwóch rzeczy: formatu i treści.
Największym błędem, jaki ludzie popełniają w przypadku formatu, jest dodawanie zbyt wielu informacji, przez co CV kończy się na dwóch lub nawet trzech stronach. To jest niepotrzebne. Zachowaj prostotę. Twój życiorys powinien mieć tylko jedną stronę. Używaj kursywy i pogrubienia strategicznie; powinny one być używane tylko po to, aby pomóc rekruterowi lub menedżerowi zatrudniającemu zrozumieć, kim jesteś i co wnosisz do dyskusji (np. używając ich do pogrubienia sekcji i nazw firm).
Jeśli chodzi o treść, upewnij się, że mówisz więcej, mówiąc mniej. Ogranicz puchę i zamiast tego użyj danych ilościowych. Liczby dostarczą twardych dowodów na Twój wkład. Staraj się skupić na swoich twardych umiejętnościach. Nie ma potrzeby, aby niepotrzebnie mówić rekruterowi, że jesteś świetnym graczem zespołowym, wizjonerem lub pracownikiem. Każdy może to powiedzieć. Zamiast tego, pokaż poprzez działanie, jak pomogłeś swojemu zespołowi.
Po więcej informacji, sprawdź tę listę kontrolną, aby upewnić się, że Twoje CV inżyniera oprogramowania jest dopracowane i gotowe.
Typowy wywiad
Z mojego doświadczenia wynika, że proces wywiadów z inżynierami oprogramowania jest mniej więcej taki sam w każdej firmie, niezależnie od tego, czy jest to Google, czy mały startup, który właśnie podniósł swoją serię B. To jest to, czego można się spodziewać w procesie wywiadu.
Behavioral
Runda behawioralna zazwyczaj odbywa się przez telefon z rekruterem lub menedżerem zatrudniającym dla roli. W tej rozmowie, firma chce dowiedzieć się, czy byłbyś dobrym kandydatem do tej roli, zarówno w oparciu o swoje doświadczenia, jak i zdolność do komunikowania się (i dla nich, aby ocenić, czy może być problematyczną osobą do pracy). Bądź dobrze zorientowany w swoim CV, ponieważ jest prawdopodobne, że rekruter lub kierownik ds. zatrudnienia zapyta Cię o doświadczenia wymienione w CV podczas tej rozmowy.
- Więcej pytań behawioralnych: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Wyzwanie kodowania
Po wywiadzie behawioralnym możesz otrzymać wyzwanie kodowania do wykonania we własnym czasie. Może to oznaczać uzyskanie listy wymagań i kodu szkieletowego. Następnie zostaniesz poproszony, aby zakończyć kod i złożyć go po zakończeniu kodu w swoim własnym środowisku.
Bardziej powszechnie, firmy zostały przy użyciu Hackerrank (lub narzędzi, takich jak to). Jest to środowisko kodowania online, oparte na przeglądarce. Proponuję zarejestrować się na konto i ćwiczyć przy jego użyciu, jak przygotować się do wywiadów, aby zapoznać się ze środowiskiem.
W niektórych przypadkach, firmy mogą chcieć, aby zakończyć wyzwanie kodowania pierwszy przed nawet zadzwonić do Ciebie dla rundy behawioralnej. To dlatego, że mogą mieć wielu kandydatów na szczycie lejka, a oni mają jakiś zautomatyzowany sposób filtrowania kandydatów, których kod nie przechodzi wystarczająco dużo przypadków testowych.
- Spróbuj ten problem „różnica tablic”: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Phone/Video Interview
Możesz napotkać od 1 do 3 wywiadów telefonicznych. Są one zazwyczaj na temat struktur danych i / lub algorytmów.
Typowo, dostaniesz link do dokumentu, którym można się dzielić (np. Google doc lub CodePen). Dzięki nim zarówno Ty, jak i Twój ankieter będziecie mogli zobaczyć, co wpisujecie w czasie rzeczywistym. Zostaniesz przedstawiony z problemem kodowania i jak piszesz swój kod, ankieter będzie mógł zobaczyć swoje postępy.
Bądź przygotowany do wdrożenia wspólnych struktur danych i algorytmów. Studiuj łatwe/średnie pytania Leetcode.
Powinieneś zawsze podawać najpierw rozwiązanie naiwne. Jako programiści, zawsze chcemy napisać najbardziej optymalny kod. Ale w wywiadzie możliwe jest, że czas może się skończyć, zanim skończysz swoje optymalne rozwiązanie. Przynajmniej zdobędziesz kilka punktów w wywiadzie, jeśli czas skończy się, gdy piszesz swoje optymalne rozwiązanie, ale już przedstawiłeś kod brute force/naive.
Czasami będziesz miał do czynienia z pytaniami dotyczącymi projektowania systemu w tych wywiadach telefonicznych, jak również.
- Praktyka projektowania architektury Reddita: https://www.tryexponent.com/courses/software-engineering/design-reddit
On-Site
Pytania w on-site są podobne do pytań z wywiadu telefonicznego. Jeśli udało Ci się dotrzeć tak daleko, poklep się po plecach. Jesteś prawie tam! W tej ostatniej rundzie, prawdopodobnie będziesz kodować na tablicy — więc poćwicz to przed przyjściem na rozmowę (kilka firm, takich jak Snapchat, może pozwolić ci/zaprosić cię do przyniesienia własnego laptopa do kodowania na miejscu).
Jest też zazwyczaj runda obiadowa, w której możesz zjeść lunch z zespołem.
Co studiować
Bądź bardzo wygodny w kodowaniu zarówno w środowisku programistycznym, jak i na białej tablicy. Tutaj będę szczegółowo tematy kodowania należy studiować.
Behavioral
Te pytania pojawią się w początkowej rozmowy telefonicznej, ale jak przejść przez proces wywiadu, to jest nieuniknione, te pytania pojawią się ponownie (np. podczas lunchu w miejscu). Staraj się być zwięzły, mówić pewnie (kończąc swoje zdania z odchyleniem w dół w swoim tonie) i wyeliminować słowa wypełniacze (uh, um, jak) z Twojego słownictwa.
- Powiedz mi o sobie.
- Dlaczego inżynieria oprogramowania?
- Opowiedz mi o czasie, kiedy popełniłeś błąd.
- Opowiedz mi o swoim projekcie, x, i co wniosłeś.
Języki programowania
Z mojego doświadczenia, firmy pozwalają ci kodować w jakimkolwiek języku, z którym czujesz się najbardziej komfortowo. Na moich kursach informatyki w college’u (na UCLA), wszyscy uczyliśmy się C++. Jednakże, wszystkie moje rozmowy kwalifikacyjne przeprowadzałem w Javie lub Pythonie. Bardzo łatwo było mi przyswoić inne języki, gdy tylko zapoznałem się z ich składnią.
Proponowałbym zapytać rekrutera lub menedżera zatrudniającego, czy wywiady wymagają jakiegoś konkretnego języka. W przeciwnym razie, idź z językiem, który jest mniej prawdopodobne, aby popełnić błędy z.
Struktury danych
Bądź zaznajomiony z pytaniami kodowania wokół tych struktur danych. Bądź także zaznajomiony z kompromisami, jak również złożonością czasową i przestrzenną dla każdej z nich.
- Array
- Linked List
- Tree/Graph
- Hash Table
- Stack/Queue
- Heap
Algorithms
Bądź zaznajomiony z pytaniami dotyczącymi kodowania związanymi z tymi algorytmami. Należy również znać kompromisy, jak również złożoność czasową i przestrzenną dla każdego z nich.
- Wyszukiwanie (i Graph search)
- Sort
- Programowanie dynamiczne
W zależności od roli i firmy, możesz być również poproszony o rozwiązywanie problemów związanych z manipulacją bitami.
Zasoby
Na szczęście, istnieje mnóstwo zasobów online, aby pomóc Ci w Twojej podróży. Oto te, które polecam.
Leetcode
Większość twoich pytań dotyczących kodowania można znaleźć na Leetcode. Jeśli staniesz się bardzo dobry w tych pytaniach tablicowych, powinieneś być gotowy. Bądź przygotowany na łatwe/średnie pytania, ale spróbuj również trudniejszych pytań — szczególnie, gdy przejdziesz do rund na miejscu.
Exponent
Exponent’s Software Engineering Interview course is the only course you need. Zawiera on artykuły i filmy wideo, które pomogą Ci odświeżyć wiedzę / nauczyć się struktur danych i algorytmów potrzebnych do rozmowy kwalifikacyjnej – wszystko w jednym miejscu. Plus, Exponent’s dodał kompleksowy kurs wywiadu na temat projektowania systemu dla niektórych trudniejszych pytań dotyczących projektowania systemu.
GeeksforGeeks
GeeksforGeeks ma najlepsze rozwiązania dla pytań dotyczących kodowania. Dla większości pytań na rozmowie kwalifikacyjnej, z którymi możesz się spotkać, GeeksforGeeks nie tylko pokazuje naiwną implementację, ale także zoptymalizowane rozwiązanie, jak również złożoność czasową i przestrzenną.
r/CSCareerQuestions
Ta strona Reddit (subreddit), r/CSCareerQuestions, jest społecznością aspirujących i doświadczonych inżynierów oprogramowania. Możesz użyć tej strony, aby przeczytać o doświadczeniach innych osób podczas rozmów kwalifikacyjnych w konkretnych firmach lub aby samemu zadawać pytania. Słowo ostrzeżenia: członkowie tego subreddita mają obsesję na punkcie prestiżu firmy i wynagrodzenia. Dobrze jest dążyć do najlepszych wielkich firm technologicznych FAANG, ale zawsze pamiętaj, aby być uziemionym – istnieje świat poza technologią!
Wrapping Up
Wiele osób wybiera inżynierię oprogramowania jako karierę z jednego lub więcej z wielu powodów. Możesz chcieć zostać inżynierem oprogramowania, ponieważ lubisz budować rzeczy. A może jesteś zainspirowany tym, jak technologia zmienia świat. A może po prostu chcesz solidnej ścieżki kariery z dobrym potencjałem zarobkowym (nic w tym złego!).
Miej spójny harmonogram nauki (np. zrób 1 pytanie Leetcode co drugi dzień) i trzymaj się go.
Jak pracujesz nad swoim przygotowaniem do rozmowy kwalifikacyjnej, Exponent jest zawsze tutaj, aby pomóc w razie potrzeby. Jeśli potrzebujesz odświeżenia, jeden zasób polecam jest Software Engineering Interview Course, który został złożony przez inżynierów oprogramowania, którzy pracowali w niektórych z najlepszych firm technologicznych w branży.
.