Fullstack JavaScript / TypeScript / Node.js / Golang / Rust Developer

Москва, Россия
Сеньор • Тимлид/Руководитель группы • Архитектор • Консультант
Информационные технологии • Разработка • Fullstack • Frontend • Bash • Go • JavaScript • Lua • Node.js • Rust • SQL • TypeScript
Релокация • Удаленная работа • Частичная занятость
Опыт работы более 5 лет
О себе

На данный момент Ведущий инженер-разработчик.

Мои компетенции и опыт

Последние несколько лет работал в компании VK и занимался инфраструктурой фронтенда одноимённой соцсети с MAU 80 миллионов пользователей. 

Писал на JS, TS, нужен доступ к резюме , Rust, PHP, Python, GO, bash, make и awk. 

На постоянной основе взаимодействовал/настраивал/разворачивал/допиливал c Lighthouse, WebPageTest, Statoscope, Sentry, Grafana, Watchdog, PostgreSQL, ClickHouse, Jest, Selenium, GitLab CI/CD, GitHub Actions, TeamCity, Docker, Kubernetes

Моими основными приоритетами были:

1. Скорость и стабильность работы сайта ( нужен доступ к резюме и нужен доступ к резюме ). Мы в основном опирались на Lighthouse-метрики (TTFB, LCP, TTI и т. д.). Приходилось ковыряться в исходном коде вебпака и компилятора, писать для них плагины. Придумал систему анализа графов зависимостей и модулей на основе этого сделал оптимистичную предзагрузку кода и обучил разработчиков как это использовать, улучшал и рефакторил огромное сложное легаси, резал чанки и сжимал картинки. За время работы удалось вывести многие показатели из красной зоны, а некоторыми даже потрогать зеленую.

2. Работоспособность на всех устройствах. Я считал, сколько пользователей на каких устройствах сидят, для каких устройств мы можем сделать сборку с полифиллами, а какие устройства больше не поддерживаем. Я двигал планку.

3. Аналитика для всего. Я поднимал свой сервер Webpagetest и Lighthouse, разбирался с AA/BB-тестами, фича-флагами, Сентри, Ватчдогами и Графаной. Нам нужно было точно знать, у кого, как и что работает или сломалось.

4. Сборка фронта — как быстро она происходит и как часто падает. В этом направлении было проделано очень много работы: из крупного я занёс SWC вместо Babel и рассказал об этом на HolyJS:  нужен доступ к резюме Писал под него плагины на Rust. Я начал перевод сборки всего фронта на RsPack, использовал некриптографический xxhash вместо md5 для хешей (+5% к скорости) и делал много чего ещё. Кодовая база постоянно росла и это требовало всё более радикальных мер и постоянного анализа Статоскопа в поисках точек улучшения. В итоге, когда я пришёл в команду, сборка занимала около 20 минут, а после моей работы — 6 минут. При этом кодовая база росла, фичи пилились и т. д.

5. Улучшения жизни для продуктовых разработчиков. Например, у нас несколько лет Storybook практически не работал, отстал на несколько версий, и все уже почти смирились, а продуктовых разрабов кормили завтраками. Я взял эту задачу на контроль, обновил Storybook и заставил его работать, нашёл тех, кто будет его поддерживать. Я постоянно искал возможность улучшить вещи вроде установки пакетов: пробовал npm вместо yarn (который у нас был старой версии), в итоге обновил yarn до новой версии (сохраняя локфайл от дедов!) — и пакеты стали ставиться не за 3 минуты, а за 30 секунд.

написал небольшой Go-сервис с REST API, который автоматизировал выдачу и проверку прав для тестового окружения. Это позволило инженерам экономить несколько часов в неделю вместо ручного заполнения заявок.
 

Написал на Go сервис (агрегатор + веб-интерфейс), который централизованно собирал все кастомные TypeScript-правила и конфигурации линтеров из разных команд VK. Теперь инженер мог зайти на внутренний сайт, найти нужную практику или "хитрый" кейс и применить её у себя. Это создало общую базу знаний и ускорило внедрение лучших подходов между командами, сэкономив нам несколько часов в неделю».

 6. Архитектурные решения. Я состоял в архитектурном комитете, где мы в башне из слоновой кости решали, как реализовать DI, как разделять сборки, как внедрить Эффектор и как от него отказаться в пользу MobX. Множество обсуждений и дискуссий, а потом — конкретные шаги по внедрению.

 

Также я один из создателей единого процесса найма фронтендеров для всего холдинга. Во время разработки этого процесса основной моей задачей было убедить коллег, что нельзя делать собеседование похожим на экзамен и мучить человека литкодом. При этом найм должен был работать для масштабов тысяч кандидатов и сотен собеседующих. В итоге нам удалось создать относительно гуманную и быструю воронку.

Помимо этого, постоянно взаимодействовал с админами и девопсами по вопросам — от «надо сделать автоматический деплой плагинов на Rust для всего VK» до «давайте запилим универсальную сборку neovim»

 

На фронтенде я больше всего использовал React и Vue, также есть некоторый опыт с Angular и Svelte. 

Бекенд а также BFF, SSR и подобные промежуточные и инфраструктурные вещи я писал на нужен доступ к резюме , также имею опыт работы с Go, Rust и немного Python.

 

Пишите мне в телеграм

нужен доступ к резюме

 



Интересные кандидаты