Серия «На пути к FAANG»

17

На пути к FAANG 7

Не был на Пикабу недели две, а тут какой-то дурдом с парадом трудоустройств. Своя атмосфера, короче.

Практически добил топик по динамическому программированию. Прям взял под это дело отдельный "отпуск", прекратив уроки по английскому. В целом - справился, и это уже охренеть какое достижение лично для меня. Прорешал 86% блока на LeetCode (он, кстати, за paywall), после этого играючи разделался с этим блоком в Educative. И вот не понимаю я логику, по которой в курсе на Educative выстроены модули. Логика подсказывает, что это должно быть в порядке возрастания сложности, но после DP идет несчастная Cyclic Sort, которую освоил бы даже вчерашний выпускник курсов "Питон для умственно отсталых".

Из прикольного - Kadane's Algorithm как кусок DP. Мне дико понравилась концепция. Вообще после полугода учебы я начал реально тащиться от таких вещей, профдеформация на марше.

Нарыл на Яндексе бесплатный курс "Подготовка к алгоритмическому интервью". В целом ничего прям тотально нового для себя не узнал, только лишний раз подтвердил, что после прохождения курса на Educative и до моков надо будет отдельно потратить пару недель на скилл самостоятельного покрытия тестами и проверки corner cases своими силами, не запуская тесты LeetCode.

Ну и по личным ощущением - есть чувство, как будто я перевалил через какую-то невидимую медиану - стало ощутимо полегче. Даже с Hard алгоритмами зачастую без подсказок получается если не решить проблему, то хотя бы использовать правильный паттерн, а это приличная часть успеха на собеседовании. Это целиком и полностью заслуга Educative. Безумно кривая платформа в плане реализации по сравнению с LeetCode - нет кастомных тесткейсов, отвратительная обработка exceptions, etc - но в плане контента это просто золотая жила. Поверить не могу, что я плачу за это несчастные 35 евро в месяц.

Дедлайн, походу, придется немного сдвинуть - мне сильно повезет, если я успею закончить хотя бы Grokking System Design Interview к сентябрю, не говоря уже про моки. Но это ничего.

Показать полностью
1

На пути к FAANG 6 - становится поинтереснее

Давненько не писал.

Курс на Educative временно заброшен - я добрался до топика Dynamic Programming, с которым вроде как требовалось быть знакомым. Я с ним знаком не был, поэтому пришлось переключиться на LeetCode, где есть модуль в Explore Track на эту тему. Что я могу сказать о DP? Пока что это кажется просто охренеть каким сложным. Но зато я наконец-то решил гребанную задачку со ступеньками! Когда-то давно, в более счастливые времена, я открыл эту задачку на CodeWars и тотально охренел. Помнится, на ней я тогда и бросил заниматься. А сейчас по быстрому прорешал за 10 минут, ну круто же!

Тем временем в LinkedIn постучалась HR Luxoft Serbia. Особо непонятно, на что она рассчитывает - нужно быть последним идиотом, чтобы из Кипра, который хоть и дыра, но хотя бы англоговорящая и в ЕС, ехать в Сербию, которая нифига не англоговорящая и не в ЕС, да еще и в состоянии вялотякущего военного конфликта. Короче, нафиг надо. Тем не менее, предложение пройти интервью принял - фактически это бесплатный мок, как в контексте тренировки английского, так и технических знаний. Хоть чекну, что мои познания в Java из себя представляют, за год "техлидства" могло многое подзабыться. В FAANG оно, правда, нафиг не надо, но может мне повезет и будет алгоритмическая часть. Да и вообще, банально для уверенности в себе не повредит.

Психологически стало как-то полегче, когда перестал думать про дедлайны и сосредоточился на процессе, да и отпуск помог разгрузиться. Вообще груз ответственности нехило так давит, если честно. Отгонять от себя мысли типа "ты потратил всего два часа на учебу сегодня, как ты вообще собираешься получать оффер" довольно сложно, но я справляюсь) Еще раз порадовался, что продал Xbox - не на что срываться.

Никогда в жизни еще не тратил столько сил на то, чтобы получить что-то. Даже первая работа программистом далась в разы легче. Но выхлоп того стоит. Надеюсь.

4

На пути к FAANG 5 - отдых от алгоритмов и программирования

В общем, отчет есть отчет, даже если хвастать особо нечем. Эта неделя была по сути посвящена отдыху - как никак первый отпуск за почти два года, и первый отпуск за всю карьеру, где предполагась более-менее расслабленная программа - чиллить у бассейна, расслабляться в SPA, пить холодный Guinness и наблюдать за офигенными (без шуток) закатами в Пафосе. В кои-то веки все прошло идеально - погода не подвела, каршеринговый авто не сломался на трассе, бутик-отель оказался практически идеальным (даже несмотря на толпу пожилых британцев). Короче, домой я вернулся реально заряженным на работу - прикосновение к красивой жизни, практически тотальный цифровой детокс и отличный массаж кроме кошелька разгрузили еще и завал в голове. Если кто-нибудь решит пойти по моим стопам - мой вам совет, отдыхайте. Не дома за приставочкой/Netflix, а прям хорошо так. В конце-концов, мы же программисты, можем себе позволить.

Тем не менее, за эту неделю я закрыл топик "жадных" алгоритмов. Вообще забавно, когда читаешь название очередного раздела в курсе, то звучит это, как правило, довольно угрожающе, а на деле концепция, как правило, оказывается элементарной. Зато на LeetCode в Daily Challenge в какой-то момент закончились связанные списки и начались графы. Отгадайте, кто не умеет в графы? Короче, еще учить и учить.

Кроме того, потихоньку прихожу к простой мысли - чтобы реально добиться своего, нужно отсекать интерес к тому, что происходит в России. По-факту, повлиять на происходящий пиздец я все равно никак не могу, а новости "оттуда" очень прилично разгоняют тревожность. Сейчас я резидент Кипра, война меня никак напрямую не касается и по факту это уже не мое дело. Думаю попробовать устроить "неделю без Рунета" и переключиться на интересные мне сабреддиты, без всякой политоты. Заодно и свой английский потренирую.

Кстати, к слову о нем - почти три месяца с репетитором сделали чудеса, так что я с превеликим удовольствием болтал на английском (и слушал, как говорят другие) весь отдых. Классно все же использовать язык не только на работе.

Как обычно, следующий отчет через неделю.

Показать полностью
10

На пути к FAANG - дела налаживаются

На меня подписаны уже 21 человек, и у меня к ним один вопрос - зачем?) А если серьезно, спасибо всем, кто следит - в сложные моменты осознание того, что мой опыт может кого-то вдохновить, помогает держаться.

В прошлом посте я упоминал, что стало прям совсем тяжело в моральном плане. За прошедшие пять дней - уж не знаю, в чем причина - меня как-то отпустило. Возможно, я все-таки успешно придушил свой синдром самозванца, ведь:

На пути к FAANG - дела налаживаются IT, Программист, Учеба, Faang

Да, черт возьми, я закончил этот курс на треть! 10 топиков из 27 полностью закрыты (включая задания без разборов решений), и я понял их все. Честно признаться, этот курс настолько офигенный, что у меня просто не хватает слов описать. Я свободно прорешал 4 Daily Challenge подряд на LeetCode по связанным спискам с показателями близкими к 100/100 (то есть мое решение было лучше 100% других и по времени, и по памяти) - просто потому что знал, как, например, быстро найти средний элемент в списке, а потом реверснуть одну из половинок in-place за линейное время.

И еще один маленький повод для гордости:

На пути к FAANG - дела налаживаются IT, Программист, Учеба, Faang

Топик Amazon'а закончен почти на 50%! Я вообще, в принципе, делаю основную ставку на Amazon - они релоцируют сотрудников в Канаду (Британская Колумбия), а в Канаде, при условии прохода по Express Entry, можно получить гражданство за три года. С другой стороны, вчера из интереса забил в Numbeo сравнение по стоимости жизни в Никосии (столица Кипра, где я сейчас) и в Ванкувере (где, как я понимаю, и расположен офис Amazon), и результаты не особо порадовали. Судя по всему, чтобы поддерживать тот образ жизни, что у нас сейчас здесь, в Ванкувере понадобится почти 11к канадских долларов на руки, что до вычета плюс-минус эквивалентно 200к грязными в год. Не уверен, смогу ли я выторговать такую зп даже при условии идеального прохождения всех этапов собеседования.

Тем не менее, я стараюсь с оптимизмом смотреть в будущее, да и решать проблемы лучше по мере их поступления. Сейчас главное - довести свой кодинг-скилл до уровня, достаточного, чтобы свободно пройти Mock Assessment на LeetCode. А дальше - наконец-то системный дизайн и API-дизайн, ну и подготовка к behavioral, благо, историй для STAR у меня на текущем проекте было вагон)

Как обычно, следующий репорт в пятницу.

Показать полностью 1
11

На пути к FAANG - неделя 3

Ну что, уже три недели позади, с ума сойти. 25% процентов курса позади по Coding Interview позади, еще несколько Medium проблем из топика Amazon на LeetCode тоже.

Спад мотивации чудовищный, но это и не удивительно. Мы с женой на чемоданах с февраля прошлого года (только давайте без шуток про "что случилось"), позади стрессовый релокейт на Кипр, стрессовое обустраивание тут - и теперь нужно каждый день тратить два-три часа на учебу, чтобы пройти через все это еще раз - без малейших гарантий, что в этот раз точно получится. Потихоньку копится усталость, начинают посещать всякие мысли вроде "а может хер с ним со всем и остаться тут?". Тем более недавно всплыла новость, мол, рассматривают законопроект по выдаче гражданства за 4 года высококвалифицированным эмигрантам. А иногда просто хочется забить на все и открыть профиль в LinkedIn, найти работу в какой-нибудь немецкой или голландской фирме средней руки да переехать на условную зп в 5-6 килоевро. Пока держусь чисто на морально-волевых.

А так в целом по учебе все не так уж и плохо. Открыв топик Amazon'а, я внезапно осознал, что я могу, блин, это решать. Да, не все получается с первой попытки, да, иногда приходится заглядывать в решение - но получается. Знаете, еще с год назад я мог над easy-алгоритмом просидеть целый вечер. Недавно созванивался с бывшим коллегой из СберТеха - он рассказывал, что у него ушло два вечера на то, чтобы написать простенький рекурсивный алгоритм на связанный список, после чего он успешно это дело и забросил.

Я бросать не собираюсь, слишком уж много вложено сил и слишком много возлагается надежд на то, что все получится. Но в общем и в целом уже сейчас могу смело сказать - чтобы устроиться в FAANG, нужно либо быть чертовски талантливым, либо чертовски упорным. Потому что одно дело - много учиться, когда у тебя зп в 300 баксов и ты живешь у родителей. Совсем другое - когда ты зарабатываешь 4 килоевро, живешь на Кипре и при этом женат. Наверное, это и есть firewall, который отсекает 90% программистов от работы в FAANG надежнее, чем любой "синдром самозванца".

Показать полностью
20

На пути к FAANG - мысли о LeetCode, Educative и списках

Прошлый пост заминусили, а меня обвинили в рекламе (поверьте мне, если бы я был достаточно заметной персоной, чтобы меня заметили в LeetCode, моей первой репликой было бы "возьмите меня к себе работать", но никак не предложение рекламировать их на Пикабу). Тем не менее, на меня подписались восемь человек, и я вроде как чувствую своим долгом выложить отчет.

Итак, прошла неделя. Я неплохо продвинулся по курсу Grokking Coding Interview Patterns in Java (сейчас завершено 17% курса против 4% неделю назад). Когда я только-только начинал его, то думал, что вряд ли после 4 месяцев на LeetCode узнаю что-то принципиально новое для себя. Но теперь понимаю, что без этого курса мне бы вообще ничего не светило даже в теории. Подача информации там гораздо более структурированная и адаптированная конкретно под прохождение собесов в эти ваши FAANG'и. Ну вот условный паттерн "Fast and Slow Pointer". Я уже использовал его, чтобы решать задачки на поиск loop'ов в связанных списках. Но как оказалось, его можно также использовать для поиска k'th элемента в списке (например, середины), k'th элемента с конца и т.д. А паттерн "Sliding Window" я вообще если и использовал, то чисто интуитивно, даже не догадываясь о его существовании. Короче, курс оказался дико полезным, хоть и местами сложноватым. Сейчас учусь реверсить связанные списки in-place. Забавный факт - всегда использовал для этого колхозную реализацию через рекурсию с новым первым нодом, а тут оказалось, что можно сделать это в обычном цикле на 4 строчки.

Параллельно с этим продолжаю решать алгоритмы на LeetCode, чисто для тренировки. Решил послушать мудрых людей и отказаться от прорешивания алгоритмов уровня Hard (как я понял, их довольно редко дают на собеседованиях, а если и дают, то не ждут полного решения) и Easy (решаются за 2-3 минуты + еще 3 на подумать, как добиться идеальной производительности). Соответственно, сконцентрировался на Medium. Статистика пока далеко от идеала, бывают алгоритмы, которые даются за 10 минут с решением на O(n), бывают такие, которые занимают пару часов. От знакомого в Meta знаю, что показатель готовности к интервью - 15 минут на алгоритм + 15 минут на тесты и вопросы. В общем, знания дико неровные, что наверное характерно для самоучек.

Зато прям хорошо пошел английский. Даже не знаю, что поменялось, просто чувствую, что речь стала более грамотной и в то же время более гладко. Наконец-то начали уходить проблемы с артиклями - это была моя личная боль, успешно прогулял эту тему в универе 10 лет назад, и с тех пор в основном обходился вообще без них. Насколько я понимаю своего преподавателя - мы довольно близко к B2. Цель все та же - сдать IELTS к концу года на случай, если буду идти на иммиграционные программы Канады.

При этом всю неделю я бегал, словно белка в колесе и не знал, за что хвататься. С одной стороны нихреновый завал на работе, где все поуходили в отпуска на майские, с другой домашние задания по английскому и словарь раздутый до 120 слов, с третьей - дедлайн в сентябре на начало собесов в FAANG, с четвертой - жена, домашние дела и кот. В итоге получилось разрулить - попросил уменьшить домашние по английскому, начал вести списки (много списков), чтобы ничего не забывать. С этим начались серьезные проблемы - вплоть до минутных затыков "что же я хотел" у холодильника. Также строго урезал время на один алгоритм (до часа, потом лезу в решение, смотрю логику и пытаюсь воспроизвести у себя). Благодаря всему этому освободилось время на семью. Ну и продал Xbox SX нафиг, вместо него купил читалку - помогает успокоить нервную систему под вечер. По итогу все нормализовалось - привык и вроде как даже начал получать удовольствие от жизни. Ну и в фитнес-зал вернулся - как ни странно, тренировка с утра бодрит лучше, чем кофе (от кофеина полностью отказался два месяца назад).

Цель на следующую неделю - закрыть курс на 30% и прорешать минимум 7 Medium алгоритмов в LeetCode.

Короткое summary:

  1. Списки - наше все

  2. При обучении алгоритмам стоит помнить, что цель - научиться проходить интервью, а не круто решать алгоритмы

  3. Лучше делать по два часа, но каждый день, чем потратить 7 часов на учебу, и потом ходить с головной болью

  4. Тратить больше часа на один алгоритм означает просто впустую потратить это время. Как правило, за это время решение раздувается, глаз замыливается, а на мониторе написано уже 5 if-ов, чтобы пройти хоть часть тестов. Вероятность, что получится написать читабельный алгоритм на O(n) или O(log n)в таких условиях стремится к нулю. Проще посмотреть решение и понять, что ты делал не так.

Увидимся через неделю-две.

Показать полностью

Я собираюсь до конца года получить оффер в FAANG

Всем привет. Этот пост - пробный камень. Я Lead Java Developer с пятилетним стажем, сейчас живу на Кипре (уехал в сентябре прошлого года). Я работаю как аутстаффер на немецкую медицинскую компанию и возглавляю интернациональную (поляки, болгары, русские и индийцы) команду из 6 человек.

В целом мне вполне нравится моя жизнь сейчас, но есть несколько больших НО:

  • Сейчас моя зарплата составляет 4000 евро, что с одной стороны неплохо (на жизнь и кое-какие плюшки хватает), а с другой - ну вообще не та сумма, которая у меня ассоциируется с комфортной. Особенно с учетом неработающей жены. Да и приближающийся тридцатник намекает на то, что пора решать вопрос с жильем.

  • Я не чувствую, что даже близко достиг своего потолка. Да, в целом я получил достаточный опыт работы, чтобы без особых проблем устроиться в плюс-минус любую компанию средней руки на senior позицию - но честно признаться, скитаться по финтеху и стартапам мне не слишком хочется.

  • Кипр - не самое лучшее место, чтобы оставаться тут жить навсегда. Тут жарко (иногда очень жарко), бедноватая природа (а я люблю леса и поля) и очень долго ждать гражданства (в среднем 10-12 лет). Да и местный менталитет мне не очень по нраву.

Поэтому в этом году я поставил себе челлендж - получить оффер в FAANG.

Что такое FAANG (для незнающих и интересующихся)?
Это акроним (да, я кэп) из первых букв самых больших, самых наглых и самых богатых IT-компаний мира. А именно Facebook (после переименования в Meta многие стали говорить MAANG или даже MANGA, но прошлый вариант мне нравится больше), Apple, Amazon, Netflix, Google.

И в эти компании очень сложно попасть работать. Весь процесс собеседования может занимать до двух месяцев и включает в себя три этапа собеседований:

  • Кодинг-интервью, где проверяют скилл решения алгоритмов и их оценки

  • Системный дизайн, где обычно просят накидать архитектуру условного Spotify

  • Поведенческое интервью, где просят подробно обосновать, почему ты не мудак

Мой бэкграунд практически полностью нулевой. Я программист-самоучка, вошел в IT в 2017 и понял, что это прям мое - не до такой степени, чтобы вместо отдыха изучать особенности GraalVM, но все равно мне нравится программировать. Я уже три месяца более-менее активно занимаюсь алгоритмами (у меня оплачен и leetcode, и educative) по два-три часа в день и параллельно занимаюсь с репетитором по английскому (сейчас близко к B2, к концу года думаю сдавать IELTS).

Моя цель - к концу года получить оффер в один из FAANG филиалов в США (с релокейтом из европейского филиала через L1B), Канаду или Британию. Да, я не люблю учить новые языки.

Я собираюсь раз в пару недель выкладывать свой прогресс и материалы, по которым занимаюсь (все на английском, правда). Сейчас я заканчиваю Explore Track в LeetCode, параллельно начал Grokking Coding Interview Patterns in Java на educative.io. После окончания (это должно быть где-то через 2 - 2.5 месяца по моим расчетам) начну готовиться к интервью по системному дизайну и api-дизайну (на том же educative).

Надеюсь, этот "блог" поможет мне добавить немного дисциплины и решимости и эффективно отгонять от себя мысли "я слишком туп для всего этого".

Показать полностью
Отличная работа, все прочитано!