Или решить сотни вопросов HackerRank…

На прошлой неделе у меня был последний день в качестве стажера-разработчика программного обеспечения в Amazon после почти трехмесячной стажировки. Это был отличный опыт, и я многому научился, работая с замечательными людьми в интересном отделе. Я не могу слишком много говорить о том, что я сделал, из-за того, что было подписано несколько соглашений о неразглашении, но я могу сказать, что создал новый инструмент, который, надеюсь, моя команда продолжит использовать в будущем. И мне удалось сделать все это, не имея степени CS и даже не посещая ни одного BootCamp по программированию!

Так как же я попал на эту стажировку? Решил ли я 500 вопросов HackeRank или Leetcode перед подачей заявки? Нет! На самом деле за год до стажировки я решил в общей сложности только 6 вопросов HackeRank. Тратил ли я все свое свободное время на изучение структур данных и алгоритмов до собеседования? Нет! Я затронул некоторые структуры данных, в том числе базовые в Python и некоторые абстрактные типы данных до интервью, но я не знаю их всех и не знаю многих алгоритмов в деталях. Был ли у меня предыдущий контакт в Amazon, который мог бы замолвить за меня словечко? Нет! Я даже не знал никого, кто работал в Amazon, по крайней мере, насколько мне известно, поэтому у меня еще не было «входа». Итак, позвольте мне рассказать вам, как я на самом деле попал на стажировку.

Приложение

Должен признать, что подача заявки на Amazon основывалась на предпосылке «что мне терять». У меня нет традиционного опыта работы с CS, так как я не получил степень в области CS и даже не прошел BootCamp по кодированию. Моя степень бакалавра была в области экономики земли (смесь экономики, географии и права) и была настолько далека от компьютерных наук, что я даже не прикасался к макросам в Excel в то время. Однако с тех пор я получил степень магистра в области умных городов и городской аналитики, где я изучил основы Python, SQL и Javascript для науки о географических данных, а также защитил докторскую диссертацию по расширенному пространственному анализу, строя гравитационные модели для продуктовых ритейлеров. в Великобритании с использованием Python. Это означало, что во время учебы я смог развить некоторые навыки кодирования и разработки программного обеспечения, но я не думал, что этого будет достаточно, чтобы получить работу в Amazon.

Имея это в виду, в приложении, хотя я коснулся своего образования и показал, что изучил некоторые концепции программирования, я должен был подчеркнуть свою внеклассную деятельность и некоторые из моих более мягких навыков. Это включало веб-сайт, который я создал в составе группы для одного из моих магистерских проектов, который после отправки я перенес на AWS. Затем я связал это с последующей внештатной работой, которую я выполнял вместе с другом, чтобы создать серверный рабочий процесс для веб-сайта выпускников университетского факультета. Я также подчеркнул большую часть работы, которую я выполняю здесь, в рамках моего блога по науке о данных, наряду с моей работой в качестве представителя первого года, а затем руководителя научного отдела UCL Data Science Society в прошлом году. Это означало, что у меня было много практических приложений и проектов, на которые я мог указать, чтобы показать, что я действительно могу выполнять работу инженера-программиста, или, по крайней мере, я надеялся.

Проблема кодирования

После месяца, когда я ничего не слышал от Amazon, я сдался и перешел к поиску других возможностей стажировки. Однако еще через месяц я получил электронное письмо, в котором говорилось, что меня пригласили выполнить задание по программированию, если я захочу. Я был удивлен, получив это электронное письмо, но снова подумал, что мне нечего терять, поэтому я выделил два часа, чтобы завершить его, по общему признанию, с небольшой подготовкой, и постарался изо всех сил.

Сама задача по кодированию состояла из двух коротких задач, которые можно было решить менее чем за 20 минут, и одной более длинной задачи, которую предполагалось решить примерно за 40 минут. Первые два были относительно простыми вызовами HackerRank, над которыми все еще нужно было подумать, чтобы гарантировать, что все крайние случаи будут обнаружены. В этот момент они заявили, что не слишком заботятся о качестве кода, лишь бы он работал, и именно этого я изо всех сил старался добиться, проходя все предусмотренные заданные и скрытые случаи. Однако более крупный вопрос был намного сложнее. Я сомневаюсь, что это был самый чистый код всех времен, и я уверен, что его можно было бы сделать гораздо более эффективным с вычислительной точки зрения способом. Мне удалось пройти все указанные кейсы, но я провалил некоторые из скрытых, так как у меня не хватило времени, чтобы выполнить задание. Я представил свои решения вовремя, думая, что, хотя я сделал все правильно, я, вероятно, не достиг высокой планки, которая требовалась, и поэтому я ждал. Мог бы я добиться большего успеха, если бы больше практиковался и больше знал? Наверное, да, но я больше ничего не мог с этим поделать. Я просто должен был ждать.

Интервью

Как и в случае с заданием по программированию, я прождал еще месяц без контакта и подумал, что потерпел неудачу. И снова я пошел дальше и посмотрел на другие возможности, даже согласившись на еще одну стажировку за этот период. Однако еще через месяц (всего два месяца) я получил электронное письмо с приглашением на собеседование и выбрать время на следующей неделе. На следующей неделе! Я не был к этому готов, и уж точно не собирался быть полностью готовым за неделю, пока я все еще работал над диссертацией на полную ставку. Так что я назначил дату, ответил на несколько вопросов HackeRank, прочитал о некоторых принципах лидерства и дал интервью.

Само интервью проходило, как я теперь думаю, в типичной для Amazon структуре: сначала спрашивали о принципах лидерства, а затем выполняли задание по кодированию. Я думал, что достаточно хорошо ответил на вопросы о принципах лидерства, я дал свои ответы в формате STAR и говорил около 15 минут, задавая вопросы по каждому. Однако вопрос кодирования был немного сложнее. Когда я впервые услышал, что я должен был делать, я понятия не имел, с чего начать. Я не паниковал, так как знал, что это будет конец, поэтому я разбил задачу на то, что потребуется, печатая заметки на разных этапах, все время объясняя интервьюеру, что, по моему мнению, я должен был сделать. . Я обязательно задал несколько уточняющих вопросов о вещах, в которых не был уверен, перепроверил свою логику, а затем начал программировать.

Когда я начал, я объяснял каждую строчку и вслух повторял свой мыслительный процесс. Мой интервьюер в это время в основном молчал, иногда спрашивая, почему я делаю то, что делаю, но не слишком влияя на код. Как только я решил, что закончил, интервьюер задал мне несколько вопросов о коде или различных сценариях, которые затем привели к некоторым незначительным улучшениям и настройкам, чтобы получить конечный продукт. В этот момент я был уверен, что нашел правильное решение, которое сработает, но не был уверен, что оно правильное, поэтому я перестал думать, что не получу предложения и что следующий контакт будет отказом.

Предложение

Через неделю мне позвонил рекрутер и сказал, что я получил предложение о стажировке! Я был удивлен! На большинстве этапов я думал, что потерпел неудачу, но я был очень рад получить предложение. Мне даже сказали, что интервьюер интересовался, не хочу ли я присоединиться к их команде в другом городе! Я был заинтригован, но, поскольку я пустил корни в Лондоне, а также хотел остаться в Лондоне надолго, я сказал, что на этот раз надеюсь остаться в Лондоне на стажировку, но предложение мне польстило. Они сказали, что это нормально, что я хочу остаться в Лондоне и что они могут найти там факультет, который бы соответствовал моим навыкам. Следующим вопросом было то, когда я начну, поскольку у меня уже была запланирована стажировка, мой партнер по финансированию PhD сказал «да» только на одну стажировку, и мне пришлось проходить стажировку в течение 3 месяцев подряд. Мне повезло, так как мой финансирующий орган сказал, что я могу пройти обе стажировки, Amazon была гибкой с датой начала, и у меня как раз было трехмесячное окно, прежде чем начать вторую стажировку после выступления на конференции в Ливерпуле. Я собирался стать стажером SDE в Amazon!

Основные выводы

Хотя я не утверждаю, что у меня есть ответы на все вопросы, и действительно, каждое собеседование и заявка уникальны, я думаю, что было несколько вещей, которые помогли мне получить предложение:

  • У меня было портфолио проектов в самых разных областях. Это продемонстрировало, что я могу создать проект с нуля и пройти полный цикл разработки программного обеспечения, хотя, по общему признанию, в гораздо меньших масштабах. Я бы посоветовал всем, у кого нет степени CS, сделать что-то подобное, чтобы показать, что они не только что получили сертификаты.
  • Я изучил все основы одного языка. Это означало, что я мог уверенно кодировать на одном языке и не путаться в синтаксисе. В большинстве случаев фирмы не слишком заботятся о языках, которые вы можете использовать для стажировок, только о том, что вы можете программировать и решать проблемы. Попытка выучить слишком много языков в начале может привести к путанице или общему непониманию, что может помешать выполнению задач по кодированию, что жизненно важно для процесса собеседования. Я бы посоветовал тем, кто начинает изучать все тонкости одного языка, прежде чем пытаться выучить другой.
  • Я не паниковал и объяснил свою логику. Хотя я, вероятно, не разработал наилучшее решение проблемы, я объяснил свой мыслительный процесс, как лучше всего решить проблему с моими ограниченными знаниями, и разобрал проблему. Это показало, что с ограниченными знаниями я все же мог найти разумное решение и разобрать проблемы. В разработке программного обеспечения это жизненно важный навык, который, если бы я не продемонстрировал и не предложил просто решение, я мог бы не получить предложение. Не паникуйте, если вы не можете что-то решить, просто постарайтесь изо всех сил и разбейте это на управляемые куски!

Есть также несколько вещей, которые я бы изменил, чтобы повысить свои шансы получить предложение в следующий раз:

  • Я бы создал проекты на предпочитаемом Amazon языке (Java) и те, которые были частью бизнеса Amazon (например, веб-сайт или приложение). У большинства компаний есть язык, который они склонны использовать для большинства задач, даже если у вас есть некоторая свобода, и знание этого языка может дать вам толчок в вашем приложении.
  • Я бы больше освежил в памяти структуры данных и алгоритмы. Это то, что, безусловно, подвело меня, и мне посчастливилось получить вопрос, который можно было решить с помощью базовых структур данных, встроенных в Python. В противном случае это, безусловно, могло бы сбить меня с толку, и я постараюсь освежить это в будущем.

Все это уроки, которые может извлечь любой человек, попавший в подобную ситуацию, будь то собеседование в Amazon или другую крупную технологическую компанию.

Выводы

Все это означало, что я смог попасть на стажировку в Amazon SDE без степени в области компьютерных наук. Я думаю, что отчасти это было связано с удачей в получении правильных вопросов в нужное время. В то же время, однако, я думаю, что во многом это было связано с наличием практического опыта и проектов, которые я делал в свободное время, которые продемонстрировали, что я могу кодировать и решать сложные проблемы в реальной среде разработки программного обеспечения. И это несмотря на отсутствие степени CS. Я бы посоветовал всем, кто находится в подобной ситуации, кто хочет пройти стажировку SDE/SWE в компании FAANG, но не имеет степени в области компьютерных наук, сделать, задокументировать и опубликовать. Начинайте создавать свои собственные проекты, документируйте процесс во время его выполнения и публикуйте результаты или процесс где-нибудь, например, здесь, на Medium. Удачи!

Если вам понравилось то, что вы прочитали, и вы еще не являетесь участником Medium, не стесняйтесь зарегистрироваться в Medium, используя мою реферальную ссылку ниже, чтобы поддержать меня и других замечательных писателей на этой платформе! Заранее спасибо.



Или не стесняйтесь проверить некоторые из моих других статей на Medium: