Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Рубрика «Кем работать в ИТ» — интервью с представителями ИТ-профессий, в которых специалисты рассказывают о тонкостях своей работы: плюсах, минусах, подводных камнях и заработной плате. Мы надеемся, что джунам и стажерам эта рубрика поможет больше узнать о том, что их ожидает на карьерном пути, а профессионалам — посмотреть на свою специальность через чужой опыт и, может быть, открыть для себя что-то новое.
Сегодня о своем опыте работы нам расскажет Константин Фокин, старший фронтенд-разработчик Flowwow.
Константин окончил Таганрогский радиотехнический университет по специальности «Инженер-программист систем автоматизированного проектирования», но по профессии работать не стал. В начале карьеры занимался версткой страниц на сайтах и отвечал на телефонные звонки. А после неудачных попыток попасть в IT ушел работать в колл-центр, откуда все и началось.
«В моем профайле в SLACK уже три года как написано: чувак с фронта. Так меня однажды представил наш техдиректор» (с) Константин Ф.
По данным зарплатного калькулятора Хабр Карьеры, средний размер заработной платы фронтендера составляет чуть больше 150 тысяч рублей в месяц. Конечно, это среднее значение. Есть те, кто зарабатывает значительно меньше: 60-90 тысяч, а есть и те, кто получает 270 тысяч рублей.
О специальности
Расскажите простыми словами, чем вы сейчас занимаетесь?
Поддерживаю наш текущий фронтенд (клиентский сайт Flowwow) и параллельно участвую в разработке нового, который называется у нас неофронт.
На старом проекте занимаюсь немного рефакторингом, верстаю всё — от простых модалок и кнопочек до сложных виджетов и отдельных страниц. Если не очень сложный, то и бэкенд сам себе пишу для задач. Ну и JavaScript, много JavaScript.
Из последнего, что делал интересного и сложного:
полностью перепридумали и поменяли корзину на сайте,
сделали для мобильной версии сайта виджет с адресом и временем доставки: взяли макет — отдали пользователям новые и красивые интерфейсы.
Старый фронт уже действительно очень стар, ему более 7 лет, он написан на jQuery и на React (новый проект собираем на Nuxt + Vue).
Пишу много кода и регулярно общаюсь с нашими веб-дизайнерами. По сути, дизайнерский макет и является для меня техническим заданием, а где-то только прописана логика, поэтому я работаю в тесном контакте с продуктовой командой.
Ещё одна моя важная часть работы — CR для ребят. У нас в этом плане хорошая практика — не выпускать задачи, не прошедшие Code Review хотя бы одного коллеги. И это на самом деле довольно важная часть работы: найти и аккуратно указать на ошибки, проследить их исправление, а заодно выискивать крутые решения коллег и брать их себе на вооружение.
Фронтенд — это то, каким наш сервис видят пользователи. Это самое острие бизнеса, точка контакта Flowwow с клиентом. От качества фронта зависит, будет ли клиенту с нами либо хорошо и удобно, или трудно и непонятно (и тогда он уйдет от нас туда, где все удобнее). Поэтому абсолютно все на нашем фронте должно быть хорошо продумано, нарисовано и реализовано.
Какое у вас образование, если есть?
Высшее, но не совсем релевантное. Я окончил Таганрогский радиотехнический университет (ныне Инженерно-технологическая академия Южного федерального университета им. Н. А. Ретивова) по специальности «Инженер-программист систем автоматизированного проектирования». Теоретически, я должен был бы сейчас проектировать какие-нибудь автокады — но занимаюсь вместо этого тем делом, которым заболел еще в детстве и всегда любил заниматься.
Но в то же время образование мне очень помогает: в вузе меня научили учиться, разбираться и осваивать новое, а без этого программисту сейчас просто можно выкинуть себя на помойку.
Начало карьеры
Как вы узнали о своей специальности? С чего все начиналось?
Когда я был маленьким, мне в руки попала книга «Энциклопедия профессора Фортрана» про компьютерный город. Я взял ее в руки и… пропал.
А еще у моего соседа дома был компьютер. Парень был меня старше года на три, и его родители были программистами в банковском деле. Для нашей деревни (г. Новокубанск) настоящие мажоры!
Позже, когда мне было уже лет 12, была еще одна книга — «Вводный курс в информатику». Родители заметили мое увлечение компьютерами и сказали: если хочешь, чтобы мы тебе купили ПК, прочитай эту книгу. И я честно изучил ее всю от корки до корки. Для меня это был целый талмуд — страниц 400, наверное. Ну и ПК мне купили — как сейчас помню: 128Мб оперативы, win95 и диск целых 20 Гб. Это был подарок мне на день рождения в 2000-м году. Родители хотели, чтобы я с его помощью развивался, я учил на нём английский. Мне кажется, этот подарок стал ключевым в моей любви к компьютерам.
В старших классах я программировал для собственного удовольствия на Pascal, и это доставляло мне огромное удовольствие. Кстати, на всю нашу школу (довольно престижную) было всего двое мальчишек, которые вот так вот программировали для себя. Информатики как предмета в школе не было, и меня учил друг, тогда уже студент. Я писал свою «игру»: это было текстовое приключение с катастрофическим количеством GOTO в коде.
Чтобы поступить в университет, я ходил на подготовительные курсы по информатике. Тогда только ввели ЕГЭ и никто толком не знал, как сдавать этот экзамен — и я, пользуясь случаем, ничего толком не делал. Но мне повезло: в марте на курсах устроили пробный ЕГЭ по профильным предметам — физике и математике (информатику тогда не сдавали). Я его написал ради интереса, получил соответственно 39 и 35 из 100 и понял, что такими темпами я никуда не поступаю. Оставшиеся два-три месяца пахал как не в себя — и настоящий ЕГЭ написал достаточно хорошо, чтобы поступить. Точные баллы помню только по русскому — 71. По математике и физике в дипломе отлично, а за экзамены примерно 68 по математике и около 60 по физике.
В общем, ничто так не бодрит, как замаячившие перспективы топтать плац вместо учебы в вузе.
Как вы искали свою первую работу в ИТ?
Дело было в 2009 году, тогда все веб-студии в Краснодаре можно было пересчитать по пальцам. Я ходил по городу и обрывал номера с объявлений, ходил на собеседования в самые разные места.
Расскажите про свое первое собеседование и первое место работы. Какой вы получили опыт?
Это был опыт сложный, брутальный и травмирующий. Меня не учили конкретной практике, и никто почти тогда этому не учил: курсов программирования было мало, даже видеороликов было не найти. Конечно, в вузе мы учились писать на C++, и я подрабатывал на кафедре, пытался поддерживать сайт. Но это все было бесконечно далеко от разработки.
Мне даже не приходило в голову где-то их искать и пробовать получить нужные навыки. Все тогда учились методом тыка и устной передачи знаний.
Однажды пришел по объявлению, меня спросили: «Что умеешь делать?» Я тогда только чуть-чуть учился писать на php в блокноте. Мне сказали — проваливай и больше не приходи.
В другой конторе первым делом сказали, что моим дипломом можно подтереться. Но там я все-таки проработал два дня! У начальства был странный подход к обучению сотрудников: они взяли меня с моим уровнем знаний и сказали, что научат всему, что нужно, но вместо этого всякий раз устраивали массовые перфомансы: всем офисом обсуждали, какой я идиот. Та фирма давно закрылась, а я — старший фронт. Ну и кто кого?
Третья фирма состояла только из меня и моего начальника. Я верстал отдельные страницы на сайте и отвечал на телефонные звонки от коллекторов, которые доставали шефа.
Все это меня научило только одному: плевать на дураков и все равно заниматься тем, что нравится, пусть пока и не за деньги.
Как складывался карьерный путь в ИТ после первой работы?
После всех неудачных попыток я забил на IT и пошел работать в колл-центр (мне было тогда 22 года). Параллельно программировал понемногу «для себя».
Однажды мой однокурсник Иван Могилат подогнал мне клиента, которому надо было сверстать форму обратной связи. Я неожиданно для самого себя справился с задачей — и получил свои первые деньги за программирование. Так я понял, что могу что-то делать и начал понемногу подрабатывать программистом на фрилансе. Но работать в таком режиме было сложно и не очень прибыльно. На фрилансе же как потопаешь, так и полопаешь, а «топать» как следует я тогда еще не научился.
Через пару лет я перешел в веб-студию уже в роли программиста — и вот там столкнулся с фронтендом. Это был совсем не тот фронтенд, с которым сейчас приходится иметь дело, а мучительная верстка под печально известный Internet Explorer 6. По сути, я работал фуллстаком — с Symphony на бэкенде и jQuery + KnockoutJS на фронте.
Потом в январе 2013 я пошел работать в компанию «Магнит»: там в то время работала моя жена, и я знал, что им всегда требуются IT-специалисты. Кодил бэк на Python и фронтовую часть на ExtJS (меня продолжало бросать из стороны в сторону). Писал новый функционал и поддерживал в рабочем состоянии инструменты для закупки.
Там я получил отличный опыт личного менеджмента: меня научили широко смотреть на свою работу. Например, когда работаешь и видишь косяк у коллеги в коде, не надо с постным лицом проходить мимо, как будто тебя это не касается. Либо иди к коллеге разбираться, либо исправь сам.
До 2018 года я получил очень разнообразный, но в целом поверхностный опыт программирования. И надо сказать, к фронтенду я тогда относился даже с брезгливостью. Может быть, сыграл свою роль негативный опыт с IE 6, но, честно скажу, тогда разработка на фронте казалась мне жалким служебным отстоем. А на бэке в это время творилась магия: базы данных, целые миры «под капотом»... Поэтому, когда тот же мой друг Ваня Могилат позвонил и сказал, что в Flowwow, где он работает, освободилось место фронтендера, я поначалу отказался. Но задумался! Начал изучать вопрос, и быстро выяснилось, что, пока я метался по разным направлениям, JavaScript очень изменился, появились Angular, Backbone… Кроме того, Ваня сказал, что у них фронтенд пишется на React, и я просто ради любопытства стал изучать этот стек.
Днем работал на фрилансе, а по ночам учил — и мне этот стек очень понравился! Прямо захотелось на нем поработать.
Какая была ваша первая зарплата, если не секрет?
Первая была смехотворной, даже называть ее нет смысла (ладно, это были 4000 рублей, я не шучу). А с 2013 года по уровню зарплаты я рос достаточно уверенно. В студии получал 15 тысяч рублей, и мне этого хватало на жизнь. В 2014 в «Магните» получал 25 тысяч, и тогда это казалось ох какой серьезной суммой. В 2018 на фрилансе зарабатывал уже под 80 тысяч — но это была работа нон-стоп и днем и ночью, без выходных и праздников. Так, конечно, не надо делать.
Сегодня попасть в ИТ стало проще — множество компаний предлагают свои программы обучения по разным специализациям. Сейчас на Хабр Карьере опубликовано более ста курсов для тех, кто хочет изучить фронтенд. Программы разные: как для опытных специалистов, так и для тех, кто хочет изучить профессию с нуля.
Компания
Как вы попали в компанию, в которой работаете сейчас? Где нашли вакансию, на какую должность, и как прошло собеседование?
Собственно, именно с Flowwow начался мой осмысленный путь во фронтенде. Меня собеседовали сооснователь компании и тимлид команды фронтенда Артем Гамбицкий, технический директор Дмитрий Шестернин и тогдашний фронтенд-девелопер Яна (меня брали ей в помощники).
К тому моменту я побывал уже на стольких собеседованиях, что совершенно не волновался. Наоборот, мне было любопытно, я решал задачки, которые мне дают, и задавал встречные вопросы — не чтобы показать заинтересованность, а из искреннего любопытства: зачем вы ищете нового человека? Куда предыдущий делся? Какой специалист вам нужен?
С 2018 года я работаю здесь — и, знаете, я не согласен с тем, что программисту надо каждые 2-3 года менять работу, чтобы не застаиваться. Фигня все это! Чтобы не застаиваться, надо просто не застаиваться, а смена компании тут ни при чем.
В профессии я однолюб. Всегда мечтал найти такую фирму, в которой проработаю до старости, отдам ей весь свой потенциал, время и знания.
Но на собеседования ходить важно, хотя бы ради того, чтобы не зазвездиться. Около года или полутора я сходил в один банк — и упрочился во мнении, что наш фронт устарел и его надо срочно развивать, иначе мы станем нерелевантны. Отчасти благодаря этой моей вылазке у нас сейчас готовится неофронт.
Как проходил процесс адаптации? С какими трудностями вы столкнулись?
Я как-то очень быстро почувствовал себя в своей тарелке. Помогал Иван, мой друг и наш бэкенд-тимлид — особенно по вопросам, связанным с бэком. Иногда бил по рукам, заставлял переписывать код, но мне такой формат работы как раз нравится. Это хоть и болезненный, но наиболее короткий способ вырасти в профессии.
Самым трудным оказалось оценивать сроки выполнения задач. Когда ты фрилансер, уметь оценивать задачи не так уж нужно: ты просто говоришь «за сегодня сделаю» и сидишь за экраном, пока не сделаешь. Поэтому и получалось, что на фрилансе я убивался по 12-13 часов почти без перерыва. Работал на износ и чуть не подорвал здоровье. Попробовал так же работать на Flowwow, но меня остановили. Дмитрий Шестернин позвонил и сказал: у нас тут не эстафета, а марафонский забег, поэтому экономь силы и трезво оценивай задачи.
Со временем я понял, насколько важно работать в комфортном темпе, но равномерно: я же не один работаю. Саппорт, маркетологи, дизайнеры завязаны на мою работу. Им тоже надо знать, когда включать свою маркетинговую магию, когда обратить внимание пользователей на другой функционал.
Какие знания у вас уже были, когда вы пришли в свою компанию?
Я бы сказал, что знания мои были обширны, но не слишком глубоки. Я умел кодить на всем понемножку: и на Python, и на JavaScript, и на PHP, и на Oracle.
И до сих пор мне кажется, что моя база пока недостаточно глубока — даже в тех вещах, с которыми я систематически имею дело уже четвертый год. То есть, мне мало, чтобы просто получалось: хочется чувствовать себя в коде еще более свободно.
Например, есть у нас в команде разработчик Женя Косухин, у которого невероятно крепкая база. Когда я читаю его код, то понимаю, что мне есть куда расти.
Как вы продвигались в компании? Какие навыки в этом помогли?
В Flowwow нет как таковой идеи карьерной лестницы: каждый растет над собой, растет его зарплата, но мы остаемся на одной горизонтали. Мне это безумно нравится.
Наш тимлид Тема бок о бок с нами пишет код и решает административные задачи, а мы работаем каждый над своей частью и видим, что происходит на других ветках.
В знаниях и опыте я очень продвинулся. Я в 2018 году — просто мальчик по сравнению со мной в 2022 году. Фронтенд тут ничем не отличается от других IT-сфер: ты растешь и по хард и по софт скиллам. Хард — это прежде всего качество кода и масштаб задач. Софт — это все, что относится к селф-менеджменту. Время оценки задачи, способность договариваться с командой, принимать решения. Их я отточил здесь до совершенства, и именно они позволяют мне оценивать себя как уверенного миддл+.
Ну и главный навык — ответственность и широта видения. Для меня уже совершенно естественно не проходить мимо лажи, а видеть ее и спокойно исправлять, неважно, чья она — моя или коллег.
На какую среднюю зарплату вы рассчитывали тогда и что получили?
Как и писал раньше, в 2018 году на фрилансе у меня выходило около 80 тысяч в месяц, но в каторжном режиме. В Flowwow я пошел с понижением оклада — насколько помню, стартовал с 60 тысяч рублей — но я понимал, что у меня будут выходные, стабильный график, да еще и коллегой будет мой друг. Это казалось просто каким-то чудом.
Честно, я даже не думал о зарплатных ожиданиях: к тому времени я измотал себя настолько, что мне стало почти всё равно, лишь бы я мог спать по ночам.
Сейчас во фронтенде чувствую себя отлично — в том числе и по зарплате. До событий последних месяцев рынок отечественного фронтенда рос как на дрожжах, особенно после ковидных ограничений, когда весь офлайн-бизнес рванул в сеть. Рынок дико перегрет, и зарплаты на фронте стали даже выше чем у бэкенда. И думаю, это не только из-за рынка, но и потому что фронтенд «повзрослел» и его значимость для бизнеса тоже выросла за последние 10 лет.
Раз уж зашла речь о трудоустройстве — сейчас на Хабр Карьере более 250 вакансий для фронтенд-разработчиков. Фронтендеров ищут Perfect Systems, White Code, Sportmaster Lab, Gradient CSLab и много других компаний.
У Flowwow, в которой работает наш герой, тоже есть открытые вакансии, но сейчас они для бэкендеров, мобильных разработчиков и аналитиков.
Опыт
Что сейчас нужно знать специалисту, чтобы попасть в вашу сферу?
Если кратко — дофига всего. Вход во фронтенд и раньше был непростой, а теперь это почти нереальная задача — начать с нуля.
В целом сфера предполагает, что:
Ты уверенно знаешь хотя бы один из основных фреймворков/библиотек: Vue, React, Angular (а лучше всех их хотя бы не бояться).
Твоя база — JavaScript: без нее нельзя научиться ничему из вышеперечисленного. Плюс, тебе придется уметь аккуратно верстать на CSS, и приготовься знать определенное количество html-тэгов.
Надо уметь работать со сборщиком скриптов, понимать, что такое гитхаб и как коммитить задачи. В целом, за два месяца этому не научиться, а за полгода — гипотетически можно, если как следует погрузиться и не отвлекаться больше ни на что.
Самое главное — нельзя просто за полгода научиться и дальше кодить спокойно. Так ты просто не успеешь за отраслью, которая развивается очень быстро. Приготовься каждый год осваивать новые стеки, технологии, подходы.
В целом, сейчас вполне адекватный путь во фронтенд из бэка. Сфера достаточно окрепла, чтобы предложить привычные бэкендеру вещи: объектно-ориентированное программирование, необходимость продумывать архитектуру проекта, покрытие тестами, использование привычных паттернов.
Какие бы вы выделили важные софт- и хард-скиллы для специалиста вашего направления?
Hard — описал выше: базовые фреймворки/библиотеки плюс навыки верстки. А главные soft skills — это коммуникативные навыки, способность донести до команды свое видение и аргументировать свои решения.
И еще — умение жить и развиваться на высоких скоростях. Главное отличие фронтенда от других сфер программирования — это очень короткий путь от идеи до результата. Ты видишь фактический результат своих трудов практически мгновенно: заверстал кнопку — и вот она уже видна на экране. Сделал так, чтобы данные по клику подтягивались в форму — и через неделю уже конверсия в покупку выросла. Это очень быстрая, увлекательная, даже азартная разработка. И сообщество JavaScript тоже развивается очень быстро. Адреналиновые маньяки получают настоящий кайф в такой среде: когда каждый год нужно догонять, апгрейдить себя.
Поговорим об ошибках? Что вы сделали не так за это время, что не нужно делать новичкам?
Думаю, что новичкам можно и даже иногда нужно очень много работать (не совсем так, как я на фрилансе, но все же). Если задача идет хорошо, и ты хочешь закончить, можно и посидеть над ней полночи — но тут еще надо, чтобы в команде к переработкам относились, как у нас, и отправляли трудоголиков отдыхать.
А вот чего не надо делать, так это вестись на рассказы постановщика задачи о том, что «там мелочи» и «задача ерундовая». По личному опыту, если менеджеры так говорят — значит, все с точностью до наоборот. Не пытайтесь делегировать другим оценку вашей задачи и не ведитесь, когда ее оценили за вас.
Есть еще одна характерная ошибка — искать в своей работе какой-то обозримый финал. Считать проект завершенным. Потому что во фронтенде часто бывает так: вы что-то решили, ты выполнил задачу на 90% — а потом понял, что что-то изменилось: в бизнесе, в постановке задач, в геополитике — в чем угодно. И вот тут важно не жадничать, не бояться переделать и не разрушаться от того, что ты где-то не поставил галочку насчет решенной задачки. Есть прогеры, которым такая ситуация невыносима, но я уверен, что они просто неправильно заряжены.
Укажу еще одну типичную ошибку новичка — биться над проблемой самостоятельно больше двух часов. Если ты за этот срок не смог решить проблему сам, прекрати тратить время понапрасну и иди советоваться к коллегам. Бизнесу нужны не героические усилия, а максимум результата за минимум времени.
С чего можно начать специалисту без опыта?
Начинайте с hard skills, идите на хорошие курсы JavaScript и как можно скорее пробуйте делать руками то, чему вас будут учить. Конкретные курсы не посоветую: лично мне всегда гораздо больше помогало чтение первоисточника, то есть технической документации.
Если речь идёт о высшем образовании, то я считаю его очень важной составляющей успеха. В процессе получения «вышки» ты сталкиваешься со всякими умными штуками — например, у меня это были генетические алгоритмы и методы их оптимизации. Сомневаюсь, что такая информация попалась бы мне просто так.
Высшее образование повышает и общую грамотность: когда разговариваешь с человеком без образования, замечаешь разницу. И, как нам всегда говорили преподаватели, «наша задача — научить вас учиться». Навыки самостоятельного поиска и анализа информации — это бесценно. Разумеется, всему этому можно научиться и без занудных лекций и профессоров, но с ними, как мне кажется, это проще.
От автора
Какие книги статьи, подкасты, курсы стоит почитать/посмотреть для развития в профессии?
Мы все разные. Кого-то максимально развивают видеокурсы, кого-то — чтение документаций, а кого-то — книги. Я из тех, кто больше за документацию: серьезно, просто откройте доку по vue, она сделана как учебник. По React тоже самое.
Наш тимлид Артем — гуру по профлитературе. К его рекомендациям я всегда прислушиваюсь, поэтому вслед за ним могу порекомендовать «Мифический человеко-месяц» Фредерика Брукса и «Чистая архитектура» Роберта Мартина.
Карьерный трек фронтендера
Мы часто слышим от специалистов на Хабр Карьере вопрос: как понять, что я уже сеньор? Или: что мне нужно сделать и освоить, чтобы вырасти до миддла?
Интервью с Константином — первое из серии. В каждой статье рубрики мы будем разбирать новую специализацию и показывать карьерный трек. Это инфографика с навыками, задачами и условиями работы, разбитыми по квалификациям.
Вот какой трек нам помог составить Константин и команда Flowwow.