Егор Яковишен, Setka: «В состоянии дедлайна у меня открываются сверхспособности»
О первых шагах в веб-разработке и о том, какие черты отличают настоящего мастера в этой профессии.
Иллюстрация: liuzishan / rawpixel / Freepik / Christopher Gower / Jon Flobrant / Unsplash / Setka / Дима Руденок для Skillbox Media
Егору Яковишену 29 лет. Он руководит фронтенд-разработкой продуктов для медиа в компании Setka и является экспертом Преакселератора ФРИИ. Ведет курс по JavaScript. В интервью для Skillbox Егор рассказал о своих первых шагах в веб-разработке и поделился мнением о том, какие черты отличают настоящего мастера в этой профессии.
В интервью Егор рассказывает:
- Про свою работу в Setka;
- Про то, как в компанию отбирают сотрудников;
- Как начинающему разработчику избежать типичных ошибок;
- Какие программы, сервисы и ресурсы нужны верстальщикам;
- Каких трендов стоит ждать в веб-разработке в ближайшие годы.
— Расскажи, пожалуйста, немного о Setka. Что это за компания?
— Setka — это технологический стартап, который родился в стенах издательского дома Look At Media, известного по таким проектам, как The Village, Wonderzine, FURFUR, Look At Me и Hopes & Fears. Для управления процессами внутри издательского дома и облегчения работы контентных команд мы создали несколько продуктов, в частности Editor и Workflow. Workflow помогает оптимизировать процессы создания и дистрибуции контента, а Editor — это продвинутый редактор вовлекающего контента, не требующий знания HTML.
В этих двух продуктах сконцентрирован наш 10-летний опыт работы на рынке медиа.
— Как складывается твой обычный день в Setka?
— Я приезжаю в офис часам к 11 утра. Открываю YouTrack и смотрю задачи на день — что висит на мне, что делают коллеги, за которыми я слежу. Почти каждый день я пишу код. Часто хожу на продуктовые или технические совещания, на которых мы обсуждаем какие-то отдельные фичи или решаем стратегические вопросы по дальнейшему развитию продуктов. Иногда бывают переговоры с клиентами. И около 8 часов вечера я довольный уезжаю домой.
— Сколько человек у тебя в подчинении?
— В данный момент это два middle-разработчика, над которыми я являюсь тимлидом.
— Ты для них как играющий тренер, поскольку тоже пишешь код, верно?
— Да, я сам пишу, и проверяю код, который пишут они. Мне нравится этим заниматься, поэтому все верно: я играющий тренер.
— А как вы отбираете веб-разработчиков в Setka?
— В первую очередь смотрим на реальные знания. Это гораздо важнее каких-то курсов или высшего образования. Смотрим, насколько человек близок нам по духу. Пока удается находить таких людей — у нас очень низкая текучка. Если говорить про тесты и экзамены, то помимо технических вопросов на собеседовании мы даем тестовое задание. Смотрим на элегантность решения, на качество кода, а также насколько это соответствует тем технологиям и принципам, которые мы у себя используем.
— Что можешь порекомендовать разработчикам, которые хотят попробовать себя на тестовых задачах?
— Рекомендую сервис Сodewars. Дословно переводится как «войны кодов». Там собрано большое количество различных задач, тестов, челленджей, которые можно выполнять, соревнуясь друг с другом, набирать определенные очки и таким образом прокачиваться.
— А с чего ты сам начинал обучение профессии веб-разработчика?
— Все началось в школе. Мы с другом увлекались компьютерными играми. В какой-то момент стало интересно, как все устроено изнутри. Стали копаться в коде, одновременно делали сайт на narod.ru, посвященный игре Counter-Strike. Освоил простейшие азы веб-разработки: HTML, CSS. Взял первые заказы, втянулся, некоторое время работал на фрилансе, а в 2006 году устроился в веб‑студию HTML‑верстальщиком. А уже в 2008 году открыл свою студию. На сегодня я занимаюсь веб-разработкой уже 12 лет.
Хочу отметить, что в начале 2000‑х интернет не был развит так, как сейчас. Не было никаких мобильных устройств, а полезной информации на русском языке в сети было гораздо меньше. Поэтому я учился в основном по книжкам. Верстал простые сайты, набивал шишки, смотрел примеры чужого кода, пытался повторить у себя. И так постепенно вырос.
— Как изменился набор скиллов для начинающего веб-разработчика в 2018 году по сравнению с требованиями 5-6-летней давности?
— Вход в профессию стал гораздо более плавным и дружелюбным. Сейчас существует масса фреймворков, например, React или Angular, которые позволяют быстро начать разрабатывать веб-приложения. Даже начинающий разработчик будет востребованным на рынке.
Очень важно знать английский язык. Все ключевые материалы сначала появляются на нем. Чем раньше ты их прочтешь, разберешься и начнешь применять у себя, тем круче станешь, а значит, получишь преимущество перед другими разработчиками.
Важно не сдаваться при первых же неудачах. Что-то не заработало сразу? Пиши снова, разбирайся, повторяй работу над ошибками.
Нужно развивать абстрактное мышление. Способность превращать задачи, о которых говорит клиент, в алгоритмы — вот что отличает опытного разработчика от начинающего.
— А какие ошибки чаще всего совершают начинающие веб-разработчики, и что им можно посоветовать?
— Я рекомендую уделять большое внимание аккуратности написания кода и вообще структуре своего приложения. Если вы научитесь писать код, но не научитесь его правильно структурировать, ваше приложение очень быстро скатится в хаос, в котором не разберетесь ни вы, ни другой разработчик, ни кто-либо вообще, кто с ним будет иметь дело. Поддерживать такое приложение будет невозможно, это будет обходиться очень дорого, будет огромное количество багов и, скорее всего, в какой-то момент его придется выкинуть и переписать.
Очень важно не ошибиться в выборе технологии. А то получится так, что вы потратите время на освоение технологии, которая будет уже неактуальна. Например, так получилось с флэшем. Другие примеры — фреймворк Backbone или язык Delphi.
А вот все, что связано с машинным обучением и искусственным интеллектом, является хорошим направлением для выбора направления в профессии.
— Каким софтом для разработки ты пользуешься сам и что из сервисов, сайтов можешь порекомендовать всем разработчикам для изучения?
— Основной браузер для разработки у меня Google Chrome. В нем самые удобные средства для разработчика — Chrome Developer Tools. Остальные браузеры не выдерживают конкуренции.
Редактор кода, в котором я сейчас пишу, — это Visual Studio Code от Microsoft. Я переехал на него с редактора Atom полгода назад. VS Code работает быстрее и стабильнее, чем Atom, и не требует особой кастомизации. В Atom постоянно приходилось что-то под себя настраивать или искать отдельные решения. А в VS Code многое есть прямо из коробки, например, встроенный терминал или система контроля версии.
Из веб-сервисов, конечно, рекомендую GitHub. Это репозиторий открытого кода, там можно посмотреть, что делают другие, найти какие-то решения для себя и загрузить свой код. По сути, GitHub — это одновременно резюме и портфолио для разработчика.
Далее — это сайт StackOverflow. Практически на любой вопрос, который у тебя возникает, там уже дан ответ. Ну а если его нет, то стоит только задать, как посыпятся ответы от других разработчиков.
Часто заглядываю на caniuse.com. Это сайт, где собрана информация о поддержке браузерами различных фич. Допустим, в свежем стандарте языка JavaScript вышла какая-то новая возможность, и нужно понять, какие браузеры ее уже поддерживают, какие еще нет, а где поддержка планируется.
Сам пользуюсь и другим рекомендую сайт learn.javascript.ru. Это очень подробный, хорошо написанный практический учебник по JavaScript на русском языке с огромным количеством различных кейсов, применений, особенностей работы в разных браузерах.
И еще, пожалуй, будут полезны книги из из серии «You Don’t Know Javascript». Они о глубинных особенностях JavaScript — о том, как работает движок, интерпретатор. Я многое узнал о том, как работает язык изнутри. Поэтому всячески рекомендую к прочтению.
— Что ты делаешь, чтобы войти в сознание потока, сконцентрироваться на работе с кодом?
— Перед началом работы я разбиваю задачу на мелкие подзадачи и действую по ним, вычеркивая галочку за галочкой. Я всегда работаю в первой половине дня, а лучше всего — ранним утром. Не могу работать по вечерам или ночью. Часто включаю музыку без слов, чтобы не отвлекаться. Заметил за собой, что в состоянии дедлайна у меня открываются сверхспособности, я начинаю быстро принимать решения, что и как сделать, не тратя время на второстепенные мелочи. Возможно, это неплохо для кодинга, но скверно с точки зрения управления процессами. К счастью, в Setka мы научились планировать работу так, чтобы стрессовых для разработчика моментов было как можно меньше.
— А за кем из разработчиков ты наблюдаешь, прислушиваешься к их мнению?
— Таких людей много. Могу назвать Дэна Абрамова. Это россиянин, который написал всемирно известную библиотеку Redux и сейчас работает над развитием React. Это настоящая звезда в мире веб-разработки, человек, который самостоятельно попал на самый верх.
Всегда с интересом наблюдаю за командой, которая занимается развитием браузера Google Chrome. Они очень активно участвуют в разработке новых фич для JavaScript, выступают с докладами на конференциях.
Из российских разработчиков могу назвать Вадима Макеева (интервью с Вадимом читайте тут) и Алексея Симоненко из HTML Academy. Они уже много лет занимаются популяризацией веб-разработки в России.
Смотрю, что делает Роман Дворнов из Avito. Это опытный и талантливый веб-разработчик. Илья Кантор, чей сайт я уже упомянул сегодня — learn.javascript.ru. Но на самом деле таких людей много, я назвал тех, кого вспомнил на данный момент.
— Сколько лет нужно заниматься веб-разработкой, чтобы, условно говоря, у тебя появился черный пояс как признак мастерства? И в чем выражается профессионализм веб-разработчика?
— Чтобы получить такой черный пояс, надо пройти путь от Junior до Senior. Это займет в среднем от 5 лет. Что касается мастерства веб-разработчика, то я отмечу следующие скиллы:
- Понимание общих паттернов разработки. Что ведет к успеху, а что точно будет ошибочно.
- Умение смотреть на ситуацию с высоты.
- Умение принимать взвешенные решения.
- Быстрая скорость разработки.
- Умение декомпозировать задачи.
Отдельно хочу остановиться на таком скилле, как скорость разработки. Часто бывает так, что middle-разработчики, достигнув определенного мастерства, ударяются в детали. Месяцами шлифуют код и так далее. А опытный разработчик понимает, что частью фич можно пожертвовать, что-то потом отрефакторить, но нужно как можно быстрее выйти на рынок. Тогда больше шансов, что ты выживешь и займешь какую-то доминирующую позицию на рынке или как минимум не умрешь быстро.
— Какие тренды в веб-разработке будут в ближайшие 2-3 года?
— Думаю, что язык JavaScript продолжит занимать очень серьезные позиции, причем не только во фронтенде, но и на бэкенде. Сейчас очень много веб-приложений со стороны бэкенда пишется при помощи Node.js, и, по сути дела, изучив язык JavaScript, можно быть full-stack-разработчиком, зарабатывать достаточное количество денег и заниматься интересными проектами.
Появляется все больше фреймворков, с помощью которых можно быстро собрать приложение. По сути, фреймворки за вас продумывают правильную структуру приложения. Остается только встроить бизнес-логику в структуру фреймворка, и приложение готово.
Во фронтенде процветает так называемый компонентный подход — это когда страница составляется из большого количества маленьких независимых компонентов, каждый из которых несет собственную механику и внешний вид, а между собой они общаются при помощи общего соединяющего звена.
Эти компоненты могут переиспользоваться на разных страницах приложения или вообще даже в разных приложениях. Особенно это заметно в JavaScript, где очень популярен Node Package Manager (NPM). Это огромное хранилище, где собрано свыше 650 000 тысяч пакетов. Каждый из этих пакетов — отдельный маленький или средний компонент, который можно использовать в своем приложении. Гигантский бесплатный склад, где можно найти что угодно.
Конечно, нельзя не отметить тренд на мобильную веб-разработку. Трафик с мобильных устройств во многих областях уже опережает десктопный. Мобильная разработка будет и дальше расти. Вот основные тренды, которые я вижу.
— Спасибо большое за интервью!