Преди седмица разказахме за , където в коментарите ни посочиха важността на стажовете и практическото опит. С това не може да не се съгласим, тъй като теоретичните знания трябва да се затвърдят с практика. С този пост откриваме серия от статии за летните стажове на студенти: как хората попадат там, какво правят и защо е полезно.
В първата статия ще разкажа как успешно да преминете през всички етапи на интервюто и да получите стаж в Google.
Две думи за мен
Аз съм студент първа година в магистратурата на Питерския кампус на Вишката, завършил съм бакалавриат в Академичния университет по машинно обучение. Докато учих в бакалавриата, активно се занимавах с спортно програмиране и участвах в различни хакатони. За последните можете да прочетете , и .
За стажа
Първо искам да кажа нещо за това как изглежда стажа в Google от вътре.
Всеки стажант, влизащ в Google, се свързва с екип. Това може да бъде екип, занимаващ се с разработката на вътрешна инфраструктура, за която човек извън компанията не знае, или продукт, който използват милиони хора по света. Такива продукти могат да бъдат известните YouTube, Google Docs и други. Тъй като разработката на тези проекти се извършва от десетки, а понякога и стотици разработчици, ще попаднете в екип, който се специализира в някаква по-тясна част от него. Например, през лятото на 2018 година работих над Google Docs, добавяйки нова функционалност за работа с таблици.
Тъй как в компанията вие сте стажант, ще имате мениджър, наречен хост. Това е обикновен фулл-таймер, който сам се занимава с разработка на продукти. Ако не знаете нещо, не можете да решите нещо или сте се сблъскали с проблеми, трябва да се обръщате към него. Обикновено се назначават седмични срещи един на един, където можете да обсъдите текущата ситуация по проекта или да поговорите за нещо, което не е свързано с работата. Освен това, хостът е един от хората, които ще оценяват извършената от вас работа по време на стажа. Оценка ще прави и втори, допълнителен рецензент. И, разбира се, те са заинтересовани да видят успешното ви представяне.
В Google ще ви научат, но не е сигурно, на добра практика да пишете диздок (документ за дизайн) преди да започнете нещо. За тези, които не знаят, диздок е документ, в който се изложи същността на съществуващия проблем, както и подробно техническо описание на решението му. Диздок може да бъде написан както за целия продукт, така и за някоя нова функционалност. Чрез четенето на такава документация можете да разберете с каква цел е замислен продуктът и как е бил реализиран. Често в коментарите можете да видите диалози между инженери, обсъждащи различни начини за реализиране на част от проекта. Това предоставя добро разбиране за всяко взето решение.
Характеристиката на стажировката е, че ще имате възможността да използвате невероятни вътрешни инструменти за разработка, които Google притежава в огромно количество. Работейки с тях и разговаряйки с много хора, които преди това работеха в Amazon, Nvidia и други известни технологични компании, мога да заключа, че тези инструменти имат големи шансове да се окажат най-добрите, които някога ще срещнете в живота си. Например, инструментът, наречен Google Code Search, позволява не само да преглеждате цялата кодова база, историята на промените на всяка линия код, но също така да навигирате из кода, както сме свикнали в съвременните среди за разработка, като Intellij Idea. И за това ви е нужен само браузър! Свързаният с тази характеристика минус е, че извън Google, ще ви липсват същите тези инструменти.
Що се отнася до предимствата, компанията предлага страхотни офиси, добра храна, фитнес зала, добро здравно осигуряване и други приятни неща. Просто ще оставя тук няколко снимки от нюйоркския офис:



Как да получите оферта?
Преглед
Сега е време да поговорим за нещо по-сериозно: как да попаднете на стажировка?
Тук ще говорим не за Google, а за това как общо взето протича процесът. За особеностите на подбора на стажантите в Google ще напиша по-долу.
Процесът на интервюиране в компанията вероятно ще изглежда приблизително така:
- Кандидатстване за стаж
- Конкурс на Hackerrank/TripleByte Quiz
- Скрининг интервю
- Първо техническо интервю
- Второ техническо интервю
- На място интервю
Кандидатстване за стаж
Очевидно е, че всичко започва с вашето желание да получите стаж. За това трябва да го изразите, като попълните анкета на сайта на компанията. Ако имате (или вашите приятели) познати, които работят там, можете да опитате да се доберете чрез тях. Тази опция е предпочитана, тъй като ви помага да се откроите от огромния поток на другите студенти. Ако такава възможност няма, подавайте се сами.
Опитайте се да не се разстройвате твърде много, когато получавате имейли с съдържание от типа "вие сте толкова страхотни, но избрахме други кандидати". И тук имам един съвет за вас:

Конкурс на Hackerrank/TripleByte Quiz
Ако резюмето ви е харесало на recrutera — след 1-2 седмици ще получите писмо със следващото задание. Най-вероятно, ще ви предложат да преминете конкурс на Hackerrank, където в определеното време трябва да решите алгоритмични задачи, или TripleByte Quiz, където трябва да отговаряте на различни въпроси, свързани с алгоритми, разработка на софтуер и работа на ниско ниво в системите. Тази стъпка служи като първичен филтър в процеса на подбор на кандидати.
Скрининг интервю
Ако изпитанието бъде успешно, нататък ви очаква скрининг интервю, на което ще беседвате с рекрутера за вашите интереси и за проектите, които компанията предлага на стажантите. Ако проявите интерес и предишният ви опит отговаря на очакванията на компанията, ще получите зелена светлина. Според моя опит, това е най-непредсказуемото място в целия процес, което силно зависи от рекрутера.
Ако сте се справили с тези три изпитания, основната част от случайността вече е зад вас. Нататък остават техническите интервюта, които вече зависят повече от вас, а значит, вие можете да влияете повече на техния изход. И това е добре!
Технически интервюта
Следват техническите интервюта, които обикновено се провеждат по Skype или Hangouts. Но понякога се срещат и по-екзотични услуги, които изискват инсталиране на допълнителен софтуер. Затова предварително се уверете, че на компютъра ви всичко работи.
Форматът на техническите интервюта зависи много от позицията, за която кандидатствате. Ако става въпрос за позицията Software Engineering Intern, вероятно ще ви предложат няколко алгоритмични задачи, които трябва да кодите в някой онлайн редактор за код, например, . Можете също така да зададете въпрос относно обектно-ориентирано проектиране, за да видите колко добре разбирате проектирането на софтуер. Например, може да поискат да проектирате прост онлайн магазин. Истина е, че не съм попадал на задача, която наистина да позволява да се оцени това умение. В края на интервюто сигурно ще имате възможност да зададете въпроси. Настоятелно препоръчвам да се отнесете сериозно към това, тъй като чрез въпросите можете да покажете интерес към проекта и да демонстрирате компетентност по темата. Обикновено предварително подготвям списък с потенциални въпроси:
- Как е организирана работата по проекта?
- Какво сложно предизвикателство сте имали наскоро?
- Какъв е приносът на разработчика към крайния продукт?
- Защо решихте да работите в тази компания?
Не винаги ще ви интервюира човек, с когото по-късно ще работите. Следователно последните въпроси могат да дадат представа за това, което се случва в компанията като цяло. За мен, например, е важно да имам влияние върху крайния продукт.
В случай на успешно преминаване на първото интервю, ще ви предложат второ. То ще се различава от първото по интервюиращия и, съответно, по задачите. Форматът вероятно ще остане същият. След преминаване на второто интервю, може да ви предложат и трето.
На място интервю
Ако до този момент не сте получили отказ, ви очаква onsite интервю, когато канят кандидата на интервю в офиса на компанията. Обикновено то се състои от няколко технически интервюта и едно поведенческо. По време на поведенческото интервю разговаряте с мениджър относно вашите проекти, за решенията, които сте взимали в различни ситуации и подобно. Тоест, интервюиращият се опитва да разбере по-добре вашата личност и да се запознае по-подробно с вашия опит. Някои компании, провеждащи 3-4 технически интервюта, вместо onsite интервю, предлагат да преминете само едно поведенческо дистанционно.
Сега остава само да изчакате отговор от рекрутера. Ако всичко е минало гладко, със сигурност ще получите писмо с дългоочакваното предложение. Ако предложение не дойде — не се тревожете. Компаниите систематично отказват на добри кандидати. Опитайте отново да се запишете на стаж следващата година.
Интервю за кодиране
Чакайте... Ние все още не сме преминали през никакви интервюта. Само научихме как изглежда целият процес и сега трябва да се подготвим добре за интервютата, за да не изпуснем шанса да прекараме лятото приятно и полезно.
Съществуват ресурси като , и , който споменах. На тези платформи може да намерите голямо количество алгоритмични задачки, а също така да изпратите решенията им за автоматична проверка. Всичко това е страхотно, но ми напомня стреляне с пушка по врани. Много от задачите на тези ресурси са проектирани за дълго време за решаване и изискват познания по напреднали алгоритми и структури от данни, докато задачите на интервютата обикновено не са толкова сложни и са разчетени за 5-20 минути. Затова в нашия случай много повече би подхождал ресурс като , който е създаден като инструмент за подготовка за технически интервюта. Ако решите 100-200 задачи с различна сложност, вероятността е, че няма да имате проблеми по време на интервюто. От достойнствата още има , на който можете да изберете продължителността на сесията, например 60 минути, и системата ще ви предложи набор от задачи, за решаването на които в средно отнема не повече от час.
Много хора също съветват да прочетете книгата „“. Аз самият четох само отделни нейни части. Но трябва да се отбележи, че решавах много алгоритмични задачи в училищните си години. За тези, които нямат такъв опит, все пак е добре да прегледат книгата.
Също така, ако в живота ви е имало малко технически интервюта в чужди компании, е препоръчително да преминете през няколко пробни. Колкото повече, толкова по-добре. Това ще ви помогне да се чувствате уверено по време на интервюто и да изпитвате по-малко стрес. Пробни интервюта могат да се организират на .
Поведенчески интервюта
Както споменах, по време на поведенческото интервю интервюиращият се опитва да научи по-подробно за вашия опит и да разбере характера ви. Какво става, ако сте отличен разработчик, но не можете да работите в екип? Страхувам се, че много хора няма да се съгласят с това. Например, могат да ви зададат въпроса: „Каква е вашата слаба страна?“ Освен такива въпроси, ще ви помолят да разкажете за проекти, в които сте играли ключова роля, проблемите, с които сте се сблъскали, и техните решения. Трябва да се отбележи, че в първите минути на техническите интервюта също могат да ви попитат за това. Информация както да се подготвите за такива интервюта е добре представена в една от главите на „Cracking the Coding Interview“.
Сега, когато е ясно как изглежда процесът на подбор на стажанти в общия случай и как да се подготвяте за интервюта, време е да поговорим за това как работи в случая с Google.
Списъкът с налични стажове можете да намерите . Ако планирате да заминете на лятна стаж, е добре да започнете да кандидатствате още през септември.
Интервюта
Тук процесът изглежда малко по-необичайно. Ще имате скрининг интервю и две технически интервюта. Ако се представите добре на тях, ще преминете към етапа на търсене на проект. Ще трябва да попълните доста дълъг формуляр, в който ще посочите всичките си текущи умения, както и да изразите предпочитания за темата на проекта и местоположението, в което искате да преминете стажа.
Много е важно да попълните този формуляр добре и с внимание! Потенциални хостове, които търсят хора за своите проекти, преглеждат наличните стажанти и провеждат разговори с тези кандидати, които им се харесват. Те могат да филтрират студентите по местоположение, ключови думи, отметки във формуляра и да сортират по точки от интервютата.
По време на разговора, интервюиращият разказва за проекта, по който ще работите, и също така иска да узнае за опита на кандидата. Тук имате отлична възможност да разберете как всъщност ще изглежда работният процес, тъй като разговаряте с човек, който ще бъде вашият хост. След интервюто изпращате имейл на рекрутера с вашите впечатления за проекта. Ако проектът ви харесва, а вие сте харесали интервюиращия, ви очаква оферта. В противен случай, ще чакате следващи обаждания, които могат да бъдат 2-3-4, или повече, а може и да няма никакви. Трябва да уточните, че дори да сте преминали добре интервютата, но на етапа на търсене на проекта, никоя команда да не ви е избрала (а може би дори никой да не е говорил с вас), то за съжаление ще останете без оферта.
Америка или Европа?
Освен всичко друго, трябва да се запитате къде ще се проведе вашата стажировка. И аз имах избор между САЩ и . И тук е важно да знаете някои особености. Например, изглежда, че в САЩ е по-трудно да се попадне. Първо, трябва да преминете допълнителен контест с продължителност 90 минути, където ще решавате алгоритмични задачи, а също така и един 15-минутен въпросник, който се опитва да разкрие вашия характер. Второ, от моя опит и опитът на моите приятели, на етапа на търсене на команда, интересът към вас е по-малък. Например, през 2017 година имах само едно интервю, след което екипът избра друг кандидат и не получих оферта. Докато момчетата, кандидатстващи в Европа, имаха по 4-5 проекта. През 2018 година ми намериха екип през януари, което е доста късно. Момчетата работеха в Ню Йорк, проектът им ми хареса и се съгласих.
Както виждате, с САЩ нещата са малко по-сложни. Но ми се искаше да отида там повече, отколкото в Европа. Освен това, в САЩ плащат повече.

Какво да правя след това?
В края на стажировката имате две опции:
- Да получите стажировка за следващата година.
- Да преминете през две технически интервюта, за да получите фул-тайм позиция.
Тези две опции са налични при условие, че успешно сте се справили с текущия проект. Ако обаче тази стажировка не е вашата първа, може дори да ви предложат фул-тайм позиция без интервюта.
Затова се получава следната ситуация, която може да бъде описана с една картинка:

Тъй като това беше моята първа стажировка, реших да премина през две технически интервюта, за да получа пълно работно време. Според резултатите от тях ми предложиха оферта и започнаха да търсят екип, но отказах това предложение, тъй като реших да завърша магистратурата си. Google вероятно няма да изчезне за 2-3 години.
Заключение
Приятели, надявам се да съм обяснил достъпно и ясно как изглежда пътят от студент до стажант (и после обратно…), и този материал да намери своя читател, на който ще бъде полезен. Както виждате, всичко това не е толкова сложно, колкото може да изглежда, просто трябва да отхвърлите мързела си, страховете си и да започнете да опитвате!
P.S. Имам тук в телеграм, където можете да погледнете.
Източник: habr.com
