Обучение
Как получить работу в Apple без колледжа и LeetCode
Я расскажу о том, как я изучал Swift, основной язык программирования, который я использую. Я расскажу о процессе найма, о прохождении собеседования и обо всем остальном, что смогу вспомнить.
Когда люди говорят о больших технологических компаниях — Google, Amazon, Apple, Meta*, Microsoft, — они обычно говорят и о LeetCode. Они говорят о том, что им повезло или не повезло с Q3 и Q4 на CodeSignal. Создается впечатление, что попасть в Big Tech практически означает просто хорошо разбираться в конкурентном программировании — если ты сдал тест, то получишь работу.
LeetCode, безусловно, полезен для совершенствования в программировании в долгосрочной перспективе. Я не был в Google, поэтому не уверен, но, возможно, LeetCode действительно нужен, чтобы получить там работу. Но для Apple (и многих других мест) он точно не нужен, и я бы рекомендовал не тратить слишком много времени на его гриндинг.
Летом я стажировался в Apple. Apple уникальна тем, что при приеме на работу собеседования полностью зависят от команды. Некоторые команды могут попросить вас решить алгоритмические задачи, но в моем случае у меня даже не было технического собеседования.
В последнее время меня часто спрашивают о том, как я получил эту работу, поэтому я собираюсь кратко описать процесс здесь, а не отвечать на каждое сообщение. Я расскажу о том, как я изучал Swift, основной язык программирования, который я использую. Я расскажу о процессе найма, о прохождении собеседования и обо всем остальном, что смогу вспомнить. Вот как это будет:
Обучение программированию
Я начал заниматься программированием в 2019 году. Я хотел создавать приложения, поэтому купил на Udemy курс Анжелы Ю по разработке под iOS. Я взял несколько книг в библиотеке — «Sams Teach Yourself iOS 9» оказалась очень полезной, несмотря на то, что она устарела и предназначена для iOS 9. Я также купил книгу Мэтта Нойбурга «iOS 11 Programming Fundamentals with Swift» в качестве справочника, но она была очень технической, поэтому я отложил ее в сторону.
Я проходил курс Анжелы в течение нескольких месяцев, пока не прошел половину пути, а затем сразу же приступил к созданию собственного приложения. Я назвал его Find.
Многие люди говорят о том, что застряли в «аду обучения» — смотрят бесконечные курсы и туториалы и не могут применить полученные знания на практике. Я смог избежать этого, сразу включившись в процесс разработки приложений: я писал код до тех пор, пока не переставал понимать, что делать, а затем искал решение. Я не беспокоился об эффективности или «лучшем способе» сделать что-то — вы естественно учитесь этому, когда делаете приложения какое-то время. Курс Анжелы был полезен для начала работы, но чтобы хорошо понять, что ты делаешь, нужно создавать проекты.
Еще одна вещь, которая помогла, — Stack Overflow. С тех пор, как появился ChatGPT, он немного потерял популярность (да и сообщество совсем не дружелюбно к новичкам), но я все равно рекомендую завести там аккаунт. Вы сможете задавать вопросы, но, что более важно, вы сможете отвечать на вопросы других людей. Как говорится, «учитесь, обучая«.
В любом случае, сейчас 2023 год, и курс Анжелы устарел :( Поэтому я бы рекомендовал начать со «100 дней SwiftUI» или «100 дней Swift» Пола Хадсона. Но, опять же, учебники нужны только для начала — не тратьте время на ад обучения и сразу приступайте к созданию своих проектов.
Предыдущий опыт работы
У меня не было ничего интересного, кроме побочных проектов. Я работал в Hyper, стартапе, работающем над VTubers для iOS. Я получил эту работу через Twitter — Аарон (основатель компании) увидел, как я публикую информацию о своих побочных проектах, и заметил в биографии, что я люблю аниме.
Помимо технической работы я работал в ресторане Rubio’s Coastal Grill и кассиром в Marshalls.
Как Apple нашла меня
Помните мое приложение Find? Кто-то из команды Photos в Apple увидел его и написал мне в Twitter.
Я уже давно писал о Find в Twitter. Вот промо-ролик, который я разместил для обновления версии 3. Вот анимация, которую я сделал для экрана онбординга, а также опубликованный мной Swift-пакет.
Я думаю, что стоит быть активным в Twitter — даже после поглощения Маском там много технарей и представителей индустрии. Люди увидят ваши посты и свяжутся с вами. Вы получите возможности, которые в противном случае упустили бы — например, обычно для поступления в Apple необходимо учиться в колледже, но я смог обойти это ограничение.
Процесс собеседования
В ноябре 2022 года я отправился в Apple Park, чтобы пообщаться со своим будущим руководителем. Мы пообедали и прогулялись по кампусу.
Мы поговорили о том, какой должна быть моя работа в Apple, и решили, что стажировка была бы неплохим вариантом (поскольку я все еще хотел учиться в колледже). Помню, что мой менеджер особо отметил, что его не волнует, где я учился и какой у меня средний балл — он сказал что-то вроде «важно только то, что ты умеешь делать». В тот день я также познакомился с одним из своих будущих коллег, который дал мне несколько советов по улучшению работы скроллинга в Find.
В феврале 2023 года я вернулся в кампус, чтобы встретиться с остальными членами команды. Я поговорил с другим менеджером о старости, колледже и детях. Все было очень спокойно, но, вероятно, это была поведенческая оценка — они хотели убедиться, что я не какой-то полный чудак.
Никакого LeetCode или технического собеседования не было. В марте я подписал оффер.
Очевидно, что это был не обычный процесс собеседования для начинающих специалистов. Я расспрашивал других стажеров об их опыте — у большинства были задачи по программированию (один из моих друзей получил “сумму двух”, первый вопрос на LeetCode), а личностные собеседования были менее важным. Но я уверен, что для более высоких позиций, для работы на полную ставку, есть много людей, которых берут на работу по короткому пути. Ничто не мешает вам пойти коротким или длинным путем при приеме на работу. Сделайте что-нибудь необычное, например, напишите в DM ведущему сотруднику команды, в которую вы хотите устроиться. Сделайте так, чтобы они захотели принять вас на работу, и собеседование превратится в бесплатную экскурсию по штаб-квартире с обедом.
Стажировка
Работа в Apple оказалась более трудоемкой, чем я ожидал. Я думал, что буду приходить, обедать и уходить. Я видел видеоролики, в которых люди из Meta* демонстрировали скалодром и боулинг, расположенные прямо в офисе. Моя подруга из Google рассказывала о том, что у нее было несколько встреч в день, а остальное — просто свободное время.
Но только не в Apple. Я был там с 8 до 8, чтобы успеть на шаттл. Перед презентацией стажера я работал до 12 (но это все из-за меня и моего плохого тайм-менеджмента). Приходилось платить за завтраки/обеды/ужины и даже за тренажерный зал (18 долларов в месяц). Цены были справедливыми, но это не похоже на бесплатную еду и прочее, что вы получаете в других крупных технологических компаниях.
Было очень весело. Я занимался тем, чем занимался уже несколько лет, но на этот раз мне платили. Я познакомился с очень классными стажерами и людьми из команды дизайнеров, которые были просто бесподобны.
У нас было бесплатное корпоративное жилье (для этого нужно быть старше 18 лет, поэтому моему другу пришлось жить у своего двоюродного брата) в новом комплексе в Маунтин-Вью. На дверях были установлены умные замки, которые казались крутыми, но постоянно ломались. На крыше была джакузи, бильярдный стол и все такое.
Что касается работы, то я проработал там с 5 июня по 11 августа, так что времени у меня было относительно немного, и мне пришлось попотеть, чтобы закончить свои дела ближе к концу. Корпоративная структура, безусловно, сильно отличается от той, к которой я привык, но она хорошо управляется и делает свое дело. Если у вас будет возможность, то Apple действительно стоит посетить.
Big Tech
Когда я захожу на r/csCareerQuestions на reddit, там так много сообщений о LeetCode, DP (динамическом программировании, а не двойном проникновении), FAANG и т.д… Там люди делятся советами о том, как «пройти собеседование», и говорят, что «лучший подход — это репетиции».
Мне кажется, что люди настолько зациклились на LeetCode и всех остальных вопросах программированиz, что забывают о том, что это лишь один из путей получения работы. Есть множество других путей, которые не так сложны и не требуют многочасового зубрежки каких-то дурацких задач. Так стоит ли так напрягаться? Изучать самые продвинутые структуры данных и алгоритмы, которые вы легко освоите, просто построив сделав свое приложение? А получив работу, будете ли вы вообще использовать то, на что потратили столько времени?
Да, в реальности многие компании сейчас используют LeetCode в качестве основного отличительного признака при приеме на работу. Мы можем поблагодарить Google за этот несовершенный процесс приема на работу — задавать одни и те же скучные, отнимающие много времени вопросы, которые проверяют уровень знаний окольными путями. Является ли совпадением тот факт, что Apple была единственной крупной технологической компанией, которая не проводила увольнений?
Повальное увлечение LeetCode — настоящая проблема в этой области. Иногда кажется, что все высокооплачиваемые профессии требуют этого, и в результате мы видим, как все эти люди изнуряют себя бесполезными вопросами, в то время как они могли бы развивать свои навыки органично.
В конце концов, я думаю, что Big Tech и вся индустрия отойдут от LeetCode и перейдут на проектные собеседования. Они могут дать вам задание на дом, и вы сможете показать им, насколько применимы и актуальны ваши навыки. Но до тех пор я рекомендую работать над крутыми побочными проектами и делать то, что важно. Вы станете неотразимы :)
Колледж
Я буду поступать в колледж в сентябре, поэтому пока не могу много говорить об этом. Знаю только, что это не обязательно и даже бесполезно для некоторых должностей, вроде, iOS-разработчика. Так что не стоит расстраиваться, если вы ничего не узнали.
Заключение
Вот так я получил работу в Apple, не посещая колледж и не решив ни одной задачи с LeetCode. Но я не хочу сказать, что вы должны бросить учебу или полностью отказаться от LeetCode — колледж нужен для таких вещей, как ML-исследования, а LeetCode нужен для основы. Просто я вижу, что многие люди просто пытаются найти работу — любую работу — в технологиях, и ограничивают себя конкретной ролью или профилем. На этом ужасном рынке труда это точно не выход.
Спасибо, что прочитали.