Когда тебе 15-17 лет, сложно понять, чем хочется заниматься в жизни. Мне с детства были интересны компьютеры, но я не был уверен, что хочу связать с этим свою жизнь. "Машин много и будет становиться больше, работа будет всегда" – говорили мне родители. Так я пошел учиться на автомеханика. Я быстро понял, что это не моё, но доучиться "ради корочки" было необходимо, "Иначе кому ты будешь нужен без диплома?" – снова говорили мне родители. Вопросом, кому я нужен мне пришлось задаться, когда я начал искать работу. Диплом без реальных навыков не дает ровным счетом ничего, а навыков у меня и не было. Так я нашел работу инкассатором – помогла служба в армии и интерес к ответственной работе.
Мне казалось, что зарабатывать 50 тысяч рублей в месяц, когда тебе 20 лет – это круто, особенно на фоне бывших одноклассников, которые учатся в универах, максимум подрабатывая по вечерам. Проработав год, моя девушка (а сейчас уже жена) всё чаще задавала мне вопросы: "А чем ты будешь заниматься в будущем?", "Так и будешь всю жизнь работать инкассатором?"… Я чувствовал давление и злился, потому что ответов на них у меня не было. С другой стороны, я понимал, что пройдет 10 лет, и моя зарплата, как и моё место в жизни не изменятся. Я не считал себя глупым и чувствовал, что могу развиваться, но не знал как. У меня был друг разработчик, но о том, чтобы пойти в айти я даже не задумывался – мне казалось, что нужно специальное образование и вообще "программистами не становятся, а рождаются". Всё изменилось, когда я встретил бывшего одногруппника, с которым мы учились в одном колледже. Он рассказал, что уже 2 года работает фронтендером и поделился деталями своей работы. Я не скрою, мне стало завидно. Зависть, честно, была белой, и не от того, что он зарабатывает намного больше меня, а потому что человек с такими же исходными данными имеет намного больше перспектив в жизни. «А чем я хуже?» – подумал я. В моем представлении айти была одна из самых справедливых сфер деятельности, где людей ценят за их знания, навыки и опыт, а не за дипломы или знакомства (несколько лет спустя я понял, что это не всегда так). Мне казалось, что твоя зарплата, работа и перспективы будут зависеть от времени и сил, которые вкладываешь в свое развитие (спустя несколько лет я понял, что это именно так), а это то, чего мне хотелось. Но я не ставил перед собой целей, потому что совершенно не понимал, получится ли у меня и будет ли мне интересно. Тем не менее, я стал учиться.
Я уделял учёбе всё свободное время, тратя по 4-5 часов в будние дни и по 8-12 часов в выходные, изучая джаву. Проблема подобного обучения (особенно бекенда) в том, что ты не видишь результат. Ты изучаешь языковые конструкции, классы, коллекции и типы данных, разбираешься во всем, но абсолютно не понимаешь, каким образом тебя это приближает к реальной работе. А когда не видишь результат – начинаешь терять мотивацию и веру в себя. Спустя полгода мне казалось, что я могу проходить собеседования. Я отобрал несколько компаний для того, чтобы потренироваться – понять, что именно спрашивают и как себя нужно вести. План был настолько же хорош, насколько наивен. К моему разочарованию я понял, что если есть компании, которые мне не очень интересны, то я – человек без опыта, – им интересен ещё меньше. Я откликался десятки раз и везде получал отказы. Однажды меня все же позвали на интервью, которое я с треском провалил. Я понял, что знание джавы – это лишь вершина айберга. Тогда же я осознал, что мне не хватает "базы" – знаний алгоритмов, сортировок и структур данных. После провала на интервью я был демотивирован, но продолжил обучение, параллельно продолжая откликаться на вакансии, а количество отказов со временем перевалило за 2 сотни.
Через несколько месяцев я узнал про вечерние офлайн курсы от EPAM, после которых они предлагали успешным студентам стажировку, а после стажировки – трудоустройство. Для меня попасть туда было не самой простой задачей, в основном, из-за уровня английского, который у меня хромал – при общении с рекрутером я едва ли мог ответить на простые вопросы о себе. Но я получил приглашение. Курсы были довольно поверхностными и не несли реальной пользы, но для меня это была возможность попасть на реальную стажировку. Спустя 3 месяца получил приглашение в "лабораторию". Передо мной стоял сложный выбор – я должен был уволиться с работы, потеряв единственный источник дохода. Более того, мне сразу сказали, что шанса вернуться у меня не будет. Я думал, что это очень рискованный шаг, хотя сейчас понимаю, что терять мне было абсолютно нечего. В то же время я верил, что это шанс всей моей жизни, и упустить его я не мог. Для того, чтобы обеспечить себе финансовую подушку, мне пришлось продать мотоцикл. Я принял вызов и уволился с работы.
Когда началась стажировка, я был еще более мотивирован и у меня не было сомнений, что я её успешно закончу. Я приходил в офис первым и уходил последним, тратя на обучение в среднем по 10-12 часов в день. Мне очень нравилась как работа на реальном проекте, так и коллектив, который состоял в основном из молодых ребят моего возраста. Также мне нравились задачи, которые я делал, было очень интересно. Через 3 месяца я был первым, кто успешно прошел итоговое интервью и закончил лабу из своего потока. Я был как никогда близок к тому, чтобы получить работу, но, кажется, всё было бы слишком просто, если бы это действительно произошло.
Началась пандемия. EPAM, как и все остальные компании, закрыли набор сотрудников и заветный оффер я так и не получил. Более того, обретя знания и реальный опыт, я, как казалось, откатился на год назад и снова оказался никому не нужен, потому что на рынке набирали только редких сеньоров. Так я остался без работы, без стажировки и без уверенности в завтрашнем дне. Я продолжил самообучение и стал откликаться на все возможные вакансии, связанные с джавой, даже если там требовалось 10 лет опыта. Эта стратегия сработала: мне написала рекрутер и сказала, что у них в компании есть junior позиция, хотя она нигде не была опубликована. Я прошел собеседование и получил оффер. Спустя полтора года после начала обучения и 300+ отказов по вакансиям я получил долгожданную работу.
Я продолжил развиваться. Я изучал новые технологии, старался проявлять инициативу и быть проактивным. Тимлид был очень мной доволен и спустя 8 месяцев меня повысили до миддла. Еще через 4 месяца мой проект закончился, и я сменил компанию, потому что хотел работать с иностранными заказчиками. Я работал на интересных и не очень проектах, поднял свой уровень английского до уверенного B2. В апреле 2022 года я переехал в Мексику. Я был доволен своей работой, но спустя некоторое время мне захотелось переехать в более развитую страну. Единственный вариант сохранить текущий уровень жизни и именно жить, а не выживать в тех странах, о которых я думал – это работать в топ компании и получать зарплату значительно выше рынка. Я прекрасно знал про FAANG и про то, как устроены интервью туда, но мне казалось, что это совершенно другой уровень, не для таких, как я. Что для того, чтобы попасть туда, надо быть олимпиадником и иметь особый склад ума, и что я никогда не буду достаточно умён для этого, и вообще я не могу даже решить задачу easy уровня на литкоде. Идея казалась безумной, а инвестиция весьма сомнительная – по рассказам уже прошедших через этот путь, на подготовку уходит в среднем полгода. Полгода на то, что вряд ли пригодится в реальной работе, а успех в прохождении интервью не гарантирован. Тем не менее, без каких-либо особых надежд, я снова решил попробовать.
Я был ОЧЕНЬ слаб в алгоритмах, как, впрочем, и в системном дизайне. Мне повезло познакомиться с человеком, который уже работал в FAANG – я добавил его на LindkedIn, а он сам предложил помощь. Мне нужен был не столько ментор, сколько человек, который отвечал бы на мои глупые вопросы, тем самым помогая окончательно не потерять уверенность в себе. А желание бросить всё и мысли, что это не моё возникали очень часто. Алгоритмы шли очень туго, особенно в самом начале. На литкоде тысячи задач, в начале ты просто теряешься в них, и какие нужно решать именно мне, было совсем непонятно. В один день я наткнулся на проект neetcode, который, пожалуй, сыграл решающую роль в подготовке к алгоритмической части. А ещё я подметил, что почти в каждой категории алгоритмов (графы, sliding window, backtracking и т.д.) есть несколько паттернов, которые, посмотрев один раз, можно применять в будущем. Основная идея заключалась именно в этом – смотреть 2–3 видео по теме на neetcode с разбором задач, а потом пытаться закрепить полученные знания. В подготовке очень важна дисциплина и регулярность, а также измеримый план. Мой план заключался в том, что на протяжении примерно 6–7 месяцев я буду пытаться решать по 1 медиум задаче в день, тратя на подготовку в целом не меньше двух-трех часов в день. Я старался делать упор на качестве, а не на количестве, но получалось не всегда. Здесь важна золотая середина – если задачу не получается решить в течение долгого времени, то, вероятнее всего, не получится решить и дальше, а значит надо не терять время и идти, и смотреть решение. Вместе с тем, важно не сдаваться сразу, как бы оправдывая себя в голове "ну вроде идей нет, сейчас посмотрю решение, зато время сэкономлю". А еще часто возникает желание решить задачу по уже освоенной теме, вместо новой непонятной, получается некая сделка с совестью – и не бездельничаешь, и формально поставленный план выполняешь, однако на деле пользы это не приносит. Некоторые темы шли особенно тяжело – похвастаться тем, что освоил динамическое программирование я не могу до сих пор. Однако, прогресс был и через пару месяцев я начал замечать, что могу решать medium задачи по некоторым темам. Вместе с тем, потихоньку начало приходить осознание, что алгоритмы на самом деле не для избранных и всему можно научиться при большом желании, даже если кажется, что это ну совсем не твоё. Это такой же скилл, как и любой другой, который требует времени, усилий и терпения. Один из важных советов, который я получил в самом начале - не откладывать подготовку к системному дизайну и поведенческому интервью на самый конец. В интернете не раз видел истории про то, что кто-то "посмотрел пару видео на ютубе по системному дизайну и этого было достаточно" – я отношусь к подобному очень скептически – либо это не правда, либо им очень повезло, либо люди много лет подобным занимаются в реальной работе, что было совсем не про меня. Я покупал курсы, книги, смотрел ютуб, и все равно не мог чувствовать себя достаточно уверенно. Отдельно уделял время составлению историй для поведенческих вопросов и несколько дней потратил на то, чтобы составить "правильное" резюме.
Ранее я говорил, что вся эта подготовка была сомнительной инвестицией, ведь всё, к чему я готовлюсь, не пригодится в реальной работе. На деле, все же, это не совсем так – благодаря подготовке к секции системного дизайна я узнал очень много нового, а алгоритмы… Не могу с уверенностью сказать, что это нужно всем, но для меня это точно оказалось полезно и увлекательно.
Спустя примерно 5 месяцев, я решил попробовать начать проходить тестовые интервью. Я не чувствовал себя готовым, но начал перегорать. Я не знаю, как люди готовятся дольше, но для меня 5 месяцев оказались тем пределом, дальше которого я стал терять мотивацию и желание продолжать подготовку. Говорят, что если вы можете решить за 25 минут рандомную медиум задачу, значит, вы готовы к алгоритмической части. Это было совсем не про меня, но я понимал, что дальнейшая трата времени будет просто мучением и не принесет пользы.
За период своей подготовки я как будто перенесся на 4 года назад, где усердно учился каждый день, без какой-либо уверенности в том, получится ли у меня. Не поверите, но мой план по поводу тестовых интервью снова оказался настолько же хорошим, насколько наивным! Из составленного мной списка "не очень интересных компаний" я не получил ни одного приглашения, даже несмотря на то, что везде откликался с рефералами. Возможно, здесь играет роль кризис в айти сфере – вакансий мало, а кандидатов много, а может я им просто не интересен. Всё же мне удалось получить приглашения на интервью от Amazon и Microsoft, правда, из местных офисов без релокации.
Моё путешествие в Амазон закончилось очень быстро – на скрининге мне попалась задача, подобного типа которых я не встречал, и по ощущениям она была ближе к hard уровню. В самом конце я догадался до не самого оптимального решения, но написать рабочий код не успел. Через несколько дней получил отказ. У меня были смешанные чувства – с одной стороны, я не решил эту задачу просто потому, что не знал, как это сделать, и вряд ли мог повлиять на результат (в отличие, если бы мне попалась задача на динамическое программирование, коих я разбирал десятки, но все равно не мог решить сам). С другой стороны, сильно давило потраченное время и то, что я споткнулся об алгоритмы, к которым так долго готовился и которых так боялся. Майкрософт же неприятно удивили тем, что поставили основные интервью на третий рабочий день после того, как объявили о том, что я успешно прошел скрининг. Я просил хотя бы еще неделю на подготовку – мне отказали. Сами собеседования у меня оставили горький осадок – много спрашивали про многопоточность, в которой я не очень силен, а за 15 минут до конца одного из интервью мне дали хард задачу, еще и с усложненными условиями. Я не совсем понял, зачем это было сделано, т. к., конечно же, не успел написать рабочий код, и даже на словах я объяснил свою идею решения просто потому, что встречал эту задачу ранее. Еще на одном интервью мне дали хитрую задачу, она казалась очень простой, однако в середине я понял, что это совсем не так, в итоге полностью решить я её тоже не успел, интервьюер остановил меня, потому что вышло время. Остальные 2 этапа прошли гладко. На удивление, системного дизайна не было вообще, как минимум в том виде, в каком я к нему готовился.
Спустя неделю я пнул рекрутера из Майкрософт, но не получил ответ. Я окончательно потерял надежду на положительный исход и, казалось, всё было зря. Еще через неделю мне всё-таки скинули оффер. Эмоций у меня это не вызвало – я был слишком уставшим морально после длительного ожидания, волнений и переживаний. Однако, кажется, цель была достигнута.
По итогу я не принял их оффер. Но это и не важно. Для меня во всей этой истории намного важнее то, что я понял, что нет ничего невозможного. Всего несколько лет назад я и представить себе не мог, что смогу сменить профессию. Когда у меня получилось, я никогда не мог себе представить, что буду собеседоваться в компании такого уровня. Но теперь я точно знаю, что нет никаких границ, и всего можно добиться, если есть желание.
stackjava
А в чем смысл отказаться от Майкрософт? Посыл статьи не совсем ясен.
Мол все могут войти в айти... Ну в целом да, при лютом рвении и пару надрывов попы...
Потом статья о том,что нужно развиваться и можно получить оффер от Майкрософт...
И... Что дальше? Отказаться... Чтобы что?
В итоге посыл - я все могу, нет границ и мы все можем всë...
Как-то слащавенько получилось