Всем привет! Меня зовут Гоша, я тимлид Frontend-команды в June Homes. Мы занимаемся рентой квартир и комнат в США на долгосрочный период.
Хочу рассказать историю о том, как я пришел во Frontend. Статья поможет с выбором начинающим разработчикам, а ребята с опытом вспомнят середину 2010-х.
Начало пути в разработке
Если говорить о моем бэкграунде, то стоит начать со школы. В старших классах я увлекался математикой и немного информатикой. Пытался участвовать в олимпиадах, но дальше школьного уровня не проходил.
Совсем чуть-чуть писал маленькие программы на Паскале и Basic. После школы поступил на факультет информатики по специальности «Компьютерная безопасность». Программирование не было основным предметом, но базисные вещи, конечно, нам преподавали.
Первые годы в универе
Основными предметам программы были матан, алгебра, дискретная математика и математическая статистика. Программирования было по минимуму — С и Ассемблер. Со второго курса продвинутые одногруппники начали искать себе работу и стажировки в разработке.
На тот момент я ничего не понимал в разработке и недалеко ушел от школьного уровня. Я мог написать консольный калькулятор на C и нарисовать гуся в Paint. Тем не менее, я решил попробовать найти работу разработчиком.
Что это было? Собеседование в аутсорс компанию.
Кого набирали в команду? Будущих Java-разработчиков.
Как я готовился к собесу? Это было достаточно сложно. У меня не было представления, куда копать, а знания о Java ограничивались двумя первыми предложениями из википедии.
На собеседовании спрашивали про типы данных, в частности про HashMap, Linked list, про объектно-ориентированное программирование и его преимущество над процедурным и т. п. Спрашивали, что такое Java Virtual Machine и зачем он нужен, про Bytecode. Короче, типичные Java-вопросы. Я побыл амебой полчаса и ушел. Фидбека, конечно же, мне не дали.
Решил, что рано думать о профессии разработчика — лучше сейчас я сконцентрируюсь на учебе, а поиском работы займусь позже.
Прошел год или полтора
К тому времени мои одногруппники уже завершили стажировки и работали. Я по-прежнему мог написать калькулятор (уже на C# с кнопочками) и все так же мог нарисовать гуся.
«Мамины подруги» нашли мне работу
Я успокаивал себя тем, что учеба важнее и что у меня есть стипендия. Вдруг от «маминых подруг» пришло предложение о подработке — помочь знакомым админить сайт.
Я не разбирался в web от слова совсем. Знал, конечно, как устроен этот ваш интернет, но то, как он функционирует, для меня было магией. Меня успокоили, что дело плевое, надо обновлять фотки и публиковать новости на сайте, а в крайнем случае что-нибудь подправить.
На все уходило несколько часов в неделю, а платили в размере одной стипендии. На тот момент это был идеальный вариант подзаработать на дополнительную сосиску в тесте в универской столовой.
Это был семейный бизнес: ребята занимались украшением мероприятий воздушными шарами. Мне дали доступы и я начал погружаться. Сайт выглядел достаточно трешево, прямо из 2000-х, не хватало только музыки.
Располагался сайт на PHP+MySQL хостинге, выкладывался через FTP. Никаких фреймворков, голый php, а на фронте, конечно, jQuery. Для меня было большим объемом новой информации, и собирать ее пришлось по разным углам.
На тот момент я сравнивал с десктопной разработкой .net, web выглядел как цирк с конями. Порой приходилось фиксить баги, из-за того, что я не знал, как нужно готовить, где фронт, а где бэк, делал костыли.
С каждым новым моим фиксом становилось все хуже и хуже. В какой-то момент я узнал, что существуют бесплатные CMS-ки, которые могут решить большинство наших проблем и вообще заменить меня. Предложил перестать убивать сайт и перевел на Wordpress. Подтюнил одну из бесплатных тем и показал, как взаимодействовать с контентом.
В итоге
Несколько месяцев работы — и я накопил на новый велик. Тогда фанател от «фиксов» и хотел попробовать покататься на подобной машине. Так что ушел с этой работы с чувством выполненного долга и достигнутой цели.
Попытка №2 зайти в IT
Следующий трай встать на путь разработки случился уже на следующий учебный год, когда мой друг предложил мне пройти стажировку в одну из аутсорс компаний.
Что за компания? Фирма писала сайты на Drupal и модули к нему.
Как проходило собеседование? А собеса-то и не было. Только тестовое задание — сверстать landing page. На предыдущей подработке я контактировал с HTML и CSS, так что сверстал лендинг на floatах и отправил. Flexbox на тот еще не поддерживался полностью во всех браузерах.
Что произошло дальше? В итоге меня приглашают на стажировку, а я рад, что смогу учиться у профи: опытные коллеги смогут направить в нужном направлении. На предыдущем месте приходилось изучать все самому. Первые пару дней было интересно, как все устроено, кто чем занимается, но постепенно это проходило.
Как проходила стажировка? Весьма странно, надо сказать. К 9 утра в офис. Опоздаешь — штраф. Далее я смотрел различные видео, чтобы быстрее понять суть решения задач.
Чему научился? Развернул кучу раз Drupal с нуля, написал несколько кастомных модулей для него, научился разворачивать Denver из под Virtual Box. Docker в тот момент еще не захватил рынок, и я по старинке разворачивал LAMP на виртуалке.
На тот момент я не терял духа — и вот оно, долгожданная первая задачаа. Тимлид мельком рассказал о проблеме и ушел. Я приступил к таске, подготовил окружение, поднял сервак.
По мере решения задачи я понял, что структура проекта другая. Всю эту стажировку я смотрел видео про Drupal, а мне дали задачу на Wordpress. Подошел к лиду, а он, оказывается, забыл уточнить информацию об этой задаче.
С этого проекта я ушел так же быстро, как и с предыдущего. Можно обозначить это место как «эталонную галерею». Помимо организационных задач, здесь были и задержки зарплат, и подкидывание рандомных задач, если ты простаиваешь. Однако именно эта стажировка повлияла на мой выбор направления в разработке.
Очень важный год
Проучившись еще год, я успешно сдал сессию. Мой работающий одногруппник рассказал, что в его компанию ищут Junior.net-разработчиков на десктоп-приложения. А у нас как раз закончился курс по C#, что хорошо мэтчилось.
После небольшого опыта с вебом, мне совершенно не хотелось снова с ним связываться. Казалось, что все криво-косо и все через php. C .net было проще: удобное IDE, понятный синтаксис, Windows.
Почти вся наша группа пошла туда на собеседование. Я долго сомневался после прошлого опыта, но в итоге тоже решился.
Очередная стажировка: куда я снова попал?
Это была компания а-ля Uber. Но работали локально — Сибирь и Казахстан. Меня привлекло то, что у них свой продукт и что это был аутсорс.
Для собеседования нужно было показать свои пет-проекты. Я написал простенький видеоплеер на WPF. Сам собес проходил с базовыми вопросами.
После переговоров мне сказали, что все хорошо, но был нюанс: full.net разработчиков уже набрали — все места заняли мои одногруппники. Место осталось только в web. Тут я понял, что web это, похоже, моя судьба.
Было лето, почти три месяца до начала учебы. Зарплату предложили больше, чем в предыдущих местах, работать с одногруппниками было прикольно. Смирился с вебом и принял предложение.
Рабочий процесс
Офис был интересный: две квартиры на одной лестничной клетке в простом жилом доме. Порой, чтобы дойти до человека, нужно было выйти из одной квартиры, пройти по лестничной клетке и войти в другую.
Большой плюс для студента — личный повар, который готовил каждый день, а вечером можно было забрать еду домой. А еще гибкий график, значит, можно было совмещать с учебой. Это были последние годы университета, так что преподаватели лояльно относились к работающим студентам.
Мои проекты и задачи
Основным проектом был web-виджет для заказа такси онлайн на Angular.JS. Первую пару месяцев мне сильно помогала коллега: ввела в курс дела, помогла вкатиться в задачи. Но, к сожалению, потом она ушла, и мне пришлось вести проект в одиночку.
На проекте я в основном занимался поддержкой и фиксингом багов, мне редко приходилось реализовывать новые большие фичи. Повезло, что стек технологий был достаточно свеж, и получилось посмотреть, как на его применяют на практике. Были большие пробелы по JS — так Learn.JavaScript и Stackoverflow стали самыми популярными для меня сайтами.
Основатель компании был весьма специфичен — сам жил в Португалии, а бизнес вел удаленно. Был случай, когда мы потратили кучу времени на разработку соцсети для водителей. На тот момент мне казалось это смешным, хотя и сейчас тоже.
За год в компании я неплохо поднатаскался технически, была помощь со стороны опытных коллег и свобода в принятии решений. Если смотреть со стороны организационных вещей, то конечно, эта стажировка была далека от идеала. Сейчас я вижу, как много было косяков, но на тот момент техническая сторона была важнее. В итоге меня переманили в большую компанию, но там уже начинается другой путь — в сторону мидла.
Итог моего пути
Мне потребовалось три попытки, чтобы попасть в разработку — хоть и не на то направление, на которое я хотел изначально. В то время Frontend быстро развивался, каждый день появлялся новый фреймворк, новый билдер.
Мне не хватало времени изучить старое, так как постоянно выходило новое. За это время Frontend сделал большой скачок: от безобразного и неразборчивого, а в некоторых моментах кривого, к более понятной, прозрачной среде. Однако это еще не предел, остается пространство для развития направления. Frontend почерпнул много хорошего из других сфер, а местами привнес что-то свое.
Сейчас, когда я сам нанимаю ребят, смотрю в основном на:
знание JavaScript;
Problem solving;
умение коммуницировать.
Хард-скиллы подтянуть проще, чем софт
Разработка — это прежде всего команда, и сейчас почти не осталось примеров, когда один человек создавал продукт от начала до конца.
Если софт-скиллы не развиты, то становится некомфортно общаться и тяжело коммуницировать, сложно прорабатывать таски на груминге/PBR. Обычно люди со слабыми софтами склонны решать проблемы в одиночку, без привлечения членов команды. Это влияет на скорость и сам факт нахождения лучших решений. Иногда подобное поведение может полностью разрушить команду и процессы.
На мой взгляд, на собеседованиях стоит уделять больше внимания софт-скиллам. От них определять, как кандидат может вписаться в команду. Существуют практики, когда помимо технического скрининга, дополнительно проходят собеседования отдельно с командой. У такого подхода есть свои плюсы и минусы.
Что нужно для входа в профессию?
Минимальный Computer Science бэкграунд. Нужно углубиться в CS и потом выбирать, чего вы хотите. Я не говорю о высшем образовании — я работал с разработчиками без вышки, и мне нравилось. Порой ребята были с экономического факультета, порой с философского — общаясь и работая с ними, мне было комфортно, мы решали разные задачи и я не чувствовал каких-то больших проблем.
Постарайтесь найти стажировку. Я предпочел бы стажировку в компании, где могут почти с нуля дотянуть до Junior+ уровня.
Скитание от одной компании к другой с работой по 2–3 месяца было интересным опытом, и мне много чего можно вспомнить. Однако все это стоило времени и нервов.
Я советую вам найти стажировку в хорошей компании, а затем попробовать туда устроиться. В такой среде вам помогут стать инженером. Или приходите учиться на курс «Профессия Frontend-разработчик» в онлайн-школу IT-профессий ProductStar. Там не только учат, но и помогают устроиться на работу.
Успехов в покорении Frontend!