Введение
Всем привет, вот и я пишу историю своего пути в разработку.
После школы я решил получить высшее образование в сфере экономики — мне нравилось это направление, я интересовался экономическими стратегиями и вообще — деньгами, финансами. Несмотря на это, с 10 лет я сидел за компом, еще 386-м, потом Pentium, потом AMD Duron. Играл в игрушки, переставлял винду, занимался чисткой компа, но никогда не пробовал кодить, и вообще — узнал об этом только в школе, в старших классах на информатике. Весь мой интерес в компе был завязан на игрушки — стратегии, Fallout, Half Life, в общем — было интересное детство и юность.
Первая книга по разработке, которая мне попалась под руку — Крис Пайн «Учись программировать» на Ruby. Не помню, как я наткнулся на нее, но прошел целиком, вдохновился языком и тем, насколько он прост в изучении. Дальше я посмотрел много курсов на lynda.com — искал технологию, которая мне нравится. В то время я был студентом факультета мировой экономики и заканчивал институт, одновременно работая специалистом по закупкам.
Знакомство с Ruby on Rails
Я поработал в закупках около двух лет, при этом интерес к IT-сфере все еще оставался. Тогда я продолжал смотреть курсы по верстке, разным языкам программирования. После того, как прошел курсы Ruby on Rails 3 версии, мне ничего не оставалось, как найти свою первую работу. На одном из собеседований меня начали уверять, что с моим экономическим образованием мне надо работать по профессии. Это было неприятно слушать, ведь я пришел развиваться как разработчик.
Однажды я даже устроился PHP-джуниором, где проработал два дня. Сбежал оттуда из-за того, что офис этого интернет-магазина, который торгует техникой, находился на ВДНХ, а мне было очень далеко туда ездить. Спустя пару недель очередных поисков я нашел позицию начинающего разработчика на Ruby on Rails. В вакансии так и было написано, что в стартап требуется новичок, которого будут обучать и развивать, чтобы потом он смог сопровождать проект (конечно, начальные знания по рельсам все же были нужны).
На первое собеседование я шел с некоторым беспокойством. В итоге со мной говорили архитектор и тимлид. Я очень сильно волновался — особенно когда мне сказали сделать блог на Ruby on Rails, после чего просто оставили за компом с vim и gentoo (вот это был космос для меня тогда: консоль, в которой есть редактор, а мышка не работает). Я, конечно, совсем растерялся, сразу начал рыть интернет. Но потом вспомнил, что в самой документации Ruby on Rails есть пункт про создание базового приложения — как раз блога, набрал код за 10 минут до прихода собеседующих, и в итоге создал полноценный блог на рельсах с покером и прелестницами.
Лид, конечно, обрадовался, даже не смотря на то, что знал про эту команду. Потом спросил меня, как добавить валидацию для полей, что тоже не проблема в Ruby on Rails. В общем, я был принят в компанию и начал погружаться в проект. Команда была небольшая: дизайнер, тестировщик, один рельсовик, верстальщик-фронтендер и архитектор. После того, как ушел главный разработчик, я стал в одиночку сопровождать проект, а в это время руководство компании искало нового лида. Это был очень стрессовый момент — какие-то фичи я вообще не знал, как реализовывать, какие-то находил в интернете в виде гем-пакетов и адаптировал их под проект. Иногда мы устраивали с архитектором своеобразное парное программирование — он говорил мне, что надо сделать, а я искал в доках, как это вообще делается.
Почему я ушел из IT
Проработав в таком режиме полгода, я решил, что до полноценного рельсовика сейчас не дотягиваю. Плюс в свободное время я пробовал торговать на американской бирже через субброкера, в общем — интересов было много, и я захотел уделять трейдингу все время, а не только свободное, смотреть графики, учиться биржевым торгам и техническому анализу. Я ушел из программирования, устроился аналитиком по финансовым рынкам, писал аналитические обзоры. Платили не много, да и работа мне не особо нравилась: я просто переводил статьи с Bloomberg и делал обзоры по паевым фондам: не аналитик, а скорее интернет-журналист.
Позже я нашел новую работу — уже в крупном биржевом брокере, где смог совместить IT-сферу и биржу. Я работал специалистом по технической поддержке торговых систем: там я проработал 2 года, получил понимание биржевой инфраструктуры, и вообще — много крутых финансовых знаний. Затем я даже перешел в Сбербанк в ожидании, что буду двигаться к технологиям прямого доступа на биржу. Мои ожидания не оправдались — там оказалась совсем другая система, завязанная на бэкофис. И вообще — от поддержки я начал уставать.
Читайте также: «Ruby вызывает привыкание на всю жизнь». Большое интервью с CEO Rubyroid Labs Валентином Завадским — о совместном с Хекслетом курсе по Ruby on Rails, образовании и фане в программировании
Все это время я параллельно проходил обучение на разных курсах. Было время, когда я даже пробовался в intern на HackReactor: до сих пор вспоминаю этот опыт, у них было очень много мелких заданий на написание кода с тестами в браузере, чтобы набить руку: как писать функции, как делать возврат значений из функций, стоит ли писать отдельную переменную для этого (мне этого не хватает на Хекслете — много мелких заданий после каждого урока, а не одна сложная задача, над которой бьешься иногда несколько дней или неделю. Плюс я бы добавил небольшие минипроекты после каждого курса с автотестами — на закрепление материала).
Как Хекслет вернул меня в программирование
Уже не помню, как нашел Хекслет, но я настолько увлекся такой структурированностью обучения, что практически не останавливаясь полгода проходил курс фронтенд-разработчика. В какие-то моменты было отчаяние и разочарование, когда решал задачу по несколько дней-недель. Некоторые курсы казались мне очень сложными, думал, что это не мое, я не смогу выполнять задачи на будущей работе — об этом узнают и меня выгонят. Был настоящий синдром самозванца — я не смогу занимать позицию или работать программистом, ведь у меня нет профильного образования и даже опыта, я же не настоящий технарь, а самоучка. Но я со всем справлялся — спасибо сообществу за помощь в обсуждениях, это очень помогает и создает впечатление, что я не один решаю очередную трудную задачу.
В историях успеха многие хвалят проекты — похвалю их и я: это правда очень круто, похоже на разработку в реальной компании с задачами, которые вообще непонятно, как делать. Все как в жизни — не ясно, у кого и что спрашивать, ты постоянно находишься в состоянии «ну как я это могу переписать и изменить, если это уже лучшее из того, что я мог создать». Потом со скрипом начинаешь рефакторить — и чем больше рефакторишь, тем лучше начинаешь понимать логику своего кода, архитектуру, в общем: обучение через рефакторинг — это прям мякотка первого проекта. Я очень благодарен Кириллу и всем наставникам — столько терпения и желания поделиться своим опытом и научить, спасибо ребята.
Тогда все проекты должны были писаться за одну неделю, поэтому я принес на работу ноутбук, подрубил его к одному из мониторов, и в свободное от работы время выполнял задачи, копипастил их в почту и отправлял домой. Уже вечером, дома, я пушил изменения и отправлял на проверку ментору. Все это было очень драйвово, в день улетало порядка 4-5 часов на выполнение каждого шага с переписыванием и рефакторингами.
Именно выполнив первый проект я почувствовал в себе уверенность стучаться по вакансиям. В этот момент начал ходить по собеседованиям и спамить руководителей направлений, отвечающих за набор программистов в Сбербанке. Они мне так и не ответили, чтобы было обидно. Я искал работу около года — ходил на собеседование в Финам, в пару интеграторов, в Сбертех (там с треском провалился и не смог решить какие-то логические задачки, очень расстроился по этому поводу). Затем постучался к своему знакомому и сказал, что давно хочу вернуться в IT на фронтовую позицию, и он передал мое резюме HR-менеджерам. На собеседовании мне очень помогли мои знания по проекту — как я его проходил, с какими трудностями столкнулся при его написании, что пришлось делать, какие подходы применял при рефакторинге.
Смотрите также: Публичное собеседование для junior frontend-разработчика на youtube-канале Хекслета
Сейчас я работаю фронтенд-разработчиком, мой основной стек — React + Redux + Typescript. На одном из проектов использовал Cypress, и теперь стараюсь писать тесты на всех проектах, куда меня переключают. Также работаю с легаси кодом — там есть jQuery, Coffeescript и много чего еще без тестов. Планирую постепенно внедрять jsDoc на таких проектах для реализации проверки типов в редакторе. Недавно я познакомился с Jenkins и даже самостоятельно раскатывал фронт на стенд — повышаю свой уровень знаний.
Советы для начинающих
Тем, кто только начинает свой путь на Хекслете скажу, что в проектах и задачках главное — упорство. Если вы продолжаете идти по этому пути, то решение всегда найдется. Да, можно переключиться, отдохнуть, дать себе какое-то время, но потом нужно снова взяться за решение/обучение. Какое-то время меня очень поддерживали консультации психолога, особенно был острый момент, когда я приходил домой после работы и начинал учиться. Так продолжалось больше года — я не видел никаких перспектив и уже начинал отчаиваться. В этот момент мне пришлось поменять отношение к происходящему — ведь это все делалось только для того, чтобы я в дальнейшем мог заниматься тем, что мне нравится. Для тех, кто уже работает разработчиком и очень увлечен своей работой, люто-бешено рекомендую найти себе еще какое-то занятие, хобби или что-то еще, что вас будет также увлекать и радовать, чтобы не было сильного ухода от реальности в компьютер. Для меня это инвестиции, психотерапия, опционный трейдинг, йога и обучение игре на электрогитаре.