Как получих стаж в Shopify

Сезонът на интервютата за летните стажове през 2018 г. най-накрая приключи. След повече от месец интервюта и тестове в множество компании, ще се присъединя към Shopify като стажант от Back-end Developer.

В тази статия искам да ви преведа през моя процес за кандидатстване, подготовка и интервюта в Shopify. Също така искам да споделя с вас няколко съвета, които използвам, когато кандидатствам и получа интервю за работа.

Бързо въведение

В момента съм студент в Университета Конкордия в Монреал, Канада. Завършвам третата година от докторантурата си по софтуерно инженерство.

Аз също съм част от програмата COOP, която изисква от мен да премина три стажа през бакалавърската си степен. Първите ми два стажа бяха в Ubisoft и Vigilant.

Последният ми стаж ще се проведе това лято и ще работя в Shopify в Монреал.

Какво е Shopify?

Най-просто казано, платформата на Shopify позволява на фирми и физически лица лесно да продават стоки онлайн.

Shopify ви води през процеса на създаване на магазин, управление на инвентара ви, приемане на различни методи на плащане и доставка. Има дори система за продажба (POS), която да използвате в магазина!

Що се отнася до работата в Shopify, те са спечелили най-доброто място за работа в Glassdoor в Канада 2017. Известно е също, че имат блестящи хора в съответната индустрия.

Процесът на кандидатстване

Shopify има уникален процес за набиране на стажанти и това е ясно, започвайки с процеса на кандидатстване.

За да изпратя молбата си, трябваше да изпълня три задачи.

1. Създаване на магазин Shopify

Първата задача беше да се създаде измислен магазин Shopify. Това беше начин да се запозная с платформата и да разбера през какво преминават търговците, за да създадат фронт на онлайн магазин.

Създадох японски магазин за сладкиши и сладкиши. Исках да направя нещо, което е малко по-оригинално от типичен магазин за мода, красота или електроника.

Мисля, че тайната на тази стъпка е да създадете измислена история около вашия магазин. След това дизайнът на магазина и неговият инвентар трябва да дойдат естествено.

2. Попълване на техническото предизвикателство

Позицията на стажанта от Back-end Developer Intern беше свързана с техническо предизвикателство.

Предизвикателството беше да се създаде валидатор за структура на графични данни. Реших да използвам Python, за да го направя.

Наистина ми хареса как предизвикателството беше свързано с платформата Shopify (или поне изглеждаше така), вместо да е безсмислен алгоритмичен проблем.

Вярвам, че за тази част е изключително важно да се направи просто решение. Тъй като има толкова много начини за решаване на проблема, от съществено значение е да направите решението си интуитивно и добре документирано . Използвах чудесно Python документите, за да постигна това.

И накрая, не отивайте по-далеч от изискванията на проблема, ако това означава да направите решението си по-сложно. Само ще те нарани.

3. Отговаряне на въпросите за кандидатстване

Последната стъпка от процеса на кандидатстване беше отговор на някои въпроси.

Написах за вида работа, която бих искал да свърша по време на стажа, както и как беше моят опит през целия процес на кандидатстване. Също така написах идея за Hack Days (тримесечният хакатон на Shopify).

Положих много усилия, за да отговоря на тези въпроси. Както при всяко приложение, количеството усилия, които сте положили в него, ясно ще покаже колко се интересувате от работата там.

Също така е важно да бъдете честни относно това, което пишете и да покажете страстта си чрез отговорите си.

За идеята за Дните на хакване се опитайте да измислите нещо, което би могло да подобри живота ви на работното място по време на предишните ви стажове и опит. Помислете за аспекти, различни от самата работа. Направете го забавно!

Процесът на интервю

След като изчаках няколко седмици, получих имейл, за да започна процеса на интервю!

Процесът ми на събеседване беше разделен на две части: видеоразговор от житейска история и техническо интервю на място.

Историята на живота

Видеообаждането с историята ми от живота продължи около 45 минути и беше с вербовчик от екипа за придобиване на таланти.

От моето разбиране целта на житейската история е вербуващият да ви опознае на по-лично ниво. Те искат да знаят какво не пише в автобиографията ви. Говорих за теми като пътуванията ми, интереси, хобита, минали преживявания (нищо техническо) и как развих страстта си към програмирането.

Това беше една от любимите ми части от процеса. Беше много непринудено и просто ми се струваше да срещнеш някой нов и да споделиш твоята, ами житейска история!

Въпреки че нямаше за какво да се подготвя в тази част от процеса на интервю, аз направих списък с всички различни теми, за които исках да говоря. Запазих го на екрана си, за да съм сигурен, че не съм пропуснал да спомена нещо, което сметнах за важно.

Мисля, че най-важните елементи по време на житейската история са да бъдем честни , да останем непринудени и всъщност да знаем вашата житейска история . Вижте го като разговор!

Технически обект на място

Няколко седмици по-късно получих имейл, за да планирам интервюто си на място. Щеше да бъде разделен на две части: анализ на личен проект и технически проблем. Щях да бъда интервюиран от двама разработчици.

За първата част трябваше да внеса проект, в който съм свършил значителна работа.

По това време планирах да стартирам проект за отстраняване на проблем, който имах в ежедневието си: харчене на твърде много пари за храна от ресторанти.

Исках да създам приложение Alexa на моя Amazon Echo, което е наясно със съставките, които имам в момента, и предлага рецепти въз основа на това, което имам на склад. Това беше идеалната възможност да ударите две птици с един камък.

Исках обаче да ударя и трета птица. Исках да науча Ruby on Rails от много дълго време. Тъй като платформата на Shopify е изградена на Rails, мислех, че би било чудесна идея да използвам Rails, за да направя приложението си Alexa.

Бързо изкарах SoloLearn Ruby Course и научих основите на Ruby on Rails от официалното Ръководство за начало.

След това използвах новите си научени знания, за да направя Alexa Fridge!

По време на тази част от интервюто бях помолен да представя моя проект от всеки аспект. Прегледах кода и показах как внедрих различни елементи. Бях разпитван и относно моите дизайнерски решения.

От само себе си се разбира, но наистина трябва да знаете своя проект отвътре и отвън, за да можете да отговорите на всеки въпрос за него. Може да ви помогне да подготвите предварително някаква документация (особено диаграми), за да покажете различни аспекти като вашата инфраструктура, схема на база данни или как работи API, който сте използвали.

Например, аз донесох тази диаграма, за да покажа как сървърът ми комуникира с моя Amazon Echo:

Мисля, че е полезно и ако можете да внесете проект, който можете да демонстрирате. Трудно е да се разбере значението на работата ви, ако не можете да покажете резултата.

За втората част от интервюто на място трябваше да реша технически проблем.

Предварително ми беше казано, че това няма да е алгоритъм за писане на бяла дъска (да!). Вместо това беше проблем, който трябваше да взема решения за проектиране, за да реша.

За тази част наистина препоръчвам да научите повече за дизайна на системата . Трябва да имате представа как да организирате уеб и мобилни приложения, как да проектирате схема на база данни, как да удостоверите и т.н.

Някои от тези теми се усвояват по време на степен по софтуерно инженерство, но други не. Препоръчвам ви да проверите тренировъчния лагер на Hired In Tech's System Design и High Scalability. И двете са отлични източници, за да научат за дизайна на системата и да видят как големите компании създават своите приложения. Обърнете голямо внимание на компромисите, които идват с всяко дизайнерско решение.

Когато работите по проблеми с дизайна на системата, уверете се, че винаги ясно заявявате своите предположения и разбирате изискванията .

Също така, не се притеснявайте да задавате въпроси, ако трябва! Имате двама разработчици в стаята и можете да получавате помощ от време на време. Важно е да задавате правилните въпроси, както и да отговаряте на тях (така или иначе имате Google).

И накрая, винаги мисли на глас .Много е важно интервюиращите да знаят как мислите.

Опитвам се да мисля на глас възможно най-много по време на подобни проблеми, дори ако мисълта ми е погрешна. Ако обаче е погрешно, важно е да го осъзная и да се поправя.

Офертата

Около седмица по-късно Shopify се свърза с мен с предложение и аз го приех!

Вземане

Наистина се насладих на уникалността както на заявлението, така и на процеса на интервю. Това ми позволи да покажа не само техническите си умения!

Ето резюме на съветите, които споделих в статията:

  • Поставете се на мястото на търговец, когато създавате онлайн магазина, и се потопете в измислената им история
  • Когато правите техническото предизвикателство, търсете простота и го документирайте добре
  • Когато пишете отговорите си на въпросите за кандидатстване, положете много усилия, бъдете честни и покажете страстта си
  • По време на историята на живота бъдете себе си и знайте историята на живота си
  • За място донесете проект, който добре познавате и знаете защо сте го проектирали по начина, по който сте го направили
  • За техническия проблем заявете вашите предположения и изисквания и помислете на глас

Благодаря ви, че прочетохте статията ми!

За повече актуализации, последвайте ме в Twitter.