Softwarové inženýrství může být neuvěřitelně prospěšná kariéra. Bez správné přípravy však může být obtížné získat práci softwarového inženýra, kterou si představujete. To jsem poznal, když jsem na vysoké škole navštěvoval kurzy informatiky, abych získal pozici softwarového inženýra (SWE).
Absolvoval jsem pohovory na tucet softwarových pozic ve většině technologických společností, které můžete jmenovat: Google, Apple, Microsoft a startupy (v té době) jako Snapchat a Uber. Zde shrnuji své poznatky, které jsem získal při přípravě na práci a při pohovorech, abych vám pomohl připravit se na cestu do světa softwarového inženýrství: od vymýšlení, do kterých společností se přihlásit, přes zaslání chladné zprávy personalistovi na LinkedIn, zdokonalení životopisu, jak obvykle vypadají pohovory a jaká témata z oblasti informatiky studovat.
Toto je jediný průvodce, který potřebujete, abyste získali práci softwarového inženýra na základní úrovni.
Přihlašování do společností
Mnoho velkých společností přijímá inženýry na základní úrovni. Obvykle se jedná o obecné pozice pro nové absolventy (nejdete na pohovor konkrétně na pozici vývojáře iOS). Nepodceňujte ani netechnologické společnosti. Každé odvětví hledá technologické talenty a technologie vzrušujícím způsobem otřásají každým oborem.
Tyto pozice můžeš najít buď na kariérním veletrhu na své vysoké škole, kde si promluvíš s náborářem, nebo když zadáš do Googlu tato klíčová slova: název společnosti + kariéra na univerzitě.
Pokud nejsi student, ale spíše jsi do technologií přešel buď prostřednictvím kódovacího tábora, nebo tím, že ses sám naučil kódovat, je to také dobré místo, kde začít. Často jsou zde vedle těchto studentských pracovních míst zveřejňována i pracovní místa na základní úrovni. Pokud však přecházíte v polovině kariéry, budete možná potřebovat trochu více networkingu (prostřednictvím přátel, akcí nebo zasílání studených zpráv personalistům).
Níže uvádíme několik nápadů, kde začít hledat:
- Velké technologické společnosti (Facebook, Apple, Amazon, Google, IBM, Cisco)
- Technologické startupy (Snowflake, DoorDash)
- Finance (Goldman Sachs, Visa, Robinhood)
- Zábava (Disney, Viacom)
- Maloobchod (Macy’s, Target, Walmart)
- Obrana/letecký průmysl (Boeing, Northrop Grumman)
Dokonalá studená zpráva na LinkedIn
Nevyhnutelně se najdou společnosti, které se vám neozvou ani po přímé žádosti. Chcete-li se pokusit o navázání kontaktu, zkuste se po síti dostat k pohovoru. To může mít podobu buď oslovení osob z vaší sítě (absolventů nebo přátel), nebo oslovení samotných personalistů.
Toto je mých 5 pravidel pro studenou zprávu na LinkedIn:
- Zjistěte, zda vás může představit vzájemná známost – Lidé méně ignorují ty, které již znají.
- Zachovejte stručnost – Lidé jsou zaneprázdnění. Nedávejte jim záminku, aby si vaši zprávu přečetli jen částečně, než ji zahodí.
- Najděte společnou řeč – Pokud jste oba chodili na stejnou školu nebo pracovali ve stejné firmě, zmiňte tuto skutečnost, abyste vyvolali známost.
- Buďte přímí – Nechoďte kolem horké kaše a nesnažte se navázat konverzaci. Na to není místo.
- Projevte důvěryhodnost – Pokud máte relevantní zkušenosti, řekněte to. Máte-li konkrétní postřehy, dejte jim ochutnat.
Tady je šablona chladné zprávy na LinkedIn, která vám pomůže začít:
Ahoj, mám velký zájem se připojit a zjistit, zda je vzájemná shoda! Jsem bývalý @ . Rád bych si s vámi popovídal.
Příklad:
Ahoj, mám velký zájem se připojit k Robloxu a zjistit, jestli je tu vzájemná shoda! Jsem bývalý PM @ Rockstar Games. Miluji koncept nestrukturované společenské hry. Rád bych si popovídal.
Životopis
Napsat dobrý životopis je umění, které spočívá ve dvou věcech: formátu a obsahu.
Největší chybou, kterou lidé dělají s formátem, je přidání příliš mnoha informací, přičemž životopis nakonec má dvě nebo dokonce tři stránky. To je zbytečné. Držte se jednoduchosti. Váš životopis by měl mít pouze jednu stránku. Kurzívu a tučné písmo používejte strategicky; měli byste je používat opravdu jen proto, abyste náborovému pracovníkovi nebo personalistovi pomohli pochopit, kdo jste a co přinášíte (např. používejte je pouze k tučnému zvýraznění sekcí a názvů společností).
Pokud jde o obsah, dbejte na to, abyste řekli více tím, že řeknete méně. Vynechejte zbytečnosti a místo toho použijte kvantitativní údaje. Čísla budou tvrdým důkazem vašeho přínosu. Snažte se zaměřit na své tvrdé dovednosti. Není třeba náborovému pracovníkovi zbytečně říkat, že jste skvělý týmový hráč, vizionář nebo pracovitý člověk. To může říct každý. Místo toho ukažte prostřednictvím činů, jak jste pomohli svému týmu.
Další informace najdete v tomto kontrolním seznamu, aby byl váš životopis softwarového inženýra vybroušený a připravený.
Typický pohovor
Podle mých zkušeností je průběh pohovoru pro softwarové inženýry víceméně stejný v každé společnosti, ať už se jedná o Google nebo malý startup, který právě získal peníze ze série B. Toto je to, co můžete v rámci pohovoru rozumně očekávat.
Behaviorální
Behaviorální kolo obvykle probíhá po telefonu s náborářem nebo manažerem náboru pro danou pozici. V tomto rozhovoru chce společnost zjistit, zda byste se na danou pozici hodili, a to jak na základě vašich zkušeností, tak i na základě vaší schopnosti komunikovat (a aby mohla posoudit, zda s vámi může být problémová spolupráce). Dobře se orientujte ve svém životopise, protože je pravděpodobné, že se vás personalista nebo náborový manažer v tomto rozhovoru zeptá na zkušenosti uvedené ve vašem životopise.
- Další otázky týkající se chování: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Kódovací úkol
Po behaviorálním pohovoru můžete dostat kódovací úkol, který budete muset splnit ve svém volném čase. To může znamenat, že dostanete seznam požadavků a kostru kódu. Poté byste byli požádáni o dokončení kódu a jeho odeslání po dokončení kódu ve vlastním prostředí.
Častěji společnosti používají Hackerrank (nebo podobné nástroje). Jedná se o online kódovací prostředí založené na prohlížeči. Doporučuji zaregistrovat si účet a procvičit si jeho používání během přípravy na pohovor, abyste se s prostředím seznámili.
V některých případech mohou společnosti chtít, abyste nejprve dokončili kódovací výzvu ještě předtím, než vás pozvou na behaviorální kolo. Je to proto, že mohou mít hodně kandidátů na vrcholu trychtýře a mají nějaký automatizovaný způsob, jak odfiltrovat kandidáty, jejichž kód neprojde dostatečným počtem testovacích případů.
- Zkuste si tento problém „rozdíl polí“: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Pohovor přes telefon/video
Můžete se setkat s 1 až 3 telefonickými pohovory. Ty se obvykle týkají datových struktur a/nebo algoritmů.
Typicky dostanete odkaz na dokument, který lze sdílet (například dokument Google nebo CodePen). Díky nim byste jak vy, tak i váš tazatel mohli vidět, co píšete v reálném čase. Byl by vám předložen kódovací problém a v průběhu psaní kódu by tazatel mohl vidět váš postup.
Připravte se na implementaci běžných datových struktur a algoritmů. Nastudujte si lehké/středně těžké otázky Leetcodu.
Vždy byste měli nejprve uvést naivní řešení. Jako vývojáři softwaru chceme vždy psát co nejoptimálnější kód. Při pohovoru je však možné, že čas vyprší dříve, než dokončíte optimální řešení. Pokud čas vyprší ve chvíli, kdy píšete optimální řešení, ale vy jste již předložili hrubý/naivní kód, získáte na pohovoru alespoň nějaké body.
Někdy se při těchto telefonických pohovorech setkáte i s otázkami týkajícími se návrhu systému.
- Nacvičte si návrh architektury Redditu: https://www.tryexponent.com/courses/software-engineering/design-reddit
Na pracovišti
Otázky na pracovišti jsou podobné otázkám na telefonickém pohovoru. Pokud jste se dostali až sem, poplácejte se po zádech. Jste téměř u cíle! V tomto závěrečném kole budete pravděpodobně kódovat na tabuli – takže si to před příchodem na pohovor natrénujte (několik společností, jako je Snapchat, vám může umožnit/požádat vás, abyste si na kódování na místě přinesli vlastní notebook).
Obvykle se koná také obědové kolo, kdy máte možnost poobědvat s týmem.
Co se naučit
Vyhovuje vám kódování jak ve vývojovém prostředí, tak na bílé tabuli. Zde podrobně popíšu témata kódování, která byste měli nastudovat.
Behaviorální
Tyto otázky se objeví v úvodním telefonátu, ale jak budete procházet procesem pohovoru, je nevyhnutelné, že se tyto otázky objeví znovu (např. během oběda na místě). Snažte se být struční, mluvte sebevědomě (věty ukončujte tónem směrem dolů) a vylučte ze svého slovníku výplňová slova (ehm, hm, jako).
- Řekněte mi něco o sobě.
- Proč softwarové inženýrství?
- Řekněte mi, kdy jste udělali chybu.
- Řekněte mi o svém projektu, x a čím jste přispěli.
Programovací jazyky
Z mé zkušenosti vám firmy umožní programovat v jakémkoli jazyce, který vám nejvíce vyhovuje. V mých vysokoškolských kurzech informatiky (na UCLA) jsme se všichni učili jazyk C++. Všechny pohovory jsem však absolvoval v jazyce Java nebo Python. Jakmile jsem se seznámil s jeho syntaxí, velmi snadno jsem si osvojil další jazyky.
Doporučuji zeptat se personalisty nebo vedoucího náboru, zda pohovory vyžadují nějaký konkrétní jazyk. V opačném případě zvolte jazyk, u kterého je menší pravděpodobnost, že v něm uděláte chybu.
Datové struktury
Poznejte otázky týkající se kódování těchto datových struktur. Seznamte se také s kompromisy a časovou a prostorovou složitostí pro každou z nich.
- Mřížka
- Odkazový seznam
- Třída/Graf
- Hashová tabulka
- Stack/Queue
- Hromada
Algoritmy
Znejte otázky týkající se kódování těchto algoritmů. Seznamte se také s kompromisy a časovou a prostorovou složitostí pro každý z nich.
- Vyhledávání (a Graph search)
- Třídění
- Dynamické programování
V závislosti na roli a společnosti můžete být také požádáni o problémy s manipulací s bity.
Zdroje
Naštěstí existuje nepřeberné množství online zdrojů, které vám na vaší cestě pomohou. Tyto doporučuji:
Leetcode
Většinu otázek týkajících se kódování najdete na stránkách Leetcode. Pokud se v těchto otázkách na tabuli stanete velmi dobrými, měli byste být připraveni. Připravte se na lehké/středně těžké otázky, ale vyzkoušejte si i ty obtížnější – zejména až postoupíte do kola na místě.
Exponent
Kurz softwarového inženýrství od společnostiExponent je jediný kurz, který potřebujete. Obsahuje řízené články a videa, která vám pomohou osvěžit si znalosti / znovu se naučit datové struktury a algoritmy, které potřebujete k pohovoru — vše na jednom místě. Navíc Exponent přidal komplexní kurz pohovoru o návrhu systému pro některé těžší otázky týkající se návrhu systému.
GeeksforGeeks
GeeksforGeeks má nejlepší řešení otázek týkajících se kódování. U většiny otázek, se kterými se můžete setkat na pohovoru, vám GeeksforGeeks ukáže nejen naivní implementaci, ale také optimalizované řešení a časovou a prostorovou složitost.
r/CSCareerQuestions
Tato stránka (subreddit) na Redditu, r/CSCareerQuestions, je komunita začínajících i zkušených softwarových inženýrů. Můžete ji využít k tomu, abyste si přečetli o zkušenostech ostatních s pohovory v konkrétních společnostech nebo sami položili otázky. Jedno upozornění: členové tohoto subredditu jsou velmi posedlí prestiží společnosti a odměňováním. Je dobré usilovat o špičkové velké technologické společnosti FAANG, ale vždy nezapomeňte být při zemi – existuje i svět mimo techniku!“
Zabalení
Mnoho lidí si volí kariéru softwarového inženýra z jednoho nebo více z mnoha důvodů. Možná se chcete stát softwarovým inženýrem, protože rádi konstruujete věci. Nebo vás možná inspiruje, jak technologie mění svět. Nebo možná chcete jen solidní kariérní dráhu s dobrým výdělkovým potenciálem (na tom není nic špatného!).
Vypracujte si konzistentní studijní plán (např. každý druhý den 1 otázku Leetcodu) a držte se ho.
Když budete pracovat na přípravě na pohovor, společnost Exponent vám v případě potřeby vždy pomůže. Pokud si potřebujete osvěžit informace, doporučil bych vám zdroj informací – kurz Software Engineering Interview Course, který sestavili softwaroví inženýři, kteří pracovali v nejlepších technologických společnostech v oboru.
.