Привет! Меня зовут Семирульник Валентин. Мне 25 лет. Живу в Питере.
Учился в Университете Технологии и Дизайна на информатике и вычисилительной технике. Бросил в начале 3 курса.
Я специализируюсь на фронтенде 7 лет, но не брезгую и смежными областями. Ближе всего мне автоматизация и CI/CD. Люблю тулинг. Мне кажется, что он по-своему прекрасен.
Аутсорсу предпочитаю работу в продукте. Круто, когда разрабатываешь то, чем сам можешь пользоваться. Это добавляет энтузиазма и мотивации.
- тайпскрипт нравится больше, чем флоу;
- не люблю точки с запятой;
- export default — это ошибка;
- предпочитаю реакт;
- вебпак — это просто;
- не вижу ничего сложного в серверном рендере;
- раздражают споры про перфоманс CSS-in-JS;
- не пугает интерактивный ребейз;
- уважающие себя люди не пользуются битбакетом;
- хочу изучить Go.
Информация дополнялась годами и какие-то ссылки могут не работать или быть неактуальными.
Мелкий фриланс, просто вёрстка.
Работал в Красной Гвардии. Занимался в основном лэндингами, меликими правками. Последним проектом был сайт компании ВПраве (вёрстка, JS, обработчик формы на PHP). Ушёл из компании, т.к. стали задерживать зп и начались проблемы. В итоге компания просуществовала до лета и закрылась с долгами.
Разрабатывал проект Гильдии Игры дизайнеров. Вёрстка, обработчики форм, загрузка файлов. Проектная работа.
Контракт с Фогеймом. В основном небольшие странички под эвенеты, акции и патч-ноуты. Здесь впервые столкнулся с Babel и реактом.
- Табличные рейтинги на основе существующей кодовой базы, переделал компонент поиска.
- Карта осад — здесь все довольно просто, но это был первый настоящий опыт с реактом и серверным API.
- Битва генералов. Юзер мог выбрать команду, смотреть живые графики с ежедневной статистикой и увидеть итоги ивента.
Не стал продлевать контракт, т.к. хотел более стабильной занятости и, как следствие, стабильной зп.
Сделал тестовое для 4xxi, но отказал им. Ещё одно для Злых Марсиан — не смогли договориться с заказчиком.
Работал в Рублёвка.ру: делал сложную карусель на реакте, выкидывал Immutable из формы сортировки, делал админ-панель с помощью redux-form.
Работал в Студии Михаила Кечинова. Очень много вещей не соответствовало моим представлениям о фронтенд-разработке, и занимался совсем не тем, чем хотел. Рубисты, которые передают данные через window
, сами пишут JS, Sprockets вместо нормального тулинга, вёрстка на бутстрапе и прочие радости жизни. Как следствие — выгорание.
Постепенно старался влиться в опенсорс сообщество. Написал плагин для PostCSS и немного контрибьютил в react-boilerplate
Пробовал GraphQl и Relay в рамках пары тестовых.
Стал ведущим фронтендером в Купибилет.ру. Это был мой второй и самый удачный продукт.
Я пришел на позицию обычного разработчика, от старой команды оставалось 2 человека. Через 3 месяца был повышен до фронтенд-лида. За 2 года собрал команду из 6 фронтендеров.
В мои задачи входили:
- планирование и работа над редизайном;
- продумывание архитектуры;
- код-ревью;
- найм (собеседования и ревью);
- планирование спринтов.
Хотелось расти куда-то дальше/выше, но оказалось некуда.
Из достижений:
- вытянули проект из глубочайшего легаси (react@0.10 и гора sass);
- гибридиный рендер из HBS и реакта на клиенте перевели полностью на SSR реакт (redux-saga, s-c, react-loadable);
- немного поработал с Redis (на нём делали кэш для SSR);
- сделали редизайн основного флоу пользователей;
- сделал систему аналитики для небольших аб-тестов на Elasticsearch и grafana (чуть позднее ребята поменяли эластик на кликхаус)
- настроил CI/CD с помощью Gitlab, Docker Swarm и Traefik — каждая ветка раскатывалась на свой поддомен и доступна для демонстрации/тестирования;
- запускали микро-сервисы (например, популярные направления) силами фронтенд-команды без привлечения бэкэндеров;
- сделали свой UI-кит (так же в организации есть немного другого опенсорса);
- предложил и реализовал пару продуктовых решений (например, упростил отображение выдачи авиабилетов)
- внедрил скрам с двухнедельными спринтами — мы испытывали проблемы с беклогом (нам не хватало реальных задач, хотя планов по развитию было много) и переход позволил больше времени уделять планированию, мы стали заранее понимать, что у нас будет свободные руки на какие-то экспериментальные задачи или техдолг;
Работал в osome.com. Поддерживал существующие и разрабатывал новые модули дешборда для внутренного использования. Интересный опыт, т.к. при работе над инхаус-проектом какие-то оптимизации становятся не столь критичными, как при работе над проектом для публичного использования.
В январе компания приняла решение консолидировать разработку в Москве. Предложили переезд — отказался.
Фронтенд-архитектор в Альфа-Банке. Моя команда из 30 фронтендеров занимается основным сайтом — те страницы, которые позволяют пользователям стать клиентом банка. Специфика проекта: большое количество контентых правок, изменения ставок по ипотеке, разные условия в разных регионах и т.д. В связи с этим нам понадобился инструмент, позволяющий без разработчиков собирать страницы/вносить правки. Таким образом сайт состоит из бекенда, который присылает список компонентов и их настройки, рендерилки, которая данные превращает в html и CMS для управления этим контентом.
В мои обязанности входит проектирование клиентской инфрастуктуры, проработка API, техническая помощь фронтендерам и их развитие, модернизация тулинга, поиск узких мест, различиные оптмизации процессов и кода.
Результаты за 1.5 года:
- внедрил раздельные бандлы для старых и новых браузеров — сэкономили 9% от бандла;
- сделали сжатие через brotli — смогли сэкономить ещё 30% на ассетах;
- нашёл утечки в серверном рендере (приложение рестартилось каждые 4 часа);
- ускорили пайплайны двух проектов на 19 минут (45%) и 2 минуты (10%);
- рефакторил core-слой, отвечающий за рендер страниц — модуль стал более простым и предсказуемым;
- упростил API для получения страниц — ответ был чересчур сложными структурами данных, получилось сэкономить и на размере запроса и упростить формирование и разбор ответа;
- сделал временнное решение для управления контентом страниц — только придя в команду, столкнулся с проблемой отстутсвия инструмента для управления контентом. За пару недель получилось реализовать инструмент, которым разработчики пользуются больше года;
- проектировал CMS для управления страницами — учитывая предыдущий пункт, нужно было в короткий срок сделать MVP для управления контентом, которым могли бы пользоваться и контент-менеджеры. Я спланировал основную архитектуру, выбрал библиотеки, ревьювил и подсказывал узкие места;
- помог командам сформировать недельный релизный цикл и делегировал дежурство на разработчиков;
- перевёл проект на yarn v2;
- менеджу внедрение HTTP2 и CDN;
- продумал и реализую архитектуру, позволяющую 7 командам релизиться независимо друг от друга;
- внедряю Sentry.
На текущий момент я не нахожусь в активном поиске, но открыт к предложениям. Мне не хватает продуктовой эмпатии, и из-за этого я не чувствую удовлетворённости/наслаждения процессом и приходится из себя «выдавливать» производительность.
- трижды выступал на SPB Frontend
- доклад про обновление зависимостей и борьбу с легаси
- доклад про конфигурирование чанков вебпака;
- Проклятие обратной совместимости — как я делал разделение на ES5/Modern бандлы
- выступал на FrontHub с докладом о том как быстро и дешёво построить CI/CD;
- вёл неделю в https://twitter.com/jsunderhood хоть и не очень удачно (за неделю ушел в -5 фолловеров).
Здесь описаны технологии, с которыми мне довелось поработать за это время.
- HTML/CSS (семантично, адаптивно)
- JS от ES5 и выше
- Flow
- Typescript
- CSS-in-JS (styled-components)
- Препроцессоры: less/sass/stylus/SugarSS
- PostCSS
- БЭМ, CSS-модули
- Grunt/Gulp/webpack.
- Pug(jade)/Slim/Handlebars
- React (react-router, react-virtualized, downshift, react-select, react-loadable и др.)
- Redux
- GraphQL/Apollo
- node.js
- express/koa/micro
- ESLint (мне нравится этот код-стайл)
- yarn, npm, Yeoman, bower
- Git
- Модули: CommonJS/AMD/ES2015
- Сборка через: Browserify, webpack, rollup
- Юнит-тесты через Jest и AVA, Enzyme, code coverage
- E2E тесты с nightmare.js и puppeteer
- CI (Travis, Gitlab CI, Bitbucket pipelines)
- Docker, Swarm, Traefik
- nginx
- Elasticsearch, Redis
- Grafana
- Gatsby, Ghost, Jekyll
- Фотошоп/Sketch
Семирульник Валентин
Телефон: +7 999 247-17-45
Telegram: v7rulnik — предпочительный способ связи
Skype: v7rulnik@hotmail.com
Email: v7rulnik@gmail.com
VK: https://vk.com/semirulnik
Twitter: https://twitter.com/7rulnik
GitHub: https://github.com/7rulnik
Medium: https://medium.com/@7rulnik