Всем привет! Меня зовут Кирилл, мне 37 лет. Я родился в Казахстане, в Алма-Ате, а после школы переехал в Москву. Когда я только начинал учиться на Хекслете, я с большим интересом и надеждой читал истории успеха других ребят — мечтал, что когда-нибудь обязательно напишу свою. И вот, кажется, это время настало!
- Страх перед программированием и сомнительные решения
- Внутренний диалог и решение все же пойти в IT
- Учеба на Хекслете и проекты
- Дополнительные источники знаний и опенсорс
- Поиск работы и первый оффер в крупной компании
- Что нужно знать начинающим программистам
Профиль Кирилла на Хекслете со всеми пройденными курсами можно посмотреть здесь, код выполненных проектов — на GitHub
В IT я пришел в достаточно зрелом возрасте, но компьютеры мне нравились с раннего детства. Эта любовь началась еще до школы, лет в шесть, с книжки «А я был в компьютерном городе», которую я перечитал не один десяток раз.
В первом классе я ходил на кружок информатики — там я вживую познакомился с компьютерами и программированием. Помню черно-белые мониторы (цветной был только у преподавателей), программу для рисования наподобие Paint и игры, которые тогда мне казались сложными. Еще нас учили писать небольшие программки на Basic. Ощущения от информатики были такие: «Это все дико круто и интересно, но уж очень непонятно». В целом, с тех пор мало что поменялось.
Страх перед программированием и сомнительные решения
В школе я учился хорошо. Любимыми предметами были физика, информатика и астрономия. Я участвовал в олимпиадах и конкурсах научных проектов по физике, чем сильно удивлял другие школы — наша школа была гуманитарной, с углубленным изучением английского языка.
На информатике мы проходили Паскаль — именно тогда, несмотря на любовь к компьютерам и технике, мне стало казаться, что программирование для меня слишком сложно. Однако с подачи друга и одноклассника я освоил HTML и CSS. В начале двухтысячных не было социальных сетей: чтобы показать всем свою айтишную продвинутость, было модно иметь домашнюю страничку на каком-нибудь бесплатном хостинге вроде narod.ru. Верстка в основном делалась на таблицах, а внешний вид часто прописывали не в CSS, а прямо в атрибутах тегов. JavaScript для меня тогда был чем-то просто запредельным.
- Постоянная поддержка от наставника и учебного центра
- Помощь с трудоустройством
- Готовое портфолио к концу обучения
- Практика с первого урока
Вы получите именно те инструменты и навыки, которые позволят вам найти работу
Узнать большеВ выпускном классе я осознал, что хочу поступать в технический вуз на что-то связанное с компьютерами, электроникой или телекоммуникациями (программирования я побаивался). Мы с другом поставили себе амбициозную цель — поступить в Москву. Для меня принципиально было поступить на бюджет, но с гражданством Казахстана это было сложно — лишь несколько вузов предоставляли квоты для граждан СНГ, позволяя им поступать на общих основаниях с гражданами России. В итоге я оказался в числе студентов Московского государственного строительного университета.
Сначала я испытал эйфорию от того, что смог осуществить свою цель: поступил в московский вуз на прикладную математику. Однако скоро пришло понимание, что это совсем не то, о чем я мечтал. У нас было много сопромата, теоретической механики и других строительных дисциплин, но совсем мало интересных мне предметов. Например, на программировании мы проходили Фортран — чуть ли не первый язык высокого уровня, который появился задолго до С и до сих пор используется для математических и инженерных вычислений. Но все сводилось к переписыванию кода из методички, подстановке своих аргументов, запуске в IDE и демонстрации результата преподавателю. Любой бесплатный курс на Code Basics дает несравнимо больше!
Через некоторое время учеба отошла для меня на последний план: из школьного отличника-ботаника я превратился в типичного студента-раздолбая, руководствующегося принципом «от сессии до сессии живут студенты весело». К пятому курсу стало очевидно, что работать по специальности я не хочу, а чем заниматься дальше, было совершенно непонятно. Что касается IT и программирования, до появления Хекслета и других онлайн-школ оставалось еще несколько лет, существовали лишь офлайн-курсы вроде «Специалиста» при МГТУ имени Баумана, которые стоили как крыло Боинга.
В итоге я принял, наверное, самое спорное решение в своей жизни: решил попробовать себя в новой и нехарактерной для себя деятельности — юриспруденции. Эх, знал бы я тогда, что этот эксперимент растянется на долгие 13 лет.
Внутренний диалог и решение все же пойти в IT
Первые годы работы юристом все складывалось хорошо, моя новая деятельность мне нравилась, было интересно разбираться, как функционирует государство и бизнес. Про IT я тогда не думал.
Через несколько лет ситуация стала меняться не в лучшую сторону. Работа становилась все менее интересной и все больше рутинной. Я занимался одним и тем же, но не пытался что-то изменить, например, перейти в другую компанию, так как понимал, что там будет то же самое. Пришло понимание, что я трачу драгоценные годы жизни на дело, которое мне неинтересно, не приносит никакой радости и удовлетворения.
Летом 2021 года окончательно стало ясно, что пора что-то менять. Незадолго до планируемого увольнения я взял отпуск и мы с женой поехали на море. Там она произнесла фразу: «К концу отпуска ты поймешь, что делать дальше». Далее в моей голове раз за разом происходил примерно следующий диалог:
— Так, я уволюсь и найду работу в другой компании. Но ведь глобально ничего не поменяется, я буду заниматься тем же самым.
— Вот бы перейти вообще в другую профессию, чтобы делать что-то интересное и нужное, чтобы у меня снова горели глаза.
— Но я ведь ничего больше не умею делать…
— А что если попробовать изучить что-то новое?
— Но что? Чтобы это было интересным и востребованным, приносило нормальный доход, нравилось мне и у меня была склонность к этому?
Скоро мне на глаза попалась реклама курсов по разработке компьютерных игр. В голове что-то переключилось и мне стало ясно, в каком направлении двигаться.
Я воодушевился и стал изучать информацию. Понял, что геймдев — не лучший выбор для входа в IT по причине меньшей востребованности и большей сложности. Чаще всего для старта советовали фронтенд или программирование на Python. Я стал самостоятельно пробовать и то, и другое. Проходил курсы на Sololearn, какие-то уроки в интернете, бесплатные тренажеры на HTML Academy, читал статьи, смотрел видео на YouTube.
Это происходило бессистемно — было очевидно, что таким путем я своей цели не достигну. Нужно было определяться со школой программирования. Курсы от школ, названия которых у всех на слуху, меня отталкивали своим откровенно инфоцыганским маркетингом из серии: «Программирование это легко! Программистом может стать каждый! Через 3-6 месяцев у вас будет высокооплачиваемая работа!». Весь мой жизненный опыт подсказывал, что это обман.
Через некоторое время я увидел положительный отзыв о Хекслете — мне понравился честный подход, что путь предстоит долгий и сложный, и до конца дойдут не все. Я решил попробовать.
Учеба на Хекслете и проекты
В октябре 2021 года я начал проходить бесплатный курс «Введение в программирование», всем рекомендую его пройти. Благодаря ему я окончательно понял, что хочу учиться только на Хекслете. Во-первых, на курсе очень хорошо объясняют основы программирования: переменные, функции, условные операторы, циклы, рекурсия. Во-вторых, там очень крутые практические задания — сложные для тех, кто только начинает, но не настолько сложные, чтобы их вообще невозможно было сделать. Навсегда запомню свои ощущения от решения заданий по развороту строки (без использования встроенных методов, естественно) или по определению, является ли число простым. Сейчас такие задачки вызывают ностальгическую улыбку, но в то время это был для меня настоящий вызов.
После завершения вводного курса я остановил свой выбор на профессии «Фронтенд-разработчик». Выбрал ее, так как еще со школы немного знал HTML и CSS — решил, что это мне немного поможет, так как не придется начинать с самого нуля.
Я учился в формате группового обучения, моим наставником был Геннадий Зинченко — огромнейшее ему спасибо! Могу отметить следующие плюсы Хекслета:
- Четкая, структурированная программа обучения. В начале пути не знаешь, что именно изучать и в какой последовательности. В интернете много роликов, книг и курсов, но крайне важно остановиться на чем-то одном и планомерно двигаться по выбранному маршруту, иначе будешь перескакивать с одного курса на другой, а КПД будет стремиться к нулю.
- Практика после каждого урока. Программирование — это практический навык. Невозможно стать программистом, просто читая книги или смотря ролики на YouTube. Это как учиться езде на велосипеде по видео или книгам. Пока своей головой и руками несколько раз не сделаешь, материал не усвоится.
- Возможность учиться в группе с наставником: он делает код-ревью всех проектов, после которых код меняется до неузнаваемости. А еще благодаря еженедельным вебинарам происходит дополнительное погружение в профессию. Ты не варишься в собственному соку, а видишь перед собой живого настоящего разработчика — он когда-то уже прошел путь, который ты проходишь прямо сейчас, это дополнительно мотивирует.
Я с самого начала обучения настраивался на прохождение всей профессии, чтобы получить заветный сертификат и участвовать в карьерном треке, поэтому выполнил все четыре проекта в профессии.
Проекты, кроме непосредственно программирования, затрагивают и другие крайне важные аспекты, такие как работа в терминале, работа с Git, настройка локального окружения и локальный запуск проекта, запуск тестов и линтера, CI/CD, деплой и т. д.
Больше всего понравился и запомнился финальный, четвертый проект. Если на написание самого первого, «Игры разума», ушло шесть дней неспешной работы и примерно столько же на устранение замечаний, то выпускной проект занял почти четыре недели ежедневного труда и около двух недель на доработку и внесение всех правок.
Читайте также: Стоит ли учить JavaScript: перспективы, ситуация на рынке труда, мнения экспертов
Дополнительные источники знаний и опенсорс
Чаще всего мне хватало материалов Хекслета. Если же их все-таки оказывалось недостаточно, то обычно я обращался к официальной документации и к сайту learn.javascript. Если и там не находил ответ, то начинал гуглить все подряд. Большой плюс чтения документации в том, что это позволяет подтянуть английский язык.
Я смотрел много роликов на YouTube. Могу выделить свой любимый канал — Ulbi TV. Тут есть и отличные обучающие видео, и записи реальных собеседований, и разбор вопросов и задач, встречающихся на собеседованиях. Еще могу выделить канал Сергея Немчинского: очень нравится его подход к обучению.
Также я участвовал в опенсорс-проектах Хекслета. Когда я начинал учиться, существовала гарантированная оплачиваемая стажировка в Ростелекоме для выпускников, а одним из их требований было три пулл-реквеста в опенсорсe. К моменту завершения мною четвертого проекта в сентябре 2022 года они приостановили набор стажеров, но несколько пулл-реквестов я все же сделал. Считаю, что это отличная практика по реальной работе с гитом: ее сложно получить, когда работаешь над собственным проектом и пушишь только в свой репозиторий, поэтому ее ни в коем случае не надо игнорировать.
Поиск работы и первый оффер в крупной компании
Я много раз слышал мнение, что самое сложное в IT — это найти первую работу. К сожалению, это действительно так.
Я попытался найти работу после завершения второго проекта, но получил отказ — для джуна у меня было слишком мало знаний. После этого я решил сосредоточиться на учебе — завершил профессию, получил сертификаты, прошел опенсорс и сделал три пулл-реквеста. Дальше тянуть было нельзя — я создал резюме на hh.ru и Хабре, обновил на Hexlet CV и стал готовиться к собеседованиям.
Я отправил около ста откликов. Это немного, но к каждому я писал уникальное сопроводительное письмо. Результат: ни одного приглашения на собеседования, три тестовых задания, все остальное или шаблонные отказы, или просто игнор. Это был непростой период в жизни. Я не собирался сдаваться и опускать руки, но чувство тревоги и неопределенности преследовало меня 24 часа в сутки.
И тут случилось событие, после которого все круто изменилось в лучшую сторону — сработал Карьерный трек Хекслета! Хочу еще раз поблагодарить Алису и моего тимлида Антона, который нашел меня на Хекслете.
Сначала был короткий созвон-знакомство, я рассказал о себе и своей учебе на Хекслете. Далее наступил черед собеседований. Технических собеседований было два: первое проводил сам Антон, оно длилось 30-40 минут. Помню его смутно, вопросы были вроде: что такое DOM и BOM, зачем вообще нужен DOM, чем отличаются теги <em> и <i>, чем отличается git merge от git rebase.
На следующий день состоялся основной этап технического собеседования — его проводили тимлид и сеньор фронтенд-разработчик из других команд, работающих над проектом. Длилось оно полтора часа, которые показались мне вечностью. Вопросы были разделены на блоки: HTML, CSS, JS, Git, React. Хотели еще спрашивать по TypeScript, но я честно признался, что пока его не изучал. В конце был лайв-кодинг: нужно было решить задачу с двумя асинхронным функциями. От усталости и стресса я совсем забыл про async/await и решал через цепочку промисов, как в третьем проекте. В итоге, не сразу и не самым оптимальным образом, но я решил задачу, и на этом собеседование завершилось.
Я понимал, что не на все вопросы ответил хорошо, и поэтому думал, что никакого продолжения не последует. Каково же было мое удивление, когда на следующий день мне позвонила HR и сказала, что я понравился команде и компания готова сделать оффер! Я даже переспросил ее, не разыгрывает ли она меня :) Оффер я, конечно же, принял!
Это крупная российская компания с большим количеством продуктов. Я работаю в департаменте, который занимается развитием цифровых образовательных проектов, мы разрабатываем платформу для собственной школы программирования. В нашей команде, кроме меня, есть фуллстек-разработчик (он же и тимлид), еще один фронтенд-разработчик, два бэкендера и два тестировщика.
Стек: фронт — React и TypeScript, менеджер пакетов yarn, сборщик vite, собственная библиотека компонентов; бэк написан полностью на Java; взаимодействие фронтенда и бэкендом — GraphQL и Apollo. В качестве инструмента CI/CD — Jenkins.
Когда я только пришел в компанию, то занимался небольшими доработками уже готового функционала: например, нужно было изменить кнопки всех модальных окон на проекте, а также исправлял баги, не имеющие высокий приоритет. Сейчас начинаю заниматься разработкой нового функционала. Еще немного освоил написание UI-автотестов, они пишутся на Java-фреймворке, который является собственной разработкой компании. Этот фреймворк позволяет описывать тестовые сценарии на русском языке.
В первую очередь дополнительно начал изучать TypeScript — прошел курс на Code Basics. Также участвую в проекте «Хекслет Q&A», куда меня пригласили осенью. Готовлю ответы на часто задаваемые вопросы по своему стеку, вношу посильный вклад в развитие Хекслета.
Что нужно знать начинающим программистам
Если говорить о хард-скиллах, то помимо базы в виде JavaScript, React или другой библиотеки/фреймворка, желательно знать TypeScript, верстку и иметь готовность разбираться в чужом коде. Знаю, что многие студенты-фронтендеры не любят верстку, но, скорее всего, даже на крупных проектах не будет отдельно верстальщика и все придется делать фронтенд-разработчику. На собеседованиях всегда спрашивают про HTML и CSS.
То же самое и с умением разбираться в уже написанном коде. В первые месяцы именно он будет для вас источником истины и легальной шпаргалкой.
В отношении софт-скиллов, я бы выделил какую-то общую адекватность и умение обращаться за помощью, когда сам зашел в тупик.
Во время учебы может быть непросто. Если возникает проблема, что-то не получается или не работает, то надо понять для себя, что так и должно быть. Программирование — это и есть поиск решений и выходов из сложных ситуаций. Надо просто продолжать делать до тех пор, пока не начнет работать.
Если же прям опускаются руки, то можно попробовать переключиться на что-то другое. Например, порешать задачки на Codewars, сделать не очень сложное испытание, пройти другой урок в текущем курсе или даже начать другой курс. Смысл в том, чтобы сделать что-то, что получится. Организм получит свои порцию дофамина от достигнутой цели, и текущая проблема будет выглядеть уже не столь критичной.
Всем желаю успехов!
Читайте также: 8 самых востребованных языков программирования в 2023 году
- Изучите востребованные JavaScript и TypeScript
- Научитесь создавать пользовательские интерфейсы сайтов и приложений
- Освойте самый популярный фреймворк JavaScript — React
- Познакомьтесь с языками веб-разработки HTML и CSS