Привет! Меня зовут Геннадий, мне 31 год, у меня есть жена, маленький ребенок и кот. Недавно я сменил профессию и теперь занимаюсь фронтенд-разработкой. На пути к новой специализации мне придавали сил поддержка супруги и истории успеха других студентов, поэтому я чувствую моральный долг поделиться своей.
Текст будет длинный, так как я преследовал две цели:
- Честно рассказать, что просто не будет, но сложности преодолимы.
- Дать максимум пользы, чтобы помочь будущим коллегам. Не пренебрегайте ссылками в этой статье. Хотелось создать самую полезную «историю успеха» в блоге Хекслета. Обязательно напишите, получилось ли у меня.
Заварите чаёк, кофеек или какао, приступим...
Содержание
Поиск себя
Я работал руководителем отдела рекламы, параллельно совмещая обязанности с курированием технической стороны работы интернет-магазина. Деятельность эта мне сильно приелась — думал, что дело в компании, где я работал уже больше 5 лет. Я ходил на собеседования, но в глубине души понимал, что буду заниматься тем же самым, но в другом месте.
На волне трендов решил прокачиваться в направлении SMM — купил курс «Нетологии», отдавал ему всё свободное время. Успешно закончил, был в рядах отличников, но дальше дело не пошло. Да простят меня специалисты по социальным сетям, но я так и не смог почувствовать важности и нужности своей деятельности, а поэтому и не смог «продать» себя ни одному заказчику. Деньги и время потрачены впустую. Это важный момент, который ещё всплывет.
Кстати, параллельно у «Нетологии» проходил бесплатный курс о смене профессии и выборе работы в digital. Здесь дали ссылку на тест по определению типа личности и судя по результатам, мне нужно было заниматься аналитикой или программированием. Какая чушь, подумал я — это же вообще не для меня, и пошел дальше изучать SMM.
По ссылке часть презентации с предполагаемыми профессиями на базе результатов теста.
Я продолжал работать на своей прежней работе, чувствуя, что увяз, параллельно достаточно пассивно изучал рынок труда, но радикальных действий не предпринимал. Жизнь сама решила дать мне толчок — в компании начали происходить серьёзные изменения, которые привели к тому, что мне предложили работать на новых условиях — на них я соглашаться не стал бы даже в бреду. Я покинул компанию и ушел в никуда.
Войти в IT
Через две недели я нашел работу в роли проджект-менеджера в стартапе. Идея казалась мне очень крутой, я ей загорелся. По итогам собеседования — в качестве испытания — мне предложили изучить существующие наработки и предложить улучшения. К делу я подошёл с огнем в глазах и прислал документ на десяток листов, мне сделали предложение о работе.
Круто, я проджект-менеджер в IT, дальше только вперёд. Перспективы казались мне самыми радужными. Команду формировал самостоятельно. В подчинении у меня был один программист и несколько менеджеров по работе с клиентами. Чтобы ставить адекватные задачи разработчику, я начал изучать релевантные темы. Я раньше уже начинал обучался вёрстке в HTML Academy, когда имел дело с интернет-магазином, но всё забылось — максимум, что я использовал, это теги для разметки страниц с контентом. Читал статьи, проходил интерактивные курсы и не заметил, как ушел в тему с головой. На этот момент обучение веб-разработке было скорее хобби, чем намерением сменить профессию, но интерес постепенно подогревался, хотелось разобраться, как всё устроено.
Работа в стартапе полна сюрпризов, чем дольше я работал, тем больше мои представления расходились с действительностью. Направление развития изменилось и ушло в сторону от тех идей, которые были мне близки. В совокупности с другими факторами стало понятно, что эта работа носит временный характер. Появилась дилемма - снова подбирать менеджерскую позицию или перейти в ряды разработчиков и развиваться в новом направлении. Второе показалось более интересным и перспективным, я решил заняться обучением плотнее.
Окружение
Среди моего ближайшего окружения нет ни разработчиков, ни тестировщиков, ни кого-либо с похожей специализацией. Чтобы погружаться в IT, соответствующую атмосферу я создавал виртуально. Для этого слушал подкасты, смотрел YouTube-блоги, подписывался на корпоративные и личные аккаунты разработчиков в Твиттере
Подружиться со мной в Твиттере,
Мои рекомендации YouTube-каналов,
Мои рекомендации подкасты.
Обучение
Изучение веб-разработки я начал с курсов HTML Academy. Они отлично обучают вёрстке, игровая механика курсов просто прекрасна. При этом все эти забавы с котиками и енотами навели меня на мысль, что курсы слишком размазаны - слишком много времени уделялось каким-то мелочам, словно это сделано для объёма, а не для пользы. Кажется, в HTML Academy я больше играл в разработчика, чем обучался.
В транспорте, или когда выдавалась свободная минута, я занимался в различных приложениях (Sololearn и пр.) на смартфоне — от них толку немного, но всё же это полезнее, чем залипать в игры. Позже я взял курс на Udemy, где обещали сделать из меня разработчика с нуля. Оказалось, что честнее было бы говорить про верстальщика, чем про разработчика. Например, нам только в конце курса показали jQuery и я не понял ровно ничего, просто перепечатывал с экрана.
Хекслет
Знакомство с Хекслетом состоялось совершенно случайно. Это был ретвит статьи «Тинькофф Журнала» с образовательными площадками. Помню первые ощущения от знакомства с сайтом - это что-то несерьёзное, какие-то детские рисунки, похоже, сделано на скорую руку. Хекслет был подключен к программе кешбэк от «Тинькофф», видимо, поэтому школа оказалась в подборке. В моем опыте была попытка заключить с банком контракт на участие в программе кешбэка, и я знаю, что всех подряд туда не берут. За первые блоки курсов денег не просили, поэтому я решил задержаться подольше. Помню, как легко и доступно объяснили всё в первых уроках, превосходная подача для постигающих азы. Где-то там же, в начале, новичкам рекомендуют отправиться на Code-Basics. Так я и сделал, но не без доли иронии — ведь обучение начинается с урока, где нужно написать фразу, которая хорошо ложится в контекст - 'You know nothing, Jon Snow'.
Отсюда началось моё перестроение. Самыми сложными для меня были базовые курсы — понять концепции и конструкции, запомнить синтаксис, всё эти скобки и стрелки, постоянно возникающие ошибки в коде. Сначала говорят, что компьютер последовательно выполняет операции, а потом оказывается, что есть циклы, рекурсия, которые исполняют код нелинейно.
Был опыт, когда я 4 часа мучился со слайдером и не мог понять, почему ничего не работает — оказалось, что я допустил опечатку в атрибуте тега script, подключая js файл к странице. Подобные штуки нельзя перескочить, эти ошибки надо пережить.
Помню, как закипала голова от перегрузки новой информацией. Проснулся ночью, дочка зовёт и просит подогреть ей молочка. Иду на кухню, а в голове:
- Надо написать функцию, которая подогреет молоко;
- Я понятия не имею, как это сделать
- Теплое молоко нужно прямо сейчас
- Что же делать?!
В Хекслете понравилась сложность, чувствовалось, как за тяжестью заданий скрывается рост знаний. Помню, как переполняло чувство гордости, когда в комментариях на Code-Basics нашел ошибку у одного студента, написал ему. Не имеет значения, что мой ответ был через месяц. Я думал, как же круто, кажется, я начинаю разбираться, я нашел потенциальную проблему в чужом коде.
С обучением по программированию я притирался несколько месяцев. Не было уверенности, что это моё, что всё не закончится, как с другими курсами, потраченным временем и деньгами. В цели стать программистом я утвердился в начале января, после этого моё обучение начало приобретать системный характер. Посвящал образованию максимум времени, которое мог дать. У нас очень активная дочка, поэтому заниматься можно только, когда она спит. Здесь особенно выбирать не приходится, занимайся сейчас, другого времени не будет. Пока укладывал, читал под кроватью теорию на смартфоне, смотрел видео. Когда засыпала — наступало время практики на компьютере. Сил придавали истории успеха других студентов и статья, о смене профессии, её перечитывал несколько раз и дал почитать жене.
Рекомендации по обучению
Начните пользоваться дневником студента, фиксируйте свой прогресс. Я делал это в формате ежемесячных отчётов. Потом перешёл на формат ежедневных отчётов в Твиттере с хештегом #100DaysOfCode, который активно используется в сообществе.
Все советуют заниматься каждый день, но я рекомендую вам не забывать про отдых. Если усердно занимаетесь, сделайте себе выходной день — это только повысит вашу продуктивность.
Не пренебрегайте разделом обсуждений, не только просите помощи, но и давайте её другим. Это пойдет вам на пользу. Про вопросы и ответы я писал отдельный пост в дневнике. Они помогут вам прокачивать навыки разбора чужого кода, а на работе, по большей части, вам нужно будет код читать, а не писать.
Усложняйте. Если делаете какой-то проект, подумайте, как можно его улучшить и что добавить. Мои самые любимые проекты — те, которые я делал без технического задания. Это сложно, но со сложностью приходит рост компетенции.
Какой язык учить?
Учите английский, серьезно. Абсолютное большинство материалов, с которыми я сталкиваюсь в работе — на английском языке.
Я раньше ходил на курсы, брал разговорные уроки онлайн, но без постоянной практики всё забывается, чувствую, что моего уровня недостаточно и навыки нужно подтягивать.
Вакансии с требованием знания английского языка, как правило, привлекательнее, не только в IT. Для перевода посоветую сервис DeepL, его качество работы с текстом мне нравится больше чем у Google Translate. Для Windows и MacOS есть приложение, которое переведет выделенный текст по нажатию горячих клавиш.
Поставьте цель
Зафиксируйте, чего конкретно и в какие сроки вы хотите добиться. Разбейте на мелкие задачи, чтобы проще было отслеживать, продвигаетесь ли вы по этому пути. Например, «до конца сентября завершить первый блок курсов из профессии» гораздо лучше и измеримые, чем «изучать программирование не меньше 10 часов в неделю». Если не знаете, погуглите «постановка цели по SMART».
Свою цель я чётко расписал и декларировал в дневнике студента. Честно говоря, с учётом нынешних условий, я думал, что дедлайн сдвинется на месяц. Ирония в том, что я прописывал цель найти работу до конца июля, а получил оффер во второй половине дня, 31 июля.
Про работу
В конце марта я потерял работу, наш стартап прикрыли за два дня — карантинные меры сильно повлияли на бизнес инвесторов, а до окупаемости нашему сервису было далеко. Говорят, чем раньше начнёте ходить на собеседования, тем лучше, поэтому я решил поискать работу программистом, хотя понимал, что не готов. Кажется, я отправил около сотни откликов, релевантных и нет. Иногда, мне приходили тестовые задания, выполнение которых было мне не по зубам. У меня не состоялось ни одного собеседования. На эту тему можете почитать мой пост История НЕуспеха. После этой записи, пара человек отписались мне, что находятся в похожей ситуации, пожелали удачи и сказали что будут ждать мою историю успеха.
Мы с женой обсудили и решили, что нужно доучиться и искать работу программистом. Она у меня настоящий герой, без её поддержки у меня ничего бы не вышло. Мы быстро перегруппировались — жена вышла из декрета на работу, а я остался с ребенком, так как в детский сад нам ещё было рано.
Я тратил на обучение время и деньги, но не получал никакой отдачи. Сомнения разъездали изнутри. У меня были попытки заработать на фрилансе, но по моим ощущениям, с нулевым профилем и опытом, найти заказы там не легче, чем устроиться на работу. И гоняться за ними нужно постоянно. Я понял, что лучше сконцентрироваться на обучении, чем растрачивать время, которого не так много, на фриланс-биржах.
Тогда же я пробовался устроиться ментором в Хекслет. Вероятно, по уровню не дотянул, и проекты в профессии я не проходил, хоть и исключительно из-за финансовой стороны, а их наличие было желательным. Другие мои проекты были мелковаты. Однако собеседование не прошло бесполезно, ментор Сергей Карпук в ходе беседы подбил меня установить Linux. Что я сделал через несколько дней, дальше занимался только на Ubuntu. Этот опыт мне пригодился, в первый рабочий день мне выдали ноутбук с этой ОС, а ещё пригодились навыки работы с терминалом, для сброса пароля, который никому не удалось вспомнить.
Стажировка
В конце июня меня догнала реклама в социальных сетях с предложением пройти стажировку. Формат удаленный со свободным графиком — всё как мне подходит. Я решил попробовать свои силы, но знание фреймворков там значилось как желательное. В тестовом задании требовалось разработать приложение с местным прогнозом погоды с использованием фреймворка на выбор и мобильного приложения на React Native. Справедливости ради, надо сказать, что к тестовому прилагалось множество материалов, которые помогут в выполнении. Срок был достаточный и я решил попробовать свои силы.
Это был хороший челлендж, а когда запустил своё приложении на собственном смартфоне, то испытал вау-эффект. Сайты-сайтами, но это казалось уже новым уровнем.
Через неделю позвонили и пригласили на стажировку. Выяснилось, что конкурс был 5 человек на место - так я положил себе в копилочку первое профессиональное достижение. Ещё оказалось, что стажировка проходит в две итерации по 6 недель и никак не оплачивается. Возможно, кого-то позовут на работу по итогам, но пригласят ли и на каких условиях - совершенно непонятно. Я воспринял это как возможность поучиться бесплатно, тем более проект интересный - сервис каршеринга на ReactJS. Однако в намеченные планы найти работу до конца июля я не попадал, поэтому одновременно со стажировкой продолжил искать работу.
Поиск работы
Резюме - один из главных проектов на пути к работе. Я прочитал множество материалов, все рекомендации примерно схожи. Благодаря Twitter, нашлась статья с подробным разбором процесса изучения резюме и особенностей интерфейса hh.ru со стороны hr-специалиста. Среди прочего, автор рекомендует указывать учебный опыт в блоке с прошлыми местами работы, ведь этот раздел изучают в первую очередь. Стажировку я тоже указал в резюме. Не знаю, добавила ли она мне очков, до этого я не занимался активным поиском, но уверенности точно прибавила.
В общем, я навел порядок на GitHub, доработал резюме и включился в активный поиск работы. Искал, в основном на Headhunter, на «Хабр Карьере» предложений для Краснодара сильно меньше и они, как правило, есть на hh.ru.
Ещё до этого я сделал себе простой сайт-портфолио, чтобы можно было показать проекты в одном месте и в комфортном виде, ведь сначала для устройства на работу нужно пройти через HR, а они ваш код оценивать не будут. В этот раз дело пошло интереснее, откликов с предложением пройти ТЗ было больше, приходилось выбирать, так как всё реализовать было бы невозможно. Я сразу решил, что не пойду в компанию единственным программистом или одним в своей специализации — это сильно замедлит мой профессиональный рост.
Лайфхак: предложите интервьюеру вместо ТЗ посмотреть ваш проект схожей сложности или выше. Не все согласятся, но те, кто согласится, сэкономит вам время, которое вы можете уделить на другое задание. Если вам отвечают шаблонной фразой и отправляют сделать тестовое, попробуйте выйти на диалог, задайте уточняющий вопрос. Если ответом вам будет тишина, возможно, на ваше тестовое реакция будет аналогичная.
Изначально у меня в заголовке резюме было указано, что я Junior, но вакансий, где указано, что ищут именно джунов — очень мало. Я пришел к тому, что грейд надо убрать, ни в одной из вакансий, по которым я собеседовался, уровень не указывали.
Я бы не рекомендовал изучать неизвестный фреймворк ради тестового в компании, с которыми у вас даже предварительного общения не было. Усилий от вас потребуется больше, а заинтересует ли вас эта компания — ещё непонятно. В целом, общая рекомендация в поиске такая: старайтесь больше остальных. Не все делают личные сайты, а вы сделайте. Далеко не каждый пишет сопроводительное письмо, а вы напишите, ещё и по имени обратитесь, если оно в вакансии указано.
Собеседования
Будьте готовы к аргументированному ответу на вопрос о смене профессии, если вы не расскажете это в части «о себе», вас обязательно об этом спросят.
Компания № 1
После короткого общения с HR, мы договорились о техническом собеседовании с разработчиком. Я, честно говоря, ждал своего первого провала, который, обязательно должен случиться — ведь своё первое интервью именно так все и описывают. Предстояло кодить в прямом эфире.
Задачи были простые: переверните строку и напишите функцию, которая вернёт массив только с нечётным числами. Была ещё задача с замыканием, где использовался устаревший синтаксис, мне нужно было исправить функцию, чтобы получить заданный результат. Тут я поплыл, решил верно, но где-то не доработал. Сам интервьюер не смог допилить с ходу. Такая задача ради задачи, кто сейчас использует var в JavaScript, кроме трансляторов? В итоге я понял, где ошибка и удалось выйти на нужный результат, но чувство, что провалился, меня не покидало.
Через час мне предложили ещё тестовое, сверстать лендинг с простыми элементами. Довольно странно, я вам репозитории с сайтом на React показывал, а здесь базовая верстка без интерактивных элементов нужна. Здесь ещё лайфхак, я до него позже додумался, но вы, если придется, попробуйте. Договоритесь о том, чтобы не верстать всё, а 1-2 блока на выбор интервьюера, этого будет достаточно, чтобы понять ваши возможности.
Я сверстал и ждал обратной связи. После выходных со мной связались и предложили работу, но с ЗП ниже, чем я ожидал.
Тут началась волна сомнений и размышлений. Что если других предложений не будет? Что если я сейчас начну тянуть, а нам всем объявят вторую волну карантина и рынок труда опять уйдет в спячку? Я попросил очной встречи с руководством, так как всё общение было удаленным, а мне хотелось посмотреть на офис и с командой познакомиться. В это время я находился за городом, в итоге, всё общение растянулось на пару недель. В офисе выяснилось, что готового рабочего места нет, компьютеры отправили, надо ждать или приходить со своим. Сам офис в Краснодаре работает меньше месяца, основной в другом городе. Первое время мне предстояло заниматься поддержкой кучи одностраничников, а задач с React нужно было дождаться, сначала базовые навыки проявить. В общем, я сильно сомневался, параллельно проходили собеседования с другими, а с ответом здесь я оттягивал как мог.
Компания № 2
Собеседование в другую компанию было назначено через 2 часа после технического интервью в компанию № 1. Тут одобрили мои репозитории и тестовое я прошел заочно. Общались с HR, видно, что она собеседников щелкает, как орехи. Сказала, что у нас полчаса, если буду увлекаться, она будет останавливать. Сюрприз — во время разговора к нам в любой момент подключится native english speaker, чтобы оценить мой уровень английского языка. Это было больше похоже на стресс-интервью, таких требований в вакансии не значилось, и меня об этом не предупреждали. У меня в опыте было интервью на английском, но я к нему готовился несколько дней, а тут неожиданность. В итоге моё волнение умножилось, ведь я ещё и от технического собеседования не успел отойти. Конечно, разговаривал я отвратительно, да и с HR у меня не клеилось. Несколько раз мне сказали, что это лучшее предложение на рынке, да ещё в форме, «ну вы же знаете». Сама фраза была построена так, что после неё я должен похвалить компанию, мне такие манипуляции не нравятся, даже если они используются неосознанно. Договорились об обратной связи в рамках недели.
После первого опыта собеседований, ещё и двух в один день, мне немного трясло — казалось, я провалил всё, что можно: английский, знание JS, ещё и общаюсь как-то неправильно. Через день пришел отказ, но спросили, могут ли добавить в базу, если понадобится дополнительный персонал. Мне кажется, такие фразы больше для этикета, чем для реальных обещаний.
Компания № 3
Тут выстрелил локальный чат в телеграме, я закинул туда резюме и через час получил два приглашения на удаленное интервью. В компанию номер 3 и номер 4. Потом, с запозданием, приходило ещё несколько откликов. Локальный чат сработал не хуже, чем hh.ru.
Компания 4, назначила собеседование заранее, общаться предстояло почти через неделю. В компании номер 3 договорились на видео звонок. У меня был подготовлен список вопросов для потенциального работодателя.
Собеседование — это двухстороннее общение, вам тоже нужно оценить компанию, иначе есть шанс ошибиться.
Вот мой общий список, который может дополняться уточняющими вопросами для конкретного работодателя:
- Сколько человек в команде? Сколько занимается фронтендом?
- Сколько сотрудников сейчас набираете?
- Что для вас важно в сотруднике?
- Вы занимаетесь обучением сотрудников?
- Есть ли система повышения? За что последний раз кого-либо повысили?
- Как происходит погружение в работу?
- Какие первые задачи я получу?
- Как долго вы работаете в компании? Что лично вам больше всего нравится в компании?
- Какие дальнейшие этапы собеседования?
- Какой длительности испытательный срок? По каким критериям оценивается, что срок прошел успешно?
- График, оформление, зарплата.
Интервьюер начал с вступительной речи о компании и неожиданно закрыл 70% моих вопросов, обычно все сразу переходят к опросу претендента. Это было собеседование целиком и полностью на софтскиллах, хардскиллы упоминались, но, лишь в формате беседы. Поинтересовались уровнем английского, но на разговор на нем не переходили. Предполагалась разработка на React Native с применением TypeScript. Мой уровень знаний TS - часовая лекция на YouTube в двойном ускорении. На Native — в копилке один проект для отбора на стажировку. Спросили про планы, как хотелось бы развиваться. Я сказал, что точно хочу пощупать backend, как минимум на NodeJS, а вообще работа с приложениями, потенциально, сильно интереснее, чем с сайтами.
Команда небольшая, проекты интересные, оказалось, что одним из них наша семья и знакомые активно пользуются. Договорились об обратной связи до конца следующего дня, никаких тестовых не требовали. Вспомнил, что на интервью говорили про Хекслет, отправил в догонку свой профиль студента. Мне ответили, что уже посмотрели его, 20 минут назад. Смело подкрепляйте такие ссылки к резюме, не ограничивайтесь GitHub-профилем. Работа меня заинтересовала, но загадывать не стал — TypeScript до этого я не использовал, да и c React Native работал только один раз. На руках был «сомнительный» оффер и два запланированных собеседования.
Компания № 4
Назначен видеозвонок после выходных, вероятно, с последующим тестовым заданием. Пока ждёт.
Компания № 5
Пришло приглашение с hh — вакансия в продуктовой компании, на которую откликался пару недель назад. Пригласили в офис, на встрече руководитель спрашивал, учил ли что-то кроме JS, какие-то сопутствующие темы. Я ответил, что проходил курсы по СИКП, программировал на парах, списках, немного на LISP и, вообще, на Хекслете разбирают полиморфизм до того, как дают объект в JS. Что правда, но в рамках прошлой программы.
Тут надо сделать отступление.
Когда искали в стартап разработчика, знакомый собственников накидал технические вопросы для отсева кандидатов по телефону. Последний вопрос был бонусный, с примечанием «чтобы узнать ооочень крутого кандидата». На этот вопрос практически никто не отвечал. На интервью звали и без бонусного ответа. Вопрос: что такое полиморфизм? Собственно, поэтому этот термин у меня в голове засел плотно.
Конец отступления
Также меня спрашивали про сложность алгоритмов, какие сортировки знаю и могу ли описать, как они работают. Попросили нарисовать графики алгоритмов различной сложности. Здесь очень пригодилась книга «Грокаем алгоритмы», которая доступно всё объясняет и вы легко ответите на подобные вопросы. По итогам общения договорились о тестовом задании с последующим разбором.
После собеседования поехал на знакомство с коллективом и офисом компании № 1. Знакомство не прибавило мне уверенности в том, что нужно работать здесь, но долго тянуть было нельзя, а последующие собеседования ещё непонятно к чему приведут. Были абсолютно понятные мысли, что надо хвататься, получить первый опыт, пока снова всех на карантин не отправили. Была пятница, решили, что дам обратную связь после выходных. Я отпустил мысли о работе и отправился с семьёй на прогулку.
Около 17
мне прилетает оффер из компании № 3 на позицию разработчика React Native с опциональной работой с ReactJS/NodeJS. На календаре 31 июля - дедлайн моей цели. Я согласился, отказался от первого оффера, ТЗ в компании № 5, будущего собеседования в компании № 4, и уже в понедельник вышел на работу в офис.
Мама, я инженер! Инженер-программист!
Первые дни на работе
Моей первой задачей было настроить рабочее окружение на ноутбуке с Ubuntu. Опыт работы с системой мне очень пригодился.
Моя вторая задача: оплатить подписку на Хекслет с корпоративной карты, чтобы вспомнить некоторые темы, закрыть пробелы — я не прошел профессию полностью, сейчас закончил React, начал Redux. Планирую и дальше заниматься, проработать backend с NodeJS.
Сейчас, по большей части, я читаю чужой код и занимаюсь доработками небольшой сложности. Мне всё настолько нравится, что так и жду, что где-то подвох.
После двух недель работы передали MacBook другого разработчика, а ей купили новый. Для эмулятора iOS нужен XCode, тут без вариантов, ребята из Apple замкнули всё на себе. К ноутбуку попросили выбрать новый рюкзак, мышь, наушники и др. аксессуары. Посмотрели на заказ и сказали, что бюджет есть, выбери мышку « поинтереснее».
Да, блин, это вообще законно, так баловать людей на испытательном сроке?!
Стажировку я забросил, думал, вытяну работу над проектом ради образования, но ничего не вышло. Собирался заниматься по вечерам. Разум включил защитный механизм от перегрузки. Первую неделю, укладывал дочку спать, а потом неожиданно обнаруживал себя спящим на полу в детской. В дороге я обычно читаю, даже нашёл хорошую книгу по TypeScript — «Эффективный TypeScript», но изучать её получается только утром, вечером голова уже не воспринимает информацию. Надо подождать, пока разум перестроится к новому уровню интеллектуальной нагрузки.
React Native изучаю по документации, проходил экспресс курс на YouTube Владилена Минина, чтобы подготовиться к стажировке — в общем его структура повторяет React, но есть свои особенности с компонентами, стилями, рабочим окружением. TypeScript сейчас изучаю по книге, плюс документация. Он не глобально отличается от JS, скорее выглядит как надстройка над ним. Поэтому, когда знаешь JS, решать базовые задачи с применением TypeScript можно довольно быстро. Сейчас в целом всё обучение отталкивается от рабочих задач.
Пока что ощущаю нехватку знаний по работе с Git — базовых команд, которые я знал до устройства на работу, явно не хватает. Сейчас наверстываю. В целом, все проблемы начинающего — в отсутствии необходимого опыта. В работе возникают такие задачи, которых ни один курс не предусмотрит.
Вместо заключения
Спасибо жене за поддержку, без неё я бы этот путь не вытянул. Особенно тяжело было получать отказы как из пулемета. Помогала мысль, что все вакансии на рынке мне не нужны, нужна одна, которая пока не нашлась.
В программировании я нашел сочетание всех увлечений: технологии, бесконечное образование, английский, а ещё за это мне платят - идеальный набор.
Успехов всем желающим сменить специализацию!
Буду рад обратной связи и любым комментариям по моей истории.
Приходите дружить в Твиттер!
Удачи, сил и упорства всем! Всё получится, если вы действительно этого хотите.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 17:02:55 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="eK1buqvJLFRbWTpefm4EL9siLqdObdl_FNzReoRNL_WXfJCNWbeBNO0aHsZyYfRYGysDDUZaJ92pPEsu1krImw";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Мама, я инженер! Инженер-программист!</title>
<meta name="description" content="Большая история нашего студента Геннадия Зинченко — как в 31 год правильно изучать программирование, проходить собеседования — успешно и не очень — и наконец-то найти работу фронтенд-разработчика на React Native.">
<link rel="canonical" href="https://ru.hexlet.io/blog/posts/mama-ya-inzhener-inzhener-programmist">
<meta property="og:title" content="Мама, я инженер! Инженер-программист!">
<meta property="og:description" content="Большая история нашего студента Геннадия Зинченко — как в 31 год правильно изучать программирование, проходить собеседования — успешно и не очень — и наконец-то найти работу фронтенд-разработчика на React Native.">
<meta property="og:image" content="https://ru.hexlet.io/vite/assets/blog_post-7eTyeLLt.webp">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="SxtKuE4J62Dw-CwmCbWFLloRWIhBA9NDPHyPYfBJp0qkyoGPvHdGAEa7CL4FunVZmhh1Ikk0LeGBnBU1ok5AJA" />
<script src="/vite/assets/inertia-INZxX8jp.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-6pOtQ3OW.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="/vite/assets/blog_post-7eTyeLLt.webp"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcyNywicHVyIjoiYmxvYl9pZCJ9fQ==--2d5cbbf5c3b4a73ae4b2c50632305d78f5872e4d/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programmer-rafiki.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDA0OSwicHVyIjoiYmxvYl9pZCJ9fQ==--a6531362dd1f3afb65f5b269e1a23113df7171b1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Devices-amico.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAzNCwicHVyIjoiYmxvYl9pZCJ9fQ==--ba516ea9573bdfcd1d21e2aa0fff8818561828f2/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Typing-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcwOSwicHVyIjoiYmxvYl9pZCJ9fQ==--03e50bbd408fef672ad099f7b2a258d80f54ad96/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Hand%20coding-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAxOSwicHVyIjoiYmxvYl9pZCJ9fQ==--84efd2b6854b7000046e9ce06e6be85d38af5ab8/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/JavaScript%20frameworks-cuate.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/blog/posts/show","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T17:02:55.498Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"8dOTZJXC4UjK0kw72soPtNEylznyZ_tMbEcekGFViMMeAlhTZ7xMKHyRaKPWxf_DETu6k_pQBe7Rp4TEM1JvrQ","post":{"model_name":"BlogPost","category":{"id":3,"name":"Истории успеха","slug":"success","state":"published","created_at":"2016-07-30T12:57:18.308Z"},"creator":{"public_name":"Gennadiy Zinchenko","id":249386,"is_tutor":false},"tags":[{"id":1443,"slug":"frontend","name":"Фронтенд"}],"id":953,"title":"Мама, я инженер! Инженер-программист!","slug":"mama-ya-inzhener-inzhener-programmist","state":"published","summary":"Большая история нашего студента Геннадия Зинченко — как в 31 год правильно изучать программирование, проходить собеседования — успешно и не очень — и наконец-то найти работу фронтенд-разработчика на React Native.","votes_count":101,"created_at":"2020-08-20T19:04:21.740Z","published_at":"2020-08-26T07:59:10.629Z","body":"Привет! Меня зовут Геннадий, мне 31 год, у меня есть жена, маленький ребенок и кот. Недавно я сменил профессию и теперь занимаюсь фронтенд-разработкой. На пути к новой специализации мне придавали сил поддержка супруги и истории успеха других студентов, поэтому я чувствую моральный долг поделиться своей.\n\nТекст будет длинный, так как я преследовал две цели:\n1. Честно рассказать, что просто не будет, но сложности преодолимы.\n2. Дать максимум пользы, чтобы помочь будущим коллегам. Не пренебрегайте ссылками в этой статье. Хотелось создать самую полезную «историю успеха» в блоге Хекслета. Обязательно напишите, получилось ли у меня.\n\nЗаварите чаёк, кофеек или какао, приступим...\n\n::programs\n\n## Содержание\n\n## Поиск себя\n\nЯ работал руководителем отдела рекламы, параллельно совмещая обязанности с курированием технической стороны работы интернет-магазина. Деятельность эта мне сильно приелась — думал, что дело в компании, где я работал уже больше 5 лет. Я ходил на собеседования, но в глубине души понимал, что буду заниматься тем же самым, но в другом месте. \n\nНа волне трендов решил прокачиваться в направлении SMM — купил курс «Нетологии», отдавал ему всё свободное время. Успешно закончил, был в рядах отличников, но дальше дело не пошло. Да простят меня специалисты по социальным сетям, но я так и не смог почувствовать важности и нужности своей деятельности, а поэтому и не смог «продать» себя ни одному заказчику. Деньги и время потрачены впустую. Это важный момент, который ещё всплывет.\nКстати, параллельно у «Нетологии» проходил бесплатный курс о смене профессии и выборе работы в digital. Здесь дали [ссылку на тест](https://www.typeplanet.ru/test) по определению типа личности и судя по результатам, мне нужно было заниматься аналитикой или программированием. Какая чушь, подумал я — это же вообще не для меня, и пошел дальше изучать SMM.\n[По ссылке](https://yadi.sk/i/UKHsNyfZFWf67w) часть презентации с предполагаемыми профессиями на базе результатов теста.\n\nЯ продолжал работать на своей прежней работе, чувствуя, что увяз, параллельно достаточно пассивно изучал рынок труда, но радикальных действий не предпринимал. Жизнь сама решила дать мне толчок — в компании начали происходить серьёзные изменения, которые привели к тому, что мне предложили работать на новых условиях — на них я соглашаться не стал бы даже в бреду. Я покинул компанию и ушел в никуда.\n\n## Войти в IT\n\nЧерез две недели я нашел работу в роли проджект-менеджера в стартапе. Идея казалась мне очень крутой, я ей загорелся. По итогам собеседования — в качестве испытания — мне предложили изучить существующие наработки и предложить улучшения. К делу я подошёл с огнем в глазах и прислал документ на десяток листов, мне сделали предложение о работе. \n\nКруто, я проджект-менеджер в IT, дальше только вперёд. Перспективы казались мне самыми радужными. Команду формировал самостоятельно. В подчинении у меня был один программист и несколько менеджеров по работе с клиентами. Чтобы ставить адекватные задачи разработчику, я начал изучать релевантные темы. Я раньше уже начинал обучался вёрстке в HTML Academy, когда имел дело с интернет-магазином, но всё забылось — максимум, что я использовал, это теги для разметки страниц с контентом. Читал статьи, проходил интерактивные курсы и не заметил, как ушел в тему с головой. На этот момент обучение веб-разработке было скорее хобби, чем намерением сменить профессию, но интерес постепенно подогревался, хотелось разобраться, как всё устроено. \n\nРабота в стартапе полна сюрпризов, чем дольше я работал, тем больше мои представления расходились с действительностью. Направление развития изменилось и ушло в сторону от тех идей, которые были мне близки. В совокупности с другими факторами стало понятно, что эта работа носит временный характер. Появилась дилемма - снова подбирать менеджерскую позицию или перейти в ряды разработчиков и развиваться в новом направлении. Второе показалось более интересным и перспективным, я решил заняться обучением плотнее.\n\n## Окружение\n\nСреди моего ближайшего окружения нет ни разработчиков, ни тестировщиков, ни кого-либо с похожей специализацией. Чтобы погружаться в IT, соответствующую атмосферу я создавал виртуально. Для этого слушал подкасты, смотрел YouTube-блоги, подписывался на корпоративные и личные аккаунты разработчиков в Твиттере \n[Подружиться со мной в Твиттере](https://twitter.com/gennadiy_tw),\n[Мои рекомендации YouTube-каналов](https://ru.hexlet.io/blog/posts/youtube-pryachet-ot-vas-poleznoe-video),\n[Мои рекомендации подкасты](https://ru.hexlet.io/blog/posts/it-v-naushnikah).\n\n## Обучение\n\nИзучение веб-разработки я начал с курсов HTML Academy. Они отлично обучают вёрстке, игровая механика курсов просто прекрасна. При этом все эти забавы с котиками и енотами навели меня на мысль, что курсы слишком размазаны - слишком много времени уделялось каким-то мелочам, словно это сделано для объёма, а не для пользы. Кажется, в HTML Academy я больше играл в разработчика, чем обучался.\n\nВ транспорте, или когда выдавалась свободная минута, я занимался в различных приложениях (Sololearn и пр.) на смартфоне — от них толку немного, но всё же это полезнее, чем залипать в игры. Позже я взял курс на Udemy, где обещали сделать из меня разработчика с нуля. Оказалось, что честнее было бы говорить про верстальщика, чем про разработчика. Например, нам только в конце курса показали jQuery и я не понял ровно ничего, просто перепечатывал с экрана.\n\n## Хекслет\n\nЗнакомство с Хекслетом состоялось совершенно случайно. Это был ретвит статьи «Тинькофф Журнала» с образовательными площадками. Помню первые ощущения от знакомства с сайтом - это что-то несерьёзное, какие-то детские рисунки, похоже, сделано на скорую руку. Хекслет был подключен к программе кешбэк от «Тинькофф», видимо, поэтому школа оказалась в подборке. В моем опыте была попытка заключить с банком контракт на участие в программе кешбэка, и я знаю, что всех подряд туда не берут. За первые блоки курсов денег не просили, поэтому я решил задержаться подольше. Помню, как легко и доступно объяснили всё в первых уроках, превосходная подача для постигающих азы. Где-то там же, в начале, новичкам рекомендуют отправиться на [Code-Basics](https://ru.code-basics.com/). Так я и сделал, но не без доли иронии — ведь обучение начинается с урока, где нужно написать фразу, которая хорошо ложится в контекст - _'You know nothing, Jon Snow'_. \n\nОтсюда началось моё перестроение. Самыми сложными для меня были базовые курсы — понять концепции и конструкции, запомнить синтаксис, всё эти скобки и стрелки, постоянно возникающие ошибки в коде. Сначала говорят, что компьютер последовательно выполняет операции, а потом оказывается, что есть циклы, рекурсия, которые исполняют код нелинейно. \n\n> Был опыт, когда я 4 часа мучился со слайдером и не мог понять, почему ничего не работает — оказалось, что я допустил опечатку в атрибуте тега script, подключая js файл к странице. Подобные штуки нельзя перескочить, эти ошибки надо пережить. \n\nПомню, как закипала голова от перегрузки новой информацией. Проснулся ночью, дочка зовёт и просит подогреть ей молочка. Иду на кухню, а в голове:\n\n1. Надо написать функцию, которая подогреет молоко;\n2. Я понятия не имею, как это сделать\n3. Теплое молоко нужно прямо сейчас\n4. Что же делать?!\n\nВ Хекслете понравилась сложность, чувствовалось, как за тяжестью заданий скрывается рост знаний. Помню, как переполняло чувство гордости, когда в комментариях на Code-Basics нашел ошибку у одного студента, написал ему. Не имеет значения, что мой ответ был через месяц. Я думал, как же круто, кажется, я начинаю разбираться, я нашел потенциальную проблему в чужом коде.\n\nС обучением по программированию я притирался несколько месяцев. Не было уверенности, что это моё, что всё не закончится, как с другими курсами, потраченным временем и деньгами. В цели стать программистом я утвердился в начале января, после этого моё обучение начало приобретать системный характер. Посвящал образованию максимум времени, которое мог дать. У нас очень активная дочка, поэтому заниматься можно только, когда она спит. Здесь особенно выбирать не приходится, занимайся сейчас, другого времени не будет. Пока укладывал, читал под кроватью теорию на смартфоне, смотрел видео. Когда засыпала — наступало время практики на компьютере. Сил придавали истории успеха других студентов и [статья, о смене профессии](https://ru.hexlet.io/blog/posts/learn-to-program-at-30), её перечитывал несколько раз и дал почитать жене.\n\n## Рекомендации по обучению\n\n**Начните пользоваться дневником студента, фиксируйте свой прогресс.** Я делал это в формате ежемесячных отчётов. Потом перешёл на формат ежедневных отчётов в Твиттере с хештегом #100DaysOfCode, который активно используется в сообществе.\n\n**Все советуют заниматься каждый день, но я рекомендую вам не забывать про отдых**. Если усердно занимаетесь, сделайте себе выходной день — это только повысит вашу продуктивность.\n\n**Не пренебрегайте разделом обсуждений**, не только просите помощи, но и давайте её другим. Это пойдет вам на пользу. Про вопросы и ответы я писал [отдельный пост в дневнике](https://ru.hexlet.io/blog/posts/voprosy-i-otvety-na-hekslete). Они помогут вам прокачивать навыки разбора чужого кода, а на работе, по большей части, вам нужно будет код читать, а не писать.\n\n**Усложняйте.** Если делаете какой-то проект, подумайте, как можно его улучшить и что добавить. Мои самые любимые проекты — те, которые я делал без технического задания. Это сложно, но со сложностью приходит рост компетенции.\n\n## Какой язык учить?\n\nУчите английский, серьезно. Абсолютное большинство материалов, с которыми я сталкиваюсь в работе — на английском языке.\nЯ раньше ходил на курсы, брал разговорные уроки онлайн, но без постоянной практики всё забывается, чувствую, что моего уровня недостаточно и навыки нужно подтягивать.\n\nВакансии с требованием знания английского языка, как правило, привлекательнее, не только в IT. Для перевода посоветую [сервис DeepL](https://www.deepl.com/ru/translator), его качество работы с текстом мне нравится больше чем у Google Translate. Для Windows и MacOS есть приложение, которое переведет выделенный текст по нажатию горячих клавиш.\n\n## Поставьте цель\n\nЗафиксируйте, чего конкретно и в какие сроки вы хотите добиться. Разбейте на мелкие задачи, чтобы проще было отслеживать, продвигаетесь ли вы по этому пути. Например, «до конца сентября завершить первый блок курсов из профессии» гораздо лучше и измеримые, чем «изучать программирование не меньше 10 часов в неделю». Если не знаете, погуглите «постановка цели по SMART».\n\nСвою цель я чётко расписал и [декларировал в дневнике студента](https://ru.hexlet.io/blog/posts/stat-programmistom-postanovka-tseli). Честно говоря, с учётом нынешних условий, я думал, что дедлайн сдвинется на месяц. Ирония в том, что я прописывал цель найти работу до конца июля, а получил оффер во второй половине дня, 31 июля.\n\n## Про работу\n\nВ конце марта я потерял работу, наш стартап прикрыли за два дня — карантинные меры сильно повлияли на бизнес инвесторов, а до окупаемости нашему сервису было далеко. Говорят, чем раньше начнёте ходить на собеседования, тем лучше, поэтому я решил поискать работу программистом, хотя понимал, что не готов. Кажется, я отправил около сотни откликов, релевантных и нет. Иногда, мне приходили тестовые задания, выполнение которых было мне не по зубам. У меня не состоялось ни одного собеседования. На эту тему можете почитать мой пост [История НЕуспеха](https://ru.hexlet.io/blog/posts/istoriya-neuspeha-poisk-pervoy-raboty). После этой записи, пара человек отписались мне, что находятся в похожей ситуации, пожелали удачи и сказали что будут ждать мою историю успеха. \n\nМы с женой обсудили и решили, что нужно доучиться и искать работу программистом. Она у меня настоящий герой, без её поддержки у меня ничего бы не вышло. Мы быстро перегруппировались — жена вышла из декрета на работу, а я остался с ребенком, так как в детский сад нам ещё было рано.\n\nЯ тратил на обучение время и деньги, но не получал никакой отдачи. Сомнения разъездали изнутри. У меня были попытки заработать на фрилансе, но по моим ощущениям, с нулевым профилем и опытом, найти заказы там не легче, чем устроиться на работу. И гоняться за ними нужно постоянно. Я понял, что лучше сконцентрироваться на обучении, чем растрачивать время, которого не так много, на фриланс-биржах.\n\nТогда же я пробовался устроиться ментором в Хекслет. Вероятно, по уровню не дотянул, и проекты в профессии я не проходил, хоть и исключительно из-за финансовой стороны, а их наличие было желательным. Другие мои проекты были мелковаты. Однако собеседование не прошло бесполезно, ментор Сергей Карпук в ходе беседы подбил меня установить Linux. Что я сделал через несколько дней, дальше занимался только на Ubuntu. Этот опыт мне пригодился, в первый рабочий день мне выдали ноутбук с этой ОС, а ещё пригодились навыки работы с терминалом, для сброса пароля, который никому не удалось вспомнить.\n\n## Стажировка\n\nВ конце июня меня догнала реклама в социальных сетях с предложением пройти стажировку. Формат удаленный со свободным графиком — всё как мне подходит. Я решил попробовать свои силы, но знание фреймворков там значилось как желательное. В тестовом задании требовалось разработать приложение с местным прогнозом погоды с использованием фреймворка на выбор и мобильного приложения на React Native. Справедливости ради, надо сказать, что к тестовому прилагалось множество материалов, которые помогут в выполнении. Срок был достаточный и я решил попробовать свои силы.\n\nЭто был хороший челлендж, а когда запустил своё приложении на собственном смартфоне, то испытал вау-эффект. Сайты-сайтами, но это казалось уже новым уровнем.\n\nЧерез неделю позвонили и пригласили на стажировку. Выяснилось, что конкурс был 5 человек на место - так я положил себе в копилочку первое профессиональное достижение. Ещё оказалось, что стажировка проходит в две итерации по 6 недель и никак не оплачивается. Возможно, кого-то позовут на работу по итогам, но пригласят ли и на каких условиях - совершенно непонятно. Я воспринял это как возможность поучиться бесплатно, тем более проект интересный - сервис каршеринга на ReactJS. Однако в намеченные планы найти работу до конца июля я не попадал, поэтому одновременно со стажировкой продолжил искать работу.\n\n## Поиск работы\n\nРезюме - один из главных проектов на пути к работе. Я прочитал множество материалов, все рекомендации примерно схожи. Благодаря Twitter, [нашлась статья](https://catwomenko.ru/2019/05/26/headhunter_ru-inside/) с подробным разбором процесса изучения резюме и особенностей интерфейса hh.ru со стороны hr-специалиста. Среди прочего, автор рекомендует указывать учебный опыт в блоке с прошлыми местами работы, ведь этот раздел изучают в первую очередь. Стажировку я тоже указал в резюме. Не знаю, добавила ли она мне очков, до этого я не занимался активным поиском, но уверенности точно прибавила.\n\nВ общем, я навел порядок на GitHub, доработал резюме и включился в активный поиск работы. Искал, в основном на Headhunter, на «Хабр Карьере» предложений для Краснодара сильно меньше и они, как правило, есть на hh.ru.\n\nЕщё до этого я сделал себе простой сайт-портфолио, чтобы можно было показать проекты в одном месте и в комфортном виде, ведь сначала для устройства на работу нужно пройти через HR, а они ваш код оценивать не будут. В этот раз дело пошло интереснее, откликов с предложением пройти ТЗ было больше, приходилось выбирать, так как всё реализовать было бы невозможно. Я сразу решил, что не пойду в компанию единственным программистом или одним в своей специализации — это сильно замедлит мой профессиональный рост.\n\n> Лайфхак: предложите интервьюеру вместо ТЗ посмотреть ваш проект схожей сложности или выше. Не все согласятся, но те, кто согласится, сэкономит вам время, которое вы можете уделить на другое задание. Если вам отвечают шаблонной фразой и отправляют сделать тестовое, попробуйте выйти на диалог, задайте уточняющий вопрос. Если ответом вам будет тишина, возможно, на ваше тестовое реакция будет аналогичная. \n\nИзначально у меня в заголовке резюме было указано, что я Junior, но вакансий, где указано, что ищут именно джунов — очень мало. Я пришел к тому, что грейд надо убрать, ни в одной из вакансий, по которым я собеседовался, уровень не указывали. \n\nЯ бы не рекомендовал изучать неизвестный фреймворк ради тестового в компании, с которыми у вас даже предварительного общения не было. Усилий от вас потребуется больше, а заинтересует ли вас эта компания — ещё непонятно. В целом, общая рекомендация в поиске такая: старайтесь больше остальных. Не все делают личные сайты, а вы сделайте. Далеко не каждый пишет сопроводительное письмо, а вы напишите, ещё и по имени обратитесь, если оно в вакансии указано.\n\n## Собеседования\n\nБудьте готовы к аргументированному ответу на вопрос о смене профессии, если вы не расскажете это в части «о себе», вас обязательно об этом спросят.\n\n### Компания № 1\n\nПосле короткого общения с HR, мы договорились о техническом собеседовании с разработчиком. Я, честно говоря, ждал своего первого провала, который, обязательно должен случиться — ведь своё первое интервью именно так все и описывают. Предстояло кодить в прямом эфире.\n\nЗадачи были простые: переверните строку и напишите функцию, которая вернёт массив только с нечётным числами. Была ещё задача с замыканием, где использовался устаревший синтаксис, мне нужно было исправить функцию, чтобы получить заданный результат. Тут я поплыл, решил верно, но где-то не доработал. Сам интервьюер не смог допилить с ходу. Такая задача ради задачи, кто сейчас использует var в JavaScript, кроме трансляторов? В итоге я понял, где ошибка и удалось выйти на нужный результат, но чувство, что провалился, меня не покидало.\n\nЧерез час мне предложили ещё тестовое, сверстать лендинг с простыми элементами. Довольно странно, я вам репозитории с сайтом на React показывал, а здесь базовая верстка без интерактивных элементов нужна. Здесь ещё лайфхак, я до него позже додумался, но вы, если придется, попробуйте. Договоритесь о том, чтобы не верстать всё, а 1-2 блока на выбор интервьюера, этого будет достаточно, чтобы понять ваши возможности.\n\nЯ сверстал и ждал обратной связи. После выходных со мной связались и предложили работу, но с ЗП ниже, чем я ожидал. \nТут началась волна сомнений и размышлений. Что если других предложений не будет? Что если я сейчас начну тянуть, а нам всем объявят вторую волну карантина и рынок труда опять уйдет в спячку? Я попросил очной встречи с руководством, так как всё общение было удаленным, а мне хотелось посмотреть на офис и с командой познакомиться. В это время я находился за городом, в итоге, всё общение растянулось на пару недель. В офисе выяснилось, что готового рабочего места нет, компьютеры отправили, надо ждать или приходить со своим. Сам офис в Краснодаре работает меньше месяца, основной в другом городе. Первое время мне предстояло заниматься поддержкой кучи одностраничников, а задач с React нужно было дождаться, сначала базовые навыки проявить. В общем, я сильно сомневался, параллельно проходили собеседования с другими, а с ответом здесь я оттягивал как мог.\n\n### Компания № 2\n\nСобеседование в другую компанию было назначено через 2 часа после технического интервью в компанию № 1. Тут одобрили мои репозитории и тестовое я прошел заочно. Общались с HR, видно, что она собеседников щелкает, как орехи. Сказала, что у нас полчаса, если буду увлекаться, она будет останавливать. Сюрприз — во время разговора к нам в любой момент подключится native english speaker, чтобы оценить мой уровень английского языка. Это было больше похоже на стресс-интервью, таких требований в вакансии не значилось, и меня об этом не предупреждали. У меня в опыте было интервью на английском, но я к нему готовился несколько дней, а тут неожиданность. В итоге моё волнение умножилось, ведь я ещё и от технического собеседования не успел отойти. Конечно, разговаривал я отвратительно, да и с HR у меня не клеилось. Несколько раз мне сказали, что это лучшее предложение на рынке, да ещё в форме, «ну вы же знаете». Сама фраза была построена так, что после неё я должен похвалить компанию, мне такие манипуляции не нравятся, даже если они используются неосознанно. Договорились об обратной связи в рамках недели. \n\nПосле первого опыта собеседований, ещё и двух в один день, мне немного трясло — казалось, я провалил всё, что можно: английский, знание JS, ещё и общаюсь как-то неправильно. Через день пришел отказ, но спросили, могут ли добавить в базу, если понадобится дополнительный персонал. Мне кажется, такие фразы больше для этикета, чем для реальных обещаний.\n\n### Компания № 3\n\nТут выстрелил локальный чат в телеграме, я закинул туда резюме и через час получил два приглашения на удаленное интервью. В компанию номер 3 и номер 4. Потом, с запозданием, приходило ещё несколько откликов. Локальный чат сработал не хуже, чем hh.ru.\n\nКомпания 4, назначила собеседование заранее, общаться предстояло почти через неделю. В компании номер 3 договорились на видео звонок. У меня был подготовлен список вопросов для потенциального работодателя. \n\n> Собеседование — это двухстороннее общение, вам тоже нужно оценить компанию, иначе есть шанс ошибиться. \n\nВот мой общий список, который может дополняться уточняющими вопросами для конкретного работодателя: \n1. Сколько человек в команде? Сколько занимается фронтендом?\n2. Сколько сотрудников сейчас набираете?\n3. Что для вас важно в сотруднике?\n4. Вы занимаетесь обучением сотрудников?\n5. Есть ли система повышения? За что последний раз кого-либо повысили?\n6. Как происходит погружение в работу?\n7. Какие первые задачи я получу?\n8. Как долго вы работаете в компании? Что лично вам больше всего нравится в компании?\n9. Какие дальнейшие этапы собеседования?\n10. Какой длительности испытательный срок? По каким критериям оценивается, что срок прошел успешно?\n11. График, оформление, зарплата.\n\nИнтервьюер начал с вступительной речи о компании и неожиданно закрыл 70% моих вопросов, обычно все сразу переходят к опросу претендента. Это было собеседование целиком и полностью на софтскиллах, хардскиллы упоминались, но, лишь в формате беседы. Поинтересовались уровнем английского, но на разговор на нем не переходили. Предполагалась разработка на React Native с применением TypeScript. Мой уровень знаний TS - часовая лекция на YouTube в двойном ускорении. На Native — в копилке один проект для отбора на стажировку. Спросили про планы, как хотелось бы развиваться. Я сказал, что точно хочу пощупать backend, как минимум на NodeJS, а вообще работа с приложениями, потенциально, сильно интереснее, чем с сайтами.\n\nКоманда небольшая, проекты интересные, оказалось, что одним из них наша семья и знакомые активно пользуются. Договорились об обратной связи до конца следующего дня, никаких тестовых не требовали. Вспомнил, что на интервью говорили про Хекслет, отправил в догонку свой профиль студента. Мне ответили, что уже посмотрели его, 20 минут назад. Смело подкрепляйте такие ссылки к резюме, не ограничивайтесь GitHub-профилем. Работа меня заинтересовала, но загадывать не стал — TypeScript до этого я не использовал, да и c React Native работал только один раз. На руках был «сомнительный» оффер и два запланированных собеседования.\n\n### Компания № 4\n\nНазначен видеозвонок после выходных, вероятно, с последующим тестовым заданием. Пока ждёт.\n\n### Компания № 5\n\nПришло приглашение с hh — вакансия в продуктовой компании, на которую откликался пару недель назад. Пригласили в офис, на встрече руководитель спрашивал, учил ли что-то кроме JS, какие-то сопутствующие темы. Я ответил, что проходил курсы по СИКП, программировал на парах, списках, немного на LISP и, вообще, на Хекслете разбирают полиморфизм до того, как дают объект в JS. Что правда, но в рамках прошлой программы. \n\n**Тут надо сделать отступление.**\n\nКогда искали в стартап разработчика, знакомый собственников накидал технические вопросы для отсева кандидатов по телефону. Последний вопрос был бонусный, с примечанием «чтобы узнать ооочень крутого кандидата». На этот вопрос практически никто не отвечал. На интервью звали и без бонусного ответа. Вопрос: что такое полиморфизм? Собственно, поэтому этот термин у меня в голове засел плотно.\n\n**Конец отступления**\n\nТакже меня спрашивали про сложность алгоритмов, какие сортировки знаю и могу ли описать, как они работают. Попросили нарисовать графики алгоритмов различной сложности. Здесь очень пригодилась книга [«Грокаем алгоритмы»](https://www.ozon.ru/context/detail/id/139296295/), которая доступно всё объясняет и вы легко ответите на подобные вопросы. По итогам общения договорились о тестовом задании с последующим разбором.\n\nПосле собеседования поехал на знакомство с коллективом и офисом компании № 1. Знакомство не прибавило мне уверенности в том, что нужно работать здесь, но долго тянуть было нельзя, а последующие собеседования ещё непонятно к чему приведут. Были абсолютно понятные мысли, что надо хвататься, получить первый опыт, пока снова всех на карантин не отправили. Была пятница, решили, что дам обратную связь после выходных. Я отпустил мысли о работе и отправился с семьёй на прогулку.\n\nОколо 17:00 мне прилетает оффер из компании № 3 на позицию разработчика React Native с опциональной работой с ReactJS/NodeJS. На календаре 31 июля - дедлайн моей цели. Я согласился, отказался от первого оффера, ТЗ в компании № 5, будущего собеседования в компании № 4, и уже в понедельник вышел на работу в офис. \n\n**Мама, я инженер! Инженер-программист!**\n\n## Первые дни на работе\n\nМоей первой задачей было настроить рабочее окружение на ноутбуке с Ubuntu. Опыт работы с системой мне очень пригодился.\n\nМоя вторая задача: оплатить подписку на Хекслет с корпоративной карты, чтобы вспомнить некоторые темы, закрыть пробелы — я не прошел профессию полностью, сейчас закончил React, начал Redux. Планирую и дальше заниматься, проработать backend с NodeJS.\n\nСейчас, по большей части, я читаю чужой код и занимаюсь доработками небольшой сложности. Мне всё настолько нравится, что так и жду, что где-то подвох. \n\nПосле двух недель работы передали MacBook другого разработчика, а ей купили новый. Для эмулятора iOS нужен XCode, тут без вариантов, ребята из Apple замкнули всё на себе. К ноутбуку попросили выбрать новый рюкзак, мышь, наушники и др. аксессуары. Посмотрели на заказ и сказали, что бюджет есть, выбери мышку « поинтереснее».\n\n_Да, блин, это вообще законно, так баловать людей на испытательном сроке?!_\n\nСтажировку я забросил, думал, вытяну работу над проектом ради образования, но ничего не вышло. Собирался заниматься по вечерам. Разум включил защитный механизм от перегрузки. Первую неделю, укладывал дочку спать, а потом неожиданно обнаруживал себя спящим на полу в детской. В дороге я обычно читаю, даже нашёл хорошую книгу по TypeScript — «Эффективный TypeScript», но изучать её получается только утром, вечером голова уже не воспринимает информацию. Надо подождать, пока разум перестроится к новому уровню интеллектуальной нагрузки.\n\nReact Native изучаю по документации, проходил [экспресс курс на YouTube Владилена Минина](https://www.youtube.com/watch?v=dI1NLlGoX8w), чтобы подготовиться к стажировке — в общем его структура повторяет React, но есть свои особенности с компонентами, стилями, рабочим окружением. TypeScript сейчас изучаю по книге, плюс документация. Он не глобально отличается от JS, скорее выглядит как надстройка над ним. Поэтому, когда знаешь JS, решать базовые задачи с применением TypeScript можно довольно быстро. Сейчас в целом всё обучение отталкивается от рабочих задач.\n\nПока что ощущаю нехватку знаний по работе с Git — базовых команд, которые я знал до устройства на работу, явно не хватает. Сейчас наверстываю. В целом, все проблемы начинающего — в отсутствии необходимого опыта. В работе возникают такие задачи, которых ни один курс не предусмотрит.\n\n::posts\n\n## Вместо заключения\n\nСпасибо жене за поддержку, без неё я бы этот путь не вытянул. Особенно тяжело было получать отказы как из пулемета. Помогала мысль, что все вакансии на рынке мне не нужны, нужна одна, которая пока не нашлась.\n\n> В программировании я нашел сочетание всех увлечений: технологии, бесконечное образование, английский, а ещё за это мне платят - идеальный набор.\n\nУспехов всем желающим сменить специализацию!\nБуду рад обратной связи и любым комментариям по моей истории.\n[Приходите дружить в Твиттер!](https://twitter.com/gennadiy_tw)\nУдачи, сил и упорства всем! Всё получится, если вы действительно этого хотите.","reading_time":15,"url":"https://ru.hexlet.io/blog/posts/mama-ya-inzhener-inzhener-programmist","cover_thumb_variant":null,"cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp","cover_main_variant":"/vite/assets/blog_post-7eTyeLLt.webp","related_stacks_count":5},"relatedPosts":[{"model_name":"BlogPost","id":554,"title":"Как гуманитарию попасть в IT после 30 с маленьким ребенком и ипотекой","slug":"kak-gumanitariyu-popast-v-it-posle-30-s-malenkim-rebenkom-i-ipotekoy","summary":"Привет! Меня зовут Юрий Бачевский, и это моя история успеха — как после 30 лет уйти в IT, имея ипотеку и маленького ребенка.","created_at":"2019-11-15T10:26:36.618Z","published_at":"2022-01-24T09:53:03.554Z","cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp"},{"model_name":"BlogPost","id":951,"title":"Как благодаря Хекслету я устроился в EPAM, стал сеньором и уехал в США","slug":"kak-blagodarya-heksletu-ya-ustroilsya-v-epam","summary":"Всем привет! Меня зовут Влад, работаю Senior Test Automation Engineer в компании EPAM в США. Нет, это не начало речи в клубе анонимных автотестеров. Расскажу вам, как Хекслет стал моими вратами в жизнь.","created_at":"2020-08-20T02:52:39.845Z","published_at":"2020-08-28T06:40:13.523Z","cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp"},{"model_name":"BlogPost","id":929,"title":"Как я делал третий проект по профессии «Фронтенд JavaScript» и стал PHP программистом","slug":"kak-ya-delal-tretiy-proekt-po-professii-frontend-javascript-i-stal-php-programmistom","summary":"История в общем-то простая, как у большинства. Наверное, почти каждый, кто учился на курсах программирования, мечтал об интересной работе и большой зарплате, которую обещают красивые лендинги и рекламные баннеры.","created_at":"2020-07-11T11:19:46.747Z","published_at":"2020-07-17T07:10:34.648Z","cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp"}],"category":{"id":3,"name":"Истории успеха","slug":"success","state":"published","created_at":"2016-07-30T12:57:18.308Z"},"mainStackCategory":{"id":2,"name":"Курсы по веб-разработке","slug":"web_development","short_name":"Веб-разработка","order":190,"state":"published","category_slug":"courses_web_development"},"categories":[{"id":6,"name":"Мотивация","slug":"motivation","state":"published","created_at":"2016-10-06T18:31:38.903Z"},{"id":3,"name":"Истории успеха","slug":"success","state":"published","created_at":"2016-07-30T12:57:18.308Z"},{"id":14,"name":"Дневник студента","slug":"student-diary","state":"published","created_at":"2019-02-25T13:27:09.471Z"},{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},{"id":12,"name":"Карьера","slug":"career","state":"published","created_at":"2017-07-21T15:42:21.481Z"}],"relatedLandings":[{"stack":{"id":12,"slug":"frontend","title":"Фронтенд-разработчик","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"finished","order":20,"duration_in_months":10},"id":17,"slug":"frontend","title":"Фронтенд-разработчик","subtitle":"Изучите HTML, CSS, JavaScript и React","subtitle_for_lists":"Изучите HTML, CSS, JavaScript и React","locale":"ru","current":true,"duration_in_months_text":"10 месяцев","stack_slug":"frontend","price_text":"от 6 792 ₽","duration_text":"10 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcyNywicHVyIjoiYmxvYl9pZCJ9fQ==--2d5cbbf5c3b4a73ae4b2c50632305d78f5872e4d/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programmer-rafiki.png"},{"stack":{"id":23,"slug":"js-react-development","title":"React","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":350,"duration_in_months":2},"id":34,"slug":"js-react-developer","title":"React","subtitle":"Навык разрабатывать быстрые и удобные интерфейсы, открывающий доступ к интересным вакансиям в крупных компаниях","subtitle_for_lists":"Освоите React и создание быстрых интерфейсов","locale":"ru","current":true,"duration_in_months_text":"2 месяца","stack_slug":"js-react-development","price_text":"от 3 900 ₽","duration_text":"2 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDA0OSwicHVyIjoiYmxvYl9pZCJ9fQ==--a6531362dd1f3afb65f5b269e1a23113df7171b1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Devices-amico.png"},{"stack":{"id":19,"slug":"layout-designer","title":"Профессиональная верстка","audience":"for_beginners","start_type":"anytime","pricing_model":"purchase","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":1700,"duration_in_months":5},"id":26,"slug":"professional-layout","title":"Профессиональная верстка","subtitle":"Навык адаптивной вёрстки с современными подходами для корректного отображения сайтов на любых устройствах и разрешениях","subtitle_for_lists":"Адаптивная вёрстка для отображения на любых устройствах ","locale":"ru","current":true,"duration_in_months_text":"5 месяцев","stack_slug":"layout-designer","price_text":"от 3 900 ₽","duration_text":"5 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAzNCwicHVyIjoiYmxvYl9pZCJ9fQ==--ba516ea9573bdfcd1d21e2aa0fff8818561828f2/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Typing-bro.png"},{"stack":{"id":52,"slug":"typescript","title":"Typescript","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":200,"duration_in_months":2},"id":92,"slug":"typescript","title":"Typescript","subtitle":"Навык снижать ошибки, упрощать отладку, повышать качество кода и ускорять разработку с автодополнением и типизацией","subtitle_for_lists":"Изучите Typescript и получите навык снижать ошибки, упрощать отладку","locale":"ru","current":true,"duration_in_months_text":"2 месяца","stack_slug":"typescript","price_text":"от 3 900 ₽","duration_text":"2 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcwOSwicHVyIjoiYmxvYl9pZCJ9fQ==--03e50bbd408fef672ad099f7b2a258d80f54ad96/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Hand%20coding-bro.png"},{"stack":{"id":29,"slug":"js-oop","title":"ООП на Javascript","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4250,"duration_in_months":2},"id":46,"slug":"js-oop","title":"ООП на Javascript","subtitle":"Навык глубокого понимания архитектуры и написания чистого кода, позволяющий решать сложные задачи","subtitle_for_lists":"Изучите архитектуру и принципы чистого кода на JS","locale":"ru","current":true,"duration_in_months_text":"2 месяца","stack_slug":"js-oop","price_text":"от 3 900 ₽","duration_text":"2 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAxOSwicHVyIjoiYmxvYl9pZCJ9fQ==--84efd2b6854b7000046e9ce06e6be85d38af5ab8/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/JavaScript%20frameworks-cuate.png"}]},"url":"/blog/posts/mama-ya-inzhener-inzhener-programmist","version":"0b0c6d4ebbd40fd58630a0dd89cc25544ccdf24e","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","author":"Gennadiy Zinchenko","name":"Мама, я инженер! Инженер-программист!","datePublished":"2020-08-26T07:59:10.629Z","headline":"Большая история нашего студента Геннадия Зинченко — как в 31 год правильно изучать программирование, проходить собеседования — успешно и не очень — и наконец-то найти работу фронтенд-разработчика на React Native.","image":"/vite/assets/blog_post-7eTyeLLt.webp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":101}]}</script><div style="--container-size:var(--container-size-lg);margin-top:var(--mantine-spacing-xl);height:100%" class="m_7485cace mantine-Container-root" data-size="lg" data-strategy="block"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"position":1,"@type":"ListItem","item":{"@id":"/blog","name":"Блог Хекслета"}},{"position":2,"@type":"ListItem","item":{"@id":"/blog/categories/success","name":"Истории успеха"}},{"position":3,"@type":"ListItem","item":{"@id":"/blog/posts/mama-ya-inzhener-inzhener-programmist","name":"Мама, я инженер! Инженер-программист!"}}]}</script><div style="margin-bottom:var(--mantine-spacing-xs)" class="m_8b3717df mantine-Breadcrumbs-root"><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/"><div style="color:inherit" class="m_4451eb3a mantine-Center-root"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-home-link "><path d="M20.085 11.085l-8.085 -8.085l-9 9h2v7a2 2 0 0 0 2 2h4.5"></path><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 1.807 1.143"></path><path d="M20 21a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M20 16a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M15 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M21 16l-5 3l5 2"></path></svg></div></a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog">Блог Хекслета</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog/categories/success">Истории успеха</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><p style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:var(--mantine-color-dimmed)" class="mantine-focus-auto m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root" data-size="sm">Мама, я инженер! Инженер-программист!</p></div><style data-mantine-styles="inline">.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}@media(min-width: 36em){.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}}</style><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root __m__-_R_eub_"><style data-mantine-styles="inline">.__m__-_R_deub_{width:100%;}@media(min-width: 36em){.__m__-_R_deub_{width:70%;}}@media(min-width: 75em){.__m__-_R_deub_{width:75%;}}</style><div class="__m__-_R_deub_"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size)" class="m_8a5d1357 mantine-Title-root" data-order="1">Мама, я инженер! Инженер-программист!</h1></div></div></div><div style="position:absolute;top:calc(18.75rem * var(--mantine-scale))" class=""></div><style data-mantine-styles="inline">.__m__-_R_2iub_{--grid-gutter:var(--mantine-spacing-xl);}</style><div class="m_410352e9 mantine-Grid-root __m__-_R_2iub_"><div class="m_dee7bd2f mantine-Grid-inner"><style data-mantine-styles="inline">.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}@media(min-width: 62em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:66.66666666666667%;--col-max-width:66.66666666666667%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_dmiub_"><div style="--stack-gap:var(--mantine-spacing-md);--stack-align:stretch;--stack-justify:flex-start;margin-bottom:var(--mantine-spacing-xl)" class="m_6d731127 mantine-Stack-root"><div class=""><div style="--group-gap:var(--mantine-spacing-xs);--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-xl)" class="m_4081bf90 mantine-Group-root"><button style="--badge-height:var(--badge-height-sm);--badge-padding-x:var(--badge-padding-x-sm);--badge-fz:var(--badge-fz-sm);--badge-bg:var(--mantine-color-default);--badge-color:var(--mantine-color-default-color);--badge-bd:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);cursor:pointer;color:inherit" class="m_347db0ec mantine-Badge-root" data-variant="default" data-size="sm" type="button" aria-label="Фронтенд"><span class="m_5add502a mantine-Badge-label">Фронтенд</span></button></div><div style="--group-gap:calc(0.625rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-sm);color:var(--mantine-color-gray-text)" class="m_4081bf90 mantine-Group-root"><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-inline-end:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root">26 августа 2020 г.</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-clock "><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"></path><path d="M12 7v5l3 3"></path></svg></div>15 минут</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div>101</div></div><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img style="--image-radius:var(--mantine-radius-md);--image-object-fit:cover;width:100%;height:100%" class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" alt="Мама, я инженер! Инженер-программист!"/></div></div><div role="link" tabindex="0" style="cursor:pointer"><button style="display:block;width:100%" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Присоединяйтесь к нашему Telegram-сообществу"><div style="background-color:light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6))" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:auto;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-telegram "><path d="M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4"></path></svg></div>Присоединяйтесь к нашему Telegram-сообществу</div></div></button></div><div style="margin-bottom:var(--mantine-spacing-xl)" class="m_d08caa0 mantine-Typography-root"><p>Привет! Меня зовут Геннадий, мне 31 год, у меня есть жена, маленький ребенок и кот. Недавно я сменил профессию и теперь занимаюсь фронтенд-разработкой. На пути к новой специализации мне придавали сил поддержка супруги и истории успеха других студентов, поэтому я чувствую моральный долг поделиться своей.</p>
<p>Текст будет длинный, так как я преследовал две цели:</p>
<ol>
<li>Честно рассказать, что просто не будет, но сложности преодолимы.</li>
<li>Дать максимум пользы, чтобы помочь будущим коллегам. Не пренебрегайте ссылками в этой статье. Хотелось создать самую полезную «историю успеха» в блоге Хекслета. Обязательно напишите, получилось ли у меня.</li>
</ol>
<p>Заварите чаёк, кофеек или какао, приступим...</p>
<style data-mantine-styles="inline">.__m__-_R_9derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_9derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_9derddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/frontend?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">10 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Фронтенд-разработчик</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите HTML, CSS, JavaScript и React</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcyNywicHVyIjoiYmxvYl9pZCJ9fQ==--2d5cbbf5c3b4a73ae4b2c50632305d78f5872e4d/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programmer-rafiki.png" alt="Фронтенд-разработчик" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 6 792 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/js-react-developer?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">2 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">React</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Освоите React и создание быстрых интерфейсов</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDA0OSwicHVyIjoiYmxvYl9pZCJ9fQ==--a6531362dd1f3afb65f5b269e1a23113df7171b1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Devices-amico.png" alt="React" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/professional-layout?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">5 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Профессиональная верстка</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Адаптивная вёрстка для отображения на любых устройствах </p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAzNCwicHVyIjoiYmxvYl9pZCJ9fQ==--ba516ea9573bdfcd1d21e2aa0fff8818561828f2/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Typing-bro.png" alt="Профессиональная верстка" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/typescript?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">2 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Typescript</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите Typescript и получите навык снижать ошибки, упрощать отладку</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcwOSwicHVyIjoiYmxvYl9pZCJ9fQ==--03e50bbd408fef672ad099f7b2a258d80f54ad96/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Hand%20coding-bro.png" alt="Typescript" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/js-oop?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">2 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">ООП на Javascript</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите архитектуру и принципы чистого кода на JS</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAxOSwicHVyIjoiYmxvYl9pZCJ9fQ==--84efd2b6854b7000046e9ce06e6be85d38af5ab8/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/JavaScript%20frameworks-cuate.png" alt="ООП на Javascript" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Каталог</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Полный список доступных курсов по разным направлениям</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div>
<h2 id="heading-2-1">Содержание</h2>
<ul>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-2">Поиск себя</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-3">Войти в IT</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-4">Окружение</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-5">Обучение</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-6">Хекслет</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-7">Рекомендации по обучению</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-8">Какой язык учить?</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-9">Поставьте цель</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-10">Про работу</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-11">Стажировка</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-12">Поиск работы</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-13">Собеседования</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-19">Первые дни на работе</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-20">Вместо заключения</a></li>
</ul>
<h2 id="heading-2-2">Поиск себя</h2>
<p>Я работал руководителем отдела рекламы, параллельно совмещая обязанности с курированием технической стороны работы интернет-магазина. Деятельность эта мне сильно приелась — думал, что дело в компании, где я работал уже больше 5 лет. Я ходил на собеседования, но в глубине души понимал, что буду заниматься тем же самым, но в другом месте.</p>
<p>На волне трендов решил прокачиваться в направлении SMM — купил курс «Нетологии», отдавал ему всё свободное время. Успешно закончил, был в рядах отличников, но дальше дело не пошло. Да простят меня специалисты по социальным сетям, но я так и не смог почувствовать важности и нужности своей деятельности, а поэтому и не смог «продать» себя ни одному заказчику. Деньги и время потрачены впустую. Это важный момент, который ещё всплывет.
Кстати, параллельно у «Нетологии» проходил бесплатный курс о смене профессии и выборе работы в digital. Здесь дали <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.typeplanet.ru/test" rel="noopener noreferrer" target="_blank">ссылку на тест</a> по определению типа личности и судя по результатам, мне нужно было заниматься аналитикой или программированием. Какая чушь, подумал я — это же вообще не для меня, и пошел дальше изучать SMM.
<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://yadi.sk/i/UKHsNyfZFWf67w" rel="noopener noreferrer" target="_blank">По ссылке</a> часть презентации с предполагаемыми профессиями на базе результатов теста.</p>
<p>Я продолжал работать на своей прежней работе, чувствуя, что увяз, параллельно достаточно пассивно изучал рынок труда, но радикальных действий не предпринимал. Жизнь сама решила дать мне толчок — в компании начали происходить серьёзные изменения, которые привели к тому, что мне предложили работать на новых условиях — на них я соглашаться не стал бы даже в бреду. Я покинул компанию и ушел в никуда.</p>
<h2 id="heading-2-3">Войти в IT</h2>
<p>Через две недели я нашел работу в роли проджект-менеджера в стартапе. Идея казалась мне очень крутой, я ей загорелся. По итогам собеседования — в качестве испытания — мне предложили изучить существующие наработки и предложить улучшения. К делу я подошёл с огнем в глазах и прислал документ на десяток листов, мне сделали предложение о работе.</p>
<p>Круто, я проджект-менеджер в IT, дальше только вперёд. Перспективы казались мне самыми радужными. Команду формировал самостоятельно. В подчинении у меня был один программист и несколько менеджеров по работе с клиентами. Чтобы ставить адекватные задачи разработчику, я начал изучать релевантные темы. Я раньше уже начинал обучался вёрстке в HTML Academy, когда имел дело с интернет-магазином, но всё забылось — максимум, что я использовал, это теги для разметки страниц с контентом. Читал статьи, проходил интерактивные курсы и не заметил, как ушел в тему с головой. На этот момент обучение веб-разработке было скорее хобби, чем намерением сменить профессию, но интерес постепенно подогревался, хотелось разобраться, как всё устроено.</p>
<p>Работа в стартапе полна сюрпризов, чем дольше я работал, тем больше мои представления расходились с действительностью. Направление развития изменилось и ушло в сторону от тех идей, которые были мне близки. В совокупности с другими факторами стало понятно, что эта работа носит временный характер. Появилась дилемма - снова подбирать менеджерскую позицию или перейти в ряды разработчиков и развиваться в новом направлении. Второе показалось более интересным и перспективным, я решил заняться обучением плотнее.</p>
<h2 id="heading-2-4">Окружение</h2>
<p>Среди моего ближайшего окружения нет ни разработчиков, ни тестировщиков, ни кого-либо с похожей специализацией. Чтобы погружаться в IT, соответствующую атмосферу я создавал виртуально. Для этого слушал подкасты, смотрел YouTube-блоги, подписывался на корпоративные и личные аккаунты разработчиков в Твиттере
<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://twitter.com/gennadiy_tw" rel="noopener noreferrer" target="_blank">Подружиться со мной в Твиттере</a>,
<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/youtube-pryachet-ot-vas-poleznoe-video" rel="noopener noreferrer" target="_blank">Мои рекомендации YouTube-каналов</a>,
<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/it-v-naushnikah" rel="noopener noreferrer" target="_blank">Мои рекомендации подкасты</a>.</p>
<h2 id="heading-2-5">Обучение</h2>
<p>Изучение веб-разработки я начал с курсов HTML Academy. Они отлично обучают вёрстке, игровая механика курсов просто прекрасна. При этом все эти забавы с котиками и енотами навели меня на мысль, что курсы слишком размазаны - слишком много времени уделялось каким-то мелочам, словно это сделано для объёма, а не для пользы. Кажется, в HTML Academy я больше играл в разработчика, чем обучался.</p>
<p>В транспорте, или когда выдавалась свободная минута, я занимался в различных приложениях (Sololearn и пр.) на смартфоне — от них толку немного, но всё же это полезнее, чем залипать в игры. Позже я взял курс на Udemy, где обещали сделать из меня разработчика с нуля. Оказалось, что честнее было бы говорить про верстальщика, чем про разработчика. Например, нам только в конце курса показали jQuery и я не понял ровно ничего, просто перепечатывал с экрана.</p>
<h2 id="heading-2-6">Хекслет</h2>
<p>Знакомство с Хекслетом состоялось совершенно случайно. Это был ретвит статьи «Тинькофф Журнала» с образовательными площадками. Помню первые ощущения от знакомства с сайтом - это что-то несерьёзное, какие-то детские рисунки, похоже, сделано на скорую руку. Хекслет был подключен к программе кешбэк от «Тинькофф», видимо, поэтому школа оказалась в подборке. В моем опыте была попытка заключить с банком контракт на участие в программе кешбэка, и я знаю, что всех подряд туда не берут. За первые блоки курсов денег не просили, поэтому я решил задержаться подольше. Помню, как легко и доступно объяснили всё в первых уроках, превосходная подача для постигающих азы. Где-то там же, в начале, новичкам рекомендуют отправиться на <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.code-basics.com/" rel="noopener noreferrer" target="_blank">Code-Basics</a>. Так я и сделал, но не без доли иронии — ведь обучение начинается с урока, где нужно написать фразу, которая хорошо ложится в контекст - <em>'You know nothing, Jon Snow'</em>.</p>
<p>Отсюда началось моё перестроение. Самыми сложными для меня были базовые курсы — понять концепции и конструкции, запомнить синтаксис, всё эти скобки и стрелки, постоянно возникающие ошибки в коде. Сначала говорят, что компьютер последовательно выполняет операции, а потом оказывается, что есть циклы, рекурсия, которые исполняют код нелинейно.</p>
<blockquote>
<p>Был опыт, когда я 4 часа мучился со слайдером и не мог понять, почему ничего не работает — оказалось, что я допустил опечатку в атрибуте тега script, подключая js файл к странице. Подобные штуки нельзя перескочить, эти ошибки надо пережить.</p>
</blockquote>
<p>Помню, как закипала голова от перегрузки новой информацией. Проснулся ночью, дочка зовёт и просит подогреть ей молочка. Иду на кухню, а в голове:</p>
<ol>
<li>Надо написать функцию, которая подогреет молоко;</li>
<li>Я понятия не имею, как это сделать</li>
<li>Теплое молоко нужно прямо сейчас</li>
<li>Что же делать?!</li>
</ol>
<p>В Хекслете понравилась сложность, чувствовалось, как за тяжестью заданий скрывается рост знаний. Помню, как переполняло чувство гордости, когда в комментариях на Code-Basics нашел ошибку у одного студента, написал ему. Не имеет значения, что мой ответ был через месяц. Я думал, как же круто, кажется, я начинаю разбираться, я нашел потенциальную проблему в чужом коде.</p>
<p>С обучением по программированию я притирался несколько месяцев. Не было уверенности, что это моё, что всё не закончится, как с другими курсами, потраченным временем и деньгами. В цели стать программистом я утвердился в начале января, после этого моё обучение начало приобретать системный характер. Посвящал образованию максимум времени, которое мог дать. У нас очень активная дочка, поэтому заниматься можно только, когда она спит. Здесь особенно выбирать не приходится, занимайся сейчас, другого времени не будет. Пока укладывал, читал под кроватью теорию на смартфоне, смотрел видео. Когда засыпала — наступало время практики на компьютере. Сил придавали истории успеха других студентов и <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/learn-to-program-at-30" rel="noopener noreferrer" target="_blank">статья, о смене профессии</a>, её перечитывал несколько раз и дал почитать жене.</p>
<h2 id="heading-2-7">Рекомендации по обучению</h2>
<p><strong>Начните пользоваться дневником студента, фиксируйте свой прогресс.</strong> Я делал это в формате ежемесячных отчётов. Потом перешёл на формат ежедневных отчётов в Твиттере с хештегом #100DaysOfCode, который активно используется в сообществе.</p>
<p><strong>Все советуют заниматься каждый день, но я рекомендую вам не забывать про отдых</strong>. Если усердно занимаетесь, сделайте себе выходной день — это только повысит вашу продуктивность.</p>
<p><strong>Не пренебрегайте разделом обсуждений</strong>, не только просите помощи, но и давайте её другим. Это пойдет вам на пользу. Про вопросы и ответы я писал <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/voprosy-i-otvety-na-hekslete" rel="noopener noreferrer" target="_blank">отдельный пост в дневнике</a>. Они помогут вам прокачивать навыки разбора чужого кода, а на работе, по большей части, вам нужно будет код читать, а не писать.</p>
<p><strong>Усложняйте.</strong> Если делаете какой-то проект, подумайте, как можно его улучшить и что добавить. Мои самые любимые проекты — те, которые я делал без технического задания. Это сложно, но со сложностью приходит рост компетенции.</p>
<h2 id="heading-2-8">Какой язык учить?</h2>
<p>Учите английский, серьезно. Абсолютное большинство материалов, с которыми я сталкиваюсь в работе — на английском языке.
Я раньше ходил на курсы, брал разговорные уроки онлайн, но без постоянной практики всё забывается, чувствую, что моего уровня недостаточно и навыки нужно подтягивать.</p>
<p>Вакансии с требованием знания английского языка, как правило, привлекательнее, не только в IT. Для перевода посоветую <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.deepl.com/ru/translator" rel="noopener noreferrer" target="_blank">сервис DeepL</a>, его качество работы с текстом мне нравится больше чем у Google Translate. Для Windows и MacOS есть приложение, которое переведет выделенный текст по нажатию горячих клавиш.</p>
<h2 id="heading-2-9">Поставьте цель</h2>
<p>Зафиксируйте, чего конкретно и в какие сроки вы хотите добиться. Разбейте на мелкие задачи, чтобы проще было отслеживать, продвигаетесь ли вы по этому пути. Например, «до конца сентября завершить первый блок курсов из профессии» гораздо лучше и измеримые, чем «изучать программирование не меньше 10 часов в неделю». Если не знаете, погуглите «постановка цели по SMART».</p>
<p>Свою цель я чётко расписал и <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/stat-programmistom-postanovka-tseli" rel="noopener noreferrer" target="_blank">декларировал в дневнике студента</a>. Честно говоря, с учётом нынешних условий, я думал, что дедлайн сдвинется на месяц. Ирония в том, что я прописывал цель найти работу до конца июля, а получил оффер во второй половине дня, 31 июля.</p>
<h2 id="heading-2-10">Про работу</h2>
<p>В конце марта я потерял работу, наш стартап прикрыли за два дня — карантинные меры сильно повлияли на бизнес инвесторов, а до окупаемости нашему сервису было далеко. Говорят, чем раньше начнёте ходить на собеседования, тем лучше, поэтому я решил поискать работу программистом, хотя понимал, что не готов. Кажется, я отправил около сотни откликов, релевантных и нет. Иногда, мне приходили тестовые задания, выполнение которых было мне не по зубам. У меня не состоялось ни одного собеседования. На эту тему можете почитать мой пост <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/istoriya-neuspeha-poisk-pervoy-raboty" rel="noopener noreferrer" target="_blank">История НЕуспеха</a>. После этой записи, пара человек отписались мне, что находятся в похожей ситуации, пожелали удачи и сказали что будут ждать мою историю успеха.</p>
<p>Мы с женой обсудили и решили, что нужно доучиться и искать работу программистом. Она у меня настоящий герой, без её поддержки у меня ничего бы не вышло. Мы быстро перегруппировались — жена вышла из декрета на работу, а я остался с ребенком, так как в детский сад нам ещё было рано.</p>
<p>Я тратил на обучение время и деньги, но не получал никакой отдачи. Сомнения разъездали изнутри. У меня были попытки заработать на фрилансе, но по моим ощущениям, с нулевым профилем и опытом, найти заказы там не легче, чем устроиться на работу. И гоняться за ними нужно постоянно. Я понял, что лучше сконцентрироваться на обучении, чем растрачивать время, которого не так много, на фриланс-биржах.</p>
<p>Тогда же я пробовался устроиться ментором в Хекслет. Вероятно, по уровню не дотянул, и проекты в профессии я не проходил, хоть и исключительно из-за финансовой стороны, а их наличие было желательным. Другие мои проекты были мелковаты. Однако собеседование не прошло бесполезно, ментор Сергей Карпук в ходе беседы подбил меня установить Linux. Что я сделал через несколько дней, дальше занимался только на Ubuntu. Этот опыт мне пригодился, в первый рабочий день мне выдали ноутбук с этой ОС, а ещё пригодились навыки работы с терминалом, для сброса пароля, который никому не удалось вспомнить.</p>
<h2 id="heading-2-11">Стажировка</h2>
<p>В конце июня меня догнала реклама в социальных сетях с предложением пройти стажировку. Формат удаленный со свободным графиком — всё как мне подходит. Я решил попробовать свои силы, но знание фреймворков там значилось как желательное. В тестовом задании требовалось разработать приложение с местным прогнозом погоды с использованием фреймворка на выбор и мобильного приложения на React Native. Справедливости ради, надо сказать, что к тестовому прилагалось множество материалов, которые помогут в выполнении. Срок был достаточный и я решил попробовать свои силы.</p>
<p>Это был хороший челлендж, а когда запустил своё приложении на собственном смартфоне, то испытал вау-эффект. Сайты-сайтами, но это казалось уже новым уровнем.</p>
<p>Через неделю позвонили и пригласили на стажировку. Выяснилось, что конкурс был 5 человек на место - так я положил себе в копилочку первое профессиональное достижение. Ещё оказалось, что стажировка проходит в две итерации по 6 недель и никак не оплачивается. Возможно, кого-то позовут на работу по итогам, но пригласят ли и на каких условиях - совершенно непонятно. Я воспринял это как возможность поучиться бесплатно, тем более проект интересный - сервис каршеринга на ReactJS. Однако в намеченные планы найти работу до конца июля я не попадал, поэтому одновременно со стажировкой продолжил искать работу.</p>
<h2 id="heading-2-12">Поиск работы</h2>
<p>Резюме - один из главных проектов на пути к работе. Я прочитал множество материалов, все рекомендации примерно схожи. Благодаря Twitter, <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://catwomenko.ru/2019/05/26/headhunter_ru-inside/" rel="noopener noreferrer" target="_blank">нашлась статья</a> с подробным разбором процесса изучения резюме и особенностей интерфейса hh.ru со стороны hr-специалиста. Среди прочего, автор рекомендует указывать учебный опыт в блоке с прошлыми местами работы, ведь этот раздел изучают в первую очередь. Стажировку я тоже указал в резюме. Не знаю, добавила ли она мне очков, до этого я не занимался активным поиском, но уверенности точно прибавила.</p>
<p>В общем, я навел порядок на GitHub, доработал резюме и включился в активный поиск работы. Искал, в основном на Headhunter, на «Хабр Карьере» предложений для Краснодара сильно меньше и они, как правило, есть на hh.ru.</p>
<p>Ещё до этого я сделал себе простой сайт-портфолио, чтобы можно было показать проекты в одном месте и в комфортном виде, ведь сначала для устройства на работу нужно пройти через HR, а они ваш код оценивать не будут. В этот раз дело пошло интереснее, откликов с предложением пройти ТЗ было больше, приходилось выбирать, так как всё реализовать было бы невозможно. Я сразу решил, что не пойду в компанию единственным программистом или одним в своей специализации — это сильно замедлит мой профессиональный рост.</p>
<blockquote>
<p>Лайфхак: предложите интервьюеру вместо ТЗ посмотреть ваш проект схожей сложности или выше. Не все согласятся, но те, кто согласится, сэкономит вам время, которое вы можете уделить на другое задание. Если вам отвечают шаблонной фразой и отправляют сделать тестовое, попробуйте выйти на диалог, задайте уточняющий вопрос. Если ответом вам будет тишина, возможно, на ваше тестовое реакция будет аналогичная.</p>
</blockquote>
<p>Изначально у меня в заголовке резюме было указано, что я Junior, но вакансий, где указано, что ищут именно джунов — очень мало. Я пришел к тому, что грейд надо убрать, ни в одной из вакансий, по которым я собеседовался, уровень не указывали.</p>
<p>Я бы не рекомендовал изучать неизвестный фреймворк ради тестового в компании, с которыми у вас даже предварительного общения не было. Усилий от вас потребуется больше, а заинтересует ли вас эта компания — ещё непонятно. В целом, общая рекомендация в поиске такая: старайтесь больше остальных. Не все делают личные сайты, а вы сделайте. Далеко не каждый пишет сопроводительное письмо, а вы напишите, ещё и по имени обратитесь, если оно в вакансии указано.</p>
<h2 id="heading-2-13">Собеседования</h2>
<p>Будьте готовы к аргументированному ответу на вопрос о смене профессии, если вы не расскажете это в части «о себе», вас обязательно об этом спросят.</p>
<h3 id="heading-3-14">Компания № 1</h3>
<p>После короткого общения с HR, мы договорились о техническом собеседовании с разработчиком. Я, честно говоря, ждал своего первого провала, который, обязательно должен случиться — ведь своё первое интервью именно так все и описывают. Предстояло кодить в прямом эфире.</p>
<p>Задачи были простые: переверните строку и напишите функцию, которая вернёт массив только с нечётным числами. Была ещё задача с замыканием, где использовался устаревший синтаксис, мне нужно было исправить функцию, чтобы получить заданный результат. Тут я поплыл, решил верно, но где-то не доработал. Сам интервьюер не смог допилить с ходу. Такая задача ради задачи, кто сейчас использует var в JavaScript, кроме трансляторов? В итоге я понял, где ошибка и удалось выйти на нужный результат, но чувство, что провалился, меня не покидало.</p>
<p>Через час мне предложили ещё тестовое, сверстать лендинг с простыми элементами. Довольно странно, я вам репозитории с сайтом на React показывал, а здесь базовая верстка без интерактивных элементов нужна. Здесь ещё лайфхак, я до него позже додумался, но вы, если придется, попробуйте. Договоритесь о том, чтобы не верстать всё, а 1-2 блока на выбор интервьюера, этого будет достаточно, чтобы понять ваши возможности.</p>
<p>Я сверстал и ждал обратной связи. После выходных со мной связались и предложили работу, но с ЗП ниже, чем я ожидал.
Тут началась волна сомнений и размышлений. Что если других предложений не будет? Что если я сейчас начну тянуть, а нам всем объявят вторую волну карантина и рынок труда опять уйдет в спячку? Я попросил очной встречи с руководством, так как всё общение было удаленным, а мне хотелось посмотреть на офис и с командой познакомиться. В это время я находился за городом, в итоге, всё общение растянулось на пару недель. В офисе выяснилось, что готового рабочего места нет, компьютеры отправили, надо ждать или приходить со своим. Сам офис в Краснодаре работает меньше месяца, основной в другом городе. Первое время мне предстояло заниматься поддержкой кучи одностраничников, а задач с React нужно было дождаться, сначала базовые навыки проявить. В общем, я сильно сомневался, параллельно проходили собеседования с другими, а с ответом здесь я оттягивал как мог.</p>
<h3 id="heading-3-15">Компания № 2</h3>
<p>Собеседование в другую компанию было назначено через 2 часа после технического интервью в компанию № 1. Тут одобрили мои репозитории и тестовое я прошел заочно. Общались с HR, видно, что она собеседников щелкает, как орехи. Сказала, что у нас полчаса, если буду увлекаться, она будет останавливать. Сюрприз — во время разговора к нам в любой момент подключится native english speaker, чтобы оценить мой уровень английского языка. Это было больше похоже на стресс-интервью, таких требований в вакансии не значилось, и меня об этом не предупреждали. У меня в опыте было интервью на английском, но я к нему готовился несколько дней, а тут неожиданность. В итоге моё волнение умножилось, ведь я ещё и от технического собеседования не успел отойти. Конечно, разговаривал я отвратительно, да и с HR у меня не клеилось. Несколько раз мне сказали, что это лучшее предложение на рынке, да ещё в форме, «ну вы же знаете». Сама фраза была построена так, что после неё я должен похвалить компанию, мне такие манипуляции не нравятся, даже если они используются неосознанно. Договорились об обратной связи в рамках недели.</p>
<p>После первого опыта собеседований, ещё и двух в один день, мне немного трясло — казалось, я провалил всё, что можно: английский, знание JS, ещё и общаюсь как-то неправильно. Через день пришел отказ, но спросили, могут ли добавить в базу, если понадобится дополнительный персонал. Мне кажется, такие фразы больше для этикета, чем для реальных обещаний.</p>
<h3 id="heading-3-16">Компания № 3</h3>
<p>Тут выстрелил локальный чат в телеграме, я закинул туда резюме и через час получил два приглашения на удаленное интервью. В компанию номер 3 и номер 4. Потом, с запозданием, приходило ещё несколько откликов. Локальный чат сработал не хуже, чем hh.ru.</p>
<p>Компания 4, назначила собеседование заранее, общаться предстояло почти через неделю. В компании номер 3 договорились на видео звонок. У меня был подготовлен список вопросов для потенциального работодателя.</p>
<blockquote>
<p>Собеседование — это двухстороннее общение, вам тоже нужно оценить компанию, иначе есть шанс ошибиться.</p>
</blockquote>
<p>Вот мой общий список, который может дополняться уточняющими вопросами для конкретного работодателя:</p>
<ol>
<li>Сколько человек в команде? Сколько занимается фронтендом?</li>
<li>Сколько сотрудников сейчас набираете?</li>
<li>Что для вас важно в сотруднике?</li>
<li>Вы занимаетесь обучением сотрудников?</li>
<li>Есть ли система повышения? За что последний раз кого-либо повысили?</li>
<li>Как происходит погружение в работу?</li>
<li>Какие первые задачи я получу?</li>
<li>Как долго вы работаете в компании? Что лично вам больше всего нравится в компании?</li>
<li>Какие дальнейшие этапы собеседования?</li>
<li>Какой длительности испытательный срок? По каким критериям оценивается, что срок прошел успешно?</li>
<li>График, оформление, зарплата.</li>
</ol>
<p>Интервьюер начал с вступительной речи о компании и неожиданно закрыл 70% моих вопросов, обычно все сразу переходят к опросу претендента. Это было собеседование целиком и полностью на софтскиллах, хардскиллы упоминались, но, лишь в формате беседы. Поинтересовались уровнем английского, но на разговор на нем не переходили. Предполагалась разработка на React Native с применением TypeScript. Мой уровень знаний TS - часовая лекция на YouTube в двойном ускорении. На Native — в копилке один проект для отбора на стажировку. Спросили про планы, как хотелось бы развиваться. Я сказал, что точно хочу пощупать backend, как минимум на NodeJS, а вообще работа с приложениями, потенциально, сильно интереснее, чем с сайтами.</p>
<p>Команда небольшая, проекты интересные, оказалось, что одним из них наша семья и знакомые активно пользуются. Договорились об обратной связи до конца следующего дня, никаких тестовых не требовали. Вспомнил, что на интервью говорили про Хекслет, отправил в догонку свой профиль студента. Мне ответили, что уже посмотрели его, 20 минут назад. Смело подкрепляйте такие ссылки к резюме, не ограничивайтесь GitHub-профилем. Работа меня заинтересовала, но загадывать не стал — TypeScript до этого я не использовал, да и c React Native работал только один раз. На руках был «сомнительный» оффер и два запланированных собеседования.</p>
<h3 id="heading-3-17">Компания № 4</h3>
<p>Назначен видеозвонок после выходных, вероятно, с последующим тестовым заданием. Пока ждёт.</p>
<h3 id="heading-3-18">Компания № 5</h3>
<p>Пришло приглашение с hh — вакансия в продуктовой компании, на которую откликался пару недель назад. Пригласили в офис, на встрече руководитель спрашивал, учил ли что-то кроме JS, какие-то сопутствующие темы. Я ответил, что проходил курсы по СИКП, программировал на парах, списках, немного на LISP и, вообще, на Хекслете разбирают полиморфизм до того, как дают объект в JS. Что правда, но в рамках прошлой программы.</p>
<p><strong>Тут надо сделать отступление.</strong></p>
<p>Когда искали в стартап разработчика, знакомый собственников накидал технические вопросы для отсева кандидатов по телефону. Последний вопрос был бонусный, с примечанием «чтобы узнать ооочень крутого кандидата». На этот вопрос практически никто не отвечал. На интервью звали и без бонусного ответа. Вопрос: что такое полиморфизм? Собственно, поэтому этот термин у меня в голове засел плотно.</p>
<p><strong>Конец отступления</strong></p>
<p>Также меня спрашивали про сложность алгоритмов, какие сортировки знаю и могу ли описать, как они работают. Попросили нарисовать графики алгоритмов различной сложности. Здесь очень пригодилась книга <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.ozon.ru/context/detail/id/139296295/" rel="noopener noreferrer" target="_blank">«Грокаем алгоритмы»</a>, которая доступно всё объясняет и вы легко ответите на подобные вопросы. По итогам общения договорились о тестовом задании с последующим разбором.</p>
<p>После собеседования поехал на знакомство с коллективом и офисом компании № 1. Знакомство не прибавило мне уверенности в том, что нужно работать здесь, но долго тянуть было нельзя, а последующие собеседования ещё непонятно к чему приведут. Были абсолютно понятные мысли, что надо хвататься, получить первый опыт, пока снова всех на карантин не отправили. Была пятница, решили, что дам обратную связь после выходных. Я отпустил мысли о работе и отправился с семьёй на прогулку.</p>
<p>Около 17</p><div></div> мне прилетает оффер из компании № 3 на позицию разработчика React Native с опциональной работой с ReactJS/NodeJS. На календаре 31 июля - дедлайн моей цели. Я согласился, отказался от первого оффера, ТЗ в компании № 5, будущего собеседования в компании № 4, и уже в понедельник вышел на работу в офис.<p></p>
<p><strong>Мама, я инженер! Инженер-программист!</strong></p>
<h2 id="heading-2-19">Первые дни на работе</h2>
<p>Моей первой задачей было настроить рабочее окружение на ноутбуке с Ubuntu. Опыт работы с системой мне очень пригодился.</p>
<p>Моя вторая задача: оплатить подписку на Хекслет с корпоративной карты, чтобы вспомнить некоторые темы, закрыть пробелы — я не прошел профессию полностью, сейчас закончил React, начал Redux. Планирую и дальше заниматься, проработать backend с NodeJS.</p>
<p>Сейчас, по большей части, я читаю чужой код и занимаюсь доработками небольшой сложности. Мне всё настолько нравится, что так и жду, что где-то подвох.</p>
<p>После двух недель работы передали MacBook другого разработчика, а ей купили новый. Для эмулятора iOS нужен XCode, тут без вариантов, ребята из Apple замкнули всё на себе. К ноутбуку попросили выбрать новый рюкзак, мышь, наушники и др. аксессуары. Посмотрели на заказ и сказали, что бюджет есть, выбери мышку « поинтереснее».</p>
<p><em>Да, блин, это вообще законно, так баловать людей на испытательном сроке?!</em></p>
<p>Стажировку я забросил, думал, вытяну работу над проектом ради образования, но ничего не вышло. Собирался заниматься по вечерам. Разум включил защитный механизм от перегрузки. Первую неделю, укладывал дочку спать, а потом неожиданно обнаруживал себя спящим на полу в детской. В дороге я обычно читаю, даже нашёл хорошую книгу по TypeScript — «Эффективный TypeScript», но изучать её получается только утром, вечером голова уже не воспринимает информацию. Надо подождать, пока разум перестроится к новому уровню интеллектуальной нагрузки.</p>
<p>React Native изучаю по документации, проходил <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.youtube.com/watch?v=dI1NLlGoX8w" rel="noopener noreferrer" target="_blank">экспресс курс на YouTube Владилена Минина</a>, чтобы подготовиться к стажировке — в общем его структура повторяет React, но есть свои особенности с компонентами, стилями, рабочим окружением. TypeScript сейчас изучаю по книге, плюс документация. Он не глобально отличается от JS, скорее выглядит как надстройка над ним. Поэтому, когда знаешь JS, решать базовые задачи с применением TypeScript можно довольно быстро. Сейчас в целом всё обучение отталкивается от рабочих задач.</p>
<p>Пока что ощущаю нехватку знаний по работе с Git — базовых команд, которые я знал до устройства на работу, явно не хватает. Сейчас наверстываю. В целом, все проблемы начинающего — в отсутствии необходимого опыта. В работе возникают такие задачи, которых ни один курс не предусмотрит.</p>
<style data-mantine-styles="inline">.__m__-_R_5uderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:80%;}@media(min-width: 36em){.__m__-_R_5uderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_5uderddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/kak-gumanitariyu-popast-v-it-posle-30-s-malenkim-rebenkom-i-ipotekoy"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" loading="lazy" alt="Как гуманитарию попасть в IT после 30 с маленьким ребенком и ипотекой"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Как гуманитарию попасть в IT после 30 с маленьким ребенком и ипотекой</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Привет! Меня зовут Юрий Бачевский, и это моя история успеха — как после 30 лет уйти в IT, имея ип...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">24 января 2022 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/kak-blagodarya-heksletu-ya-ustroilsya-v-epam"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" loading="lazy" alt="Как благодаря Хекслету я устроился в EPAM, стал сеньором и уехал в США"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Как благодаря Хекслету я устроился в EPAM, стал сеньором и уехал в США</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Всем привет! Меня зовут Влад, работаю Senior Test Automation Engineer в компании EPAM в США. Нет,...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">28 августа 2020 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/kak-ya-delal-tretiy-proekt-po-professii-frontend-javascript-i-stal-php-programmistom"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" loading="lazy" alt="Как я делал третий проект по профессии «Фронтенд JavaScript» и стал PHP программистом"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Как я делал третий проект по профессии «Фронтенд JavaScript» и стал PHP программистом</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">История в общем-то простая, как у большинства. Наверное, почти каждый, кто учился на курсах прогр...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">17 июля 2020 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div></div></div></div>
<h2 id="heading-2-20">Вместо заключения</h2>
<p>Спасибо жене за поддержку, без неё я бы этот путь не вытянул. Особенно тяжело было получать отказы как из пулемета. Помогала мысль, что все вакансии на рынке мне не нужны, нужна одна, которая пока не нашлась.</p>
<blockquote>
<p>В программировании я нашел сочетание всех увлечений: технологии, бесконечное образование, английский, а ещё за это мне платят - идеальный набор.</p>
</blockquote>
<p>Успехов всем желающим сменить специализацию!
Буду рад обратной связи и любым комментариям по моей истории.
<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://twitter.com/gennadiy_tw" rel="noopener noreferrer" target="_blank">Приходите дружить в Твиттер!</a>
Удачи, сил и упорства всем! Всё получится, если вы действительно этого хотите.</p></div><div class=""><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-user "><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0"></path><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path></svg></div><p style="margin-inline-end:var(--mantine-spacing-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Gennadiy Zinchenko</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">6 лет назад</p></div><div style="align-items:center" class="m_8bffd616 mantine-Flex-root __m__-_R_5dirddmiub_"><a style="display:inline-flex" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/mama-ya-inzhener-inzhener-programmist/votes"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div></a><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">101</p></div></div></div><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding:var(--mantine-spacing-xl)" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Читайте также:</p><ul style="margin-inline-start:var(--mantine-spacing-lg)" class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/kak-gumanitariyu-popast-v-it-posle-30-s-malenkim-rebenkom-i-ipotekoy">Как гуманитарию попасть в IT после 30 с маленьким ребенком и ипотекой</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/kak-blagodarya-heksletu-ya-ustroilsya-v-epam">Как благодаря Хекслету я устроился в EPAM, стал сеньором и уехал в США</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/kak-ya-delal-tretiy-proekt-po-professii-frontend-javascript-i-stal-php-programmistom">Как я делал третий проект по профессии «Фронтенд JavaScript» и стал PHP программистом</a></span></div></li></ul></div><div style="margin-block:var(--mantine-spacing-xl)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div></div><div></div></div><style data-mantine-styles="inline">.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}@media(min-width: 62em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:33.333333333333336%;--col-max-width:33.333333333333336%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_lmiub_ mantine-visible-from-md"><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-bottom:var(--mantine-spacing-xl);padding:var(--mantine-spacing-xl);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="margin-bottom:var(--mantine-spacing-md)" class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Категории</p></div><ul class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Мотивация">Мотивация</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Истории успеха">Истории успеха</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Дневник студента">Дневник студента</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Код">Код</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Карьера">Карьера</button></span></div></li></ul></div><div style="justify-content:end;margin-top:0rem;position:sticky;top:calc(5rem * var(--mantine-scale))" class="m_8bffd616 mantine-Flex-root __m__-_R_5dlmiub_"><div tabindex="0" style="cursor:pointer"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses_web_development?promo_name=program_category&promo_position=blog_post&promo_creative=card&promo_type=card"><div style="background-color:var(--mantine-color-default);border:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);padding-inline:var(--mantine-spacing-xl);padding-top:var(--mantine-spacing-xl);padding-bottom:var(--mantine-spacing-xs);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Курсы по веб-разработке</p></div><img class="m_9e117634 mantine-Image-root" src="/vite/assets/development-BVihs_d5.png"/><p style="margin-bottom:var(--mantine-spacing-xs);text-align:right" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></a></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-CdBlNCiQ.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>