Как веб-мастер из Георгиевска стал мидл разработчиком в Москве
В Яндекс.Практикуме закончился первый поток курса «Мидл фронтенд-разработчик». Мы поговорили с выпускником Родионом Костюченко о пути в веб-разработке, трудностях при переезде в Москву и о том, как мотивировать себя, когда хочется всё бросить. Также Родион составил список рекомендаций для тех, кто хочет развиваться в сфере фронтенда: от новостных подкастов до сайтов с тренировочными заданиями.
Школьный кружок программирования и учёба в университете
Я заинтересовался разработкой ещё в школе, когда у нас открылся кружок по программированию. Потом появился преподаватель, который вёл разные IT-курсы для школьников и учителей. Он увидел потенциал во мне и моём друге и стал заниматься с нами бесплатно в свободное время, дал много знаний по программированию и базам данных.
Эти знания покрыли почти всю программу, которую я потом изучал в университете. Учиться в вузе было не то чтобы сильно интересно, потому что уровень преподавания в нём был достаточно низкий. Получилось, что я проучился пять лет только для того, чтобы получить диплом, а не новые знания. Перед выпуском написал две дипломные работы за неделю — для себя и для товарища. А дальше стал искать работу в сфере разработки.
Работа веб-мастером в маленьком городе
Я из маленького города Георгиевск в Ставропольском крае, в котором живёт около 70 000 человек. Со сферой IT здесь сложно: в основном, компании занимаются рекламой или предлагают создание и обслуживание несложных сайтов, а о какой-то серьёзной разработке речи не идёт.
Первое время я занимался всем подряд: например, работал веб-мастером в рекламном агентстве. Параллельно с основной работой брал заказы как фрилансер.
Я разрабатывал сайты на Wordpress, а иногда просто верстал. Основной стек, который я использовал в работе, — это HTML, CSS и PHP. Его хватало для большинства задач, потому что заказчики в регионе обычно хотели либо простой сайт-визитку, либо интернет-магазин. Магазины я делал на опенсорсном движке OpenCart, верстал для него шаблоны и писал модули. Иногда я пробовал заниматься SEO, но оказалось, что это не моё.
Когда работаешь в регионе, то находишься в информационном пузыре и не знаешь, что мир разработки постоянно развивается. Так происходит потому, что требования у заказчиков здесь не очень-то высокие: им нужно сделать дёшево и, желательно, так, чтобы завтра всё было готово.
У меня было чёткое ощущение, что устроиться на работу в маленьком городе — это подписать себе приговор: следующие 15-20 лет ты будешь делать одни и те же задачи и получать одну и ту же зарплату.
Я пробовал открыть свою веб-студию и рекламное агентство, но собрать команду в регионе оказалось сложно. В какой-то момент я разочаровался во фронтенд-разработке, хотя был увлечён этим с первого дня, как узнал, что существуют браузеры и интернет. На какое-то время ушёл в техническую работу: ездил по банковским отделениям и обслуживал банкоматы. Но понял, что долго так продолжаться не может.
Переезд в Москву и поиск работы
Я решился на переезд вместе с будущей женой. Нам удалось отложить денег примерно на 2-3 месяца скромной жизни, и первое время я дополнительно работал на фрилансе. Когда я начал брать заказы у друзей из Москвы, то увидел, что по сложности они не отличаются от региональных, и это меня воодушевило.
Заказчики в Георгиевске считали, что у меня хорошие навыки, и поэтому я был уверен, что точно найду хоть какую-то работу в Москве. Я откликался везде, где только мог, но меня никуда не взяли, и за всё время пригласили только на одно собеседование, которое я в итоге провалил. Мне не хватало знаний для того, чтобы сразу начать заниматься «серьёзной» разработкой.
Ты пытаешься удивить тем, что умеешь работать с CSS-препроцессорами, а работодатели пожимают плечами, потому что пробовали это пять лет назад. Мой уровень для региона был достаточно высоким, но мои умения совсем не впечатляли работодателей в Москве.
В итоге я устроился по знакомству: в компанию, где надо было делать внутренние сайты на Wordpress для разных подразделений. Эта работа позволяла зарабатывать какие-то деньги, чтобы продолжать жить в Москве, но не помогала развиваться в профессии.
Руководство по JavaScript и курс, который пришлось бросить
Чтобы развиваться в фронтенде, мне нужно было освоить JavaScript. Я начал заниматься веб-разработкой в тот момент, когда все писали на PHP, а JavaScript считался страшным и неудобным. Поэтому я совсем не знал этот язык, и мне пришлось разбираться с нуля. Моей единственной настольной книгой в тот момент было большое руководство Флэнагана по JS.
Я старался использовать технологии, которые хотел изучить, для того, чтобы решать свои рабочие задачи. К счастью, такая возможность была: раз я был единственным веб-разработчиком, то и технологии мог выбирать любые. Так я получил первый опыт, но мне хотелось расти быстрее, и я решил поискать онлайн-курс.
Когда ты учишься сам, то непонятно, в какой момент уже можно идти собеседоваться и искать работу. В случае с курсами ты получаешь для себя пункт прибытия: учёба закончилась, пора браться за новую работу.
Я был ограничен в бюджете и поэтому пошёл учиться на относительно недорогой онлайн-курс, но выдержал там недели три. Учёба начиналась с занятий по вёрстке, в которой у меня был огромный опыт, и я сразу увидел, что моему ревьюеру не хватает знаний в этой области. Качество материала мне тоже показалось низким, поэтому я бросил курс.
Пока я учился сам, то ориентировался на требования в вакансиях. Открывал список предложений на сайтах и в Telegram-каналах и смотрел, какие технологии нужно освоить, чтобы попасть на ту или иную позицию. Я определился, что хочу освоить React: этот инструмент сейчас очень популярен, и на нём пишут много современных проектов. Дальше всё просто: открывал документацию по нужному инструменту и разбирался, а если у меня возникали вопросы, то обращался с ними на форумы разработчиков.
Учёба в Яндекс.Практикуме
Однажды я увидел пост о том, что Практикум набирает бета-тестеров на курс «Мидл фронтенд-разработчик». Конечно, я не мог упустить такую возможность. В начале совмещал работу и учёбу, но быстро понял, что мне не хватает времени, чтобы качественно делать и то, и другое. Мы с женой скопили финансовую подушку, чтобы я мог уволиться и спокойно учиться. Я рассчитывал, что устроюсь на новую работу сразу после выпуска.
Первая часть курса Практикума дала мне глубокое понимание устройства современных инструментов фронтенда: мы написали несколько собственных реализаций популярных библиотек, включая фреймворк для разработки интерфейсов. Написание подобных «велосипедов» помогает разработчику не просто использовать готовые решения — для этого достаточно поверхностных знаний, но и лучше понять устройство и особенности языка программирования.
Второй модуль помог развить гибкие навыки и узнать про актуальные технологии. Вместе с командой мы прошли полный цикл разработки от проектирования до релиза и к концу курса создали полноценную игру. Мы организовывали себя сами, а не работали по готовой инструкции: на протяжении всего курса у нас была полная свобода принятия решений и творчества
Каждая составляющая учёбы в Практикуме была продуманной и полезной. Например, сейчас я уже привык к тому, что не нужно смешивать рабочее время с личным. А до этого момента мне очень помогало то, как устроено обучение на курсе: всё очень хорошо структурировано, есть мягкие и жёсткие дедлайны, и быстро появляется понимание того, как надо распоряжаться своим временем, чтобы всё успевать. В результате ты не распыляешься и постоянно заряжен на то, чтобы разобраться.
Кроме того, мне понравилось код-ревью. Я не упускал ни одной возможности получить обратную связь по своей работе. А ещё здесь я впервые встретил практику кросс-ревью — когда один студент даёт отзыв на работу другого. На тот момент у меня не было опыта командной работы, поэтому это помогало привыкать к правильным процессам.
На работе ребята из моей новой команды говорят, что я довольно быстро втянулся в работу. Так получилось во многом благодаря тому, что она была построена так же, как в Практикуме.
В Практикуме я начал развивать навык чтения чужого кода. Когда у меня возникали вопросы по учёбе, то искал и я изучал реализации похожих задач на Github. Часто ответы требовались тогда, когда у меня не было возможности пойти и спросить наставника: например, если я делал домашнее задание ночью.
Финансовая подушка начала заканчиваться раньше, чем я планировал, и мне пришлось искать работу. Пока крайней необходимости в деньгах не было, я решил откликаться только на интересные и подходящие мне вакансии. Если бы меня никуда не взяли, то снизил бы планку и искал среди всех доступных мне по опыту и навыкам предложений. Но первый же отклик закончился оффером.
Конкуренция и ипотека как мотиваторы доучиться
Сложные моменты, конечно, тоже были — порой хотелось всё бросить. Я пришёл на курс почти без знаний JS, и меня нельзя было назвать уверенным джуном. Курс «Мидл фронтенд-разработчик» нацелен на тех, кто уже знает JS и у кого есть опыт в разработке. А я справился, потому что занимался почти фулл-тайм, по несколько часов каждый день.
В первом модуле мне было совсем страшно: казалось, что другие пишут код с легкостью, а я прорываюсь через какие-то тернии. Но меня мотивировала конкуренция — не хотелось упасть лицом в грязь. Мне было бы обидно, если бы другие справились, а я нет.
У меня была цель стать сильным фронтендером — понятно, что сложности будут всегда, и нельзя так просто сдаваться. Дополнительным мотиватором было то, что я успел обзавестись ипотекой. Хочешь, не хочешь, а приходилось двигаться дальше.
Ставить себя в жёсткие условия, когда придётся реактивно развиваться — это очень действенная штука. Моя супруга сейчас тоже учится и вышла на новую работу. Конечно, ей сложно, но она справляется, а если бы условия были не такими жёсткими, то, возможно, этот рост растянулся бы на бесконечное время.
Образ жизни фронтендера
Когда я работал и учился, мне пришлось сильно оптимизировать свой день. Например, оказалось, что для того, чтобы быть эффективным, мне обязательно нужно хорошо спать. Здорово, когда у тебя ты готов работать круглые сутки, — но потом понимаешь, что долго так делать не получится, ведь у тебя не бесконечный ресурс.
Когда я задумался о качественном сне, то запустилась целая цепочка других изменений. Нужно правильно питаться, проветривать комнату и купить увлажнитель воздуха. Я записался в спортзал, потому что с таким количеством сидячей работы физическая нагрузка была мне необходима.
Я начал следить за своим образом жизни и быстро увидел, как это влияет на мою эффективность. Я перестал тратить время на бесполезные развлечения: например, раньше я садился в метро, включал сериал, и так пролетал целый час. Теперь я открываю курсы или читаю что-то по работе.
Новая работа в роли мидл разработчика
Как я уже говорил, во время учёбы на курсе я устроился работать разработчиком интерфейсов. Благодаря Практикуму мне стало намного проще находить общий язык с командой: помимо того, что я лучше разобрался в конкретных технологиях, у меня появились знания о том, как устроены процессы.
На работе я в основном верстаю и пишу логику на JS. Мы используем в работе стек JS, React, Redux, SCSS и внутренние инструменты. Помимо этого я много общаюсь с командами дизайна, аналитики и бэкенда, участвую в декомпозиции задач. Иногда бывают исследовательские задания: например, изучить новую библиотеку или технологию.
Принято считать, что джун несамостоятелен — он выполняет только часть задачи, и за его работой следит более опытный разработчик. Мидл же способен решить задачу сам, ему не нужен контроль. Если помнить об этом, то легко понять, соответствуешь ли ты уровню мидла или тебе ещё нужно стать более автономным.
В свободное время я стараюсь прокачать своё владение Typescript, думаю попробовать внедрить его использование у нас в проектах. Но сейчас больше внимания уделяю работе и перенимаю опыт других разработчиков в команде.
Что читать, слушать и смотреть, чтобы расти в профессии
Сложно найти ту книгу, которая была бы актуальной: если мы говорим про литературу о конкретных технологиях, то она всегда будет отставать от текущего положения дел. Поэтому я всегда читаю документацию — это самый актуальный источник.
Я слежу за новостями про технологии и пробую новые подходы в работе, регулярно смотрю образовательные материалы — и так вся жизнь проходит в обучении. Мне кажется, в моей профессии нельзя по-другому, иначе ты просто не вырастешь как специалист. Вот те источники, которые я чаще всего использую:
Послушать
— «Веб-стандарты» и «ДевШахта» — чтобы быть в курсе новостей
— «Frontend Weekend» — интервью с известными людьми из мира веб-разработки
Посмотреть
— Обучающие видео на канале Академии Яндекса
— «В офисе» — интервью про индустрию веб-разработки
Почитать
— Сайт для изучения JavaScript
— Серия книг «Вы не знаете JS»
— Дэвид Флэнаган, «JavaScript
— Подробное руководство»
— Стив Макконнелл,«Совершенный код»
— Чарльз Петцольд, «Код»
— Выжимки новостей фронтенда на Хабре
Потренироваться
Чем больше ты развиваешься как специалист, тем проще разобраться, какой материал полезный, а какой — нет. Обучение в Практикуме дало мне хорошую базу, но её нужно было подкрепить опытом и более глубокими знаниями. Например, научиться правильно строить абстракции, писать правильный не связанный код.