Senior Frontend Developer / Tech Lead (Vue.js, TypeScript)
Моска, РоссияСеньор
Удаленная работа • Частичная занятость • Работа в офисе
Опыт работы более 5 летот 300 000 до 400 000 ₽
Опыт работы более 5 летот 300 000 до 400 000 ₽
Есть файл резюме (защищен)
Короткая ссылка: gkjb.ru/g1AdJ
О себе
На данный момент Senior Frontend Developer.
Мои компетенции и опыт
Ищу позицию Tech Lead / Senior Frontend Engineer. Мой стек — нужен доступ к резюме 2/3, TypeScript, Nuxt, Pinia, Webpack 5/Vite.
Мои главные кейсы на позиции Tech Lead в Goodt (BI-платформа Insight):
- Внедрил микрофронтенды (Module Federation): это позволило передать часть разработки внешним партнерам и клиентам, разделить релизные циклы, перейти к модели SaaS. Итог: освободил внутренние ресурсы команды для развития целевой стратегической функциональности и сократил релизный цикл.
- Бизнес-ориентированный Feature Toggles: реализовал систему управления фичами на уровне лицензий, что позволило гибко разделять тарифы и кастомизировать продукт «на лету» без пересборки (прогнозируемый рост рыночного покрытия — +30%).
- Снизил процент ошибок и скорость отладки: улучшил API базового Vue-компонента для разработчиков, автоматизировал проверки линтером. Внедрил кастомный плагин Vue DevTools для отладки и централизованный сервис обработки ошибок. Время на Code Review сократилось на 30-40%, выросла скорость тестирования, а ошибки стали более наблюдаемыми.
- Ускорил работу приложений: Разделил кеш серверного состояния и рантайм-стейт приложения – перевел API-клиенты на TanStack Query, убрав до 30% повторяющихся запросов к серверу.
- Автоматизация и FrontOps: Инициировал переход на GitLab и настроил CI/CD пайплайны для десятка продуктовых и инфраструктурных репозиториев. Это упростило деплой, вовлекло SA и QA в релизный воркфлоу и сократило time-to-market.
- AI-Driven Development: Оптимизировал личный рабочий процесс с помощью AI-агентов (OpenCode) и локальных LLM (Ollama, oMLX). Использую AI для автономного выполнения точечных задач (рефакторинг, разработка изолированной функциональности, e2e-тестирование на Playwright). Умею закладывать архитектурные критерии качества кода, необходимые для эффективной работы ИИ-ассистентов.
🔑 КЛЮЧЕВЫЕ НАВЫКИ
TypeScript, JavaScript, CSS, HTML, Web Components, Service Worker, Web Worker
нужен доступ к резюме 2/3, нужен доступ к резюме , Vuex/Pinia, Vue DevTools, Vitest, Quasar, Ant Design Vue, TailwindCSS
Webpack 5, Vite, Module Federation, REST API, GraphQL, Apollo, TanStack Query
Playwright, Jest, Vue Test Utils
Gitlab CI/CD, Sonatype Nexus, Jenkins, Keycloack, Figma
Docker, Git, Bash
SOLID, FSD, OAuth 2.0, OpenID Connect, JWT, Content Security Policy
OpenCode, AI-agent coding assist, local LLM, Ollama, oMLX
👷 ИНЖЕНЕРНАЯ ПОЗИЦИЯ
🔹 Архитектурный уровень (Architecture)
• Разделение ответственности: Строю приложения на принципах чёткого разделения ответственности (Separation of Concerns). Бизнес-логика, инфраструктурный код (API, кеширование, хранилища) и UI-представление никогда не смешиваются.
• Методологии: Опираюсь на подходы DDD (Domain-Driven Design) и SOLID. Особое внимание уделяю инверсии зависимостей (Dependency Inversion) как главному инструменту обеспечения тестируемости кода.
Управление состоянием: Придерживаюсь принципиального разделения на кэш серверных данных и рантайм-стейт (клиентское состояние, state management) приложения.
• Масштабируемость: Проектирую сложные системы с учётом микрофронтендной архитектуры (Module Federation) для обеспечения независимой поставки модулей раздельными командами.
🔹 Паттерны проектирования (Design Patterns)
• MVVM как фундамент: Использую паттерн MVVM, переосмысляя роль ViewModel (часто недооценённой во фронтенд-разработке на фреймворках), которая становится ключевой.
• ViewModel как Composition Root: В моей практике ViewModel выступает в роли «Фасада» и «Медиатора», являясь точкой композиции всех слоёв — домена, инфрастурктуры (API, кеширование, хранилища), слоя приложения и слоя представления.
• Тонкий UI-слой: View остается абсолютно тонким слоем, который отвечает исключительно за отображение подготовленных для него данных и триггер команд (Commands) во ViewModel.
🔹 Организация кода (Codebase Structure)
• «Кричащая» архитектура (Screaming Architecture): Структура папок проекта должна с первого взгляда отражать бизнес-контекст и функциональные области, а не технические детали.
• Фиче-центричность (Feature-driven): Использую «фичу» как основной структурный элемент. Под фичей понимаю законченную бизнес-функциональность, включающую UI, а не просто набор сценариев над сущностями. Допускаю вложенность подфич и поддоменов — сегментация должна быть естественной и происходить внутри фичи.
• Критика FSD (Feature-Sliced Design): Отношусь к FSD с осторожностью. На сложных, масштабных проектах жесткие правила FSD часто приводят к деструктивному разделению (destructive decoupling), порождая избыточную навигацию и мешая разработке, вместо того чтобы помогать ей. Разделение не должно быть навязано глобально и искусственно.
🔹 Динамический UI и AI-ready подход (Next-Gen Dev)
• Data-Driven & Generative UI: Имею опыт (для нужен доступ к резюме ) проектирования вариативных UI-интерфейсов на основе метаданных. Вместо жесткого хардкода всех вариаций UI, я переношу метамодель композиции компонентов в рантайм. Интерфейс генерируется динамически на основе JSON-метаданных, а конфигурируется независимо без изменения кода. Это ускоряет адаптацию под бизнес-сценарии и снижает стоимость изменений.
• Проектирование под AI-агентов: JSON-контракт метаданных UI гораздо более понятен AI-моделям, чем произвольный программный код. Это позволяет AI не писать код компонентов «с нуля», а собирать интерфейсы из готовых по четкому контракту, закладывая базу для автономной AI-разработки.
• Качество кода как фундамент для AI: Строгая типизация (TypeScript), высокая тестируемость и сквозные автоматические проверки — это не просто маркеры качества кода, а жизненно необходимая среда для внедрения и безопасной работы автономных AI-агентов в цикле разработки.
Есть файл резюме (защищен)
Интересные кандидаты
Мы используем куки, потому что без кук наш сайт не работал бы, другие сайты не работали бы, да и вообще весь
интернет не работал бы
