$ ls -la ./blog
Заметки о frontend-разработке, архитектуре, инструментах и карьере.
Из разработчика в лида: что меняется на самом деле
Выглядит как повышение, а по факту это смена профессии. Про исчезнувшую обратную связь, невидимую работу и ошибки, которые я успел совершить.
RAG на пальцах: бот, который отвечает по нашим документам
Как устроен чат-бот поверх внутренних регламентов: эмбеддинги, векторная база, разбиение на куски. И где эта конструкция ломается.
ИИ в разработке: где реально ускоряет, а где только кажется
Внедрял ИИ-инструменты и как CTO, и как разработчик. Без восторгов и без отрицания - что показали исследования и какие правила пришлось ввести.
Infrastructure as Code глазами фронтендера
«Давайте поднимем такое же окружение для нового клиента» — фраза, после которой выяснилось, что повторить его никто не может. Как мы переезжали на Terraform.
CI/CD для фронтенда: конфиг, который можно забрать себе
Порядок шагов, кэш зависимостей, multi-stage Docker и превью-стенд на каждый PR. Плюс грабли с переменными окружения, на которых обжигаются все.
Как измерять разработку и не скатиться в подсчёт строк кода
Четыре метрики DORA, как я их собирал без дорогих платформ и почему их нельзя вешать на конкретного человека.
Code review, который не бесит
Правила ревью, до которых я дошёл, пока курировал шесть десятков разработчиков. Про размер PR, скорость ответа и формулировки, от которых не хочется драться.
Что тестировать на фронте, а что не стоит
Самый бесполезный тест, который я видел на ревью, был зелёным всегда. Разбираю, чем полезный тест отличается от теста ради процента покрытия.
Почему этот блог отдаёт почти ноль JavaScript
Сайт, который ты сейчас читаешь, собран на Astro. Рассказываю про архитектуру островов и где я беру Astro, а где всё-таки Nuxt.
«Нам SSR или SPA?» - неправильный вопрос
Режим рендеринга выбирается не на проект, а на маршрут. Как это делается в Nuxt и что обычно ломается при переезде со SPA.
Core Web Vitals: перевожу «сайт тормозит» на язык цифр
LCP, INP и CLS простыми словами — что означают, какие пороги и чем я их реально чинил. Плюс про то, как INP заменил FID и почему это важно.
Почему Vite быстрый — и что делать, если он всё равно тормозит
Как устроен dev-сервер на нативных модулях, зачем там esbuild и Rollup, и пять реальных причин, по которым Vite на проекте может еле шевелиться.
WebSocket в проде: всё, что приходится дописать вокруг одной строчки
new WebSocket(url) отлично работает на демо. Что к нему добавляется, когда чат должен пережить метро, лифт и сон ноутбука.
Автокомплит адресов: маленький компонент, огромные грабли
«Иногда подсказки не совпадают с тем, что я ввёл» - баг, который невозможно воспроизвести по описанию. Разбираю его и ещё три из нашего сервиса адресов.
Формы на сорок полей: как не сойти с ума
Схема вместо ручных if-ов, ошибки бэка в поля формы, зависимые блоки и черновики. Всё, до чего я дошёл на корпоративных заявках в четыре экрана.
Таблица на 50 000 строк, которая не вешает браузер
«Хочу листать, как в Excel» - реальное требование заказчика на биллинге. Что пришлось сделать, чтобы вкладка не отъедала гигабайт.
Слой API: как перестать писать try/catch в каждом компоненте
В любом проекте старше года живёт три способа сходить на бэк. Показываю, как я это привожу к одному виду и что складываю на каждый уровень.
Три приёма, после которых any почти перестал появляться в коде
as const, satisfies и размеченные объединения. Без теории типов, на примерах статусов, конфигов и состояний загрузки.
Pinia: когда стор нужен, а когда он лишний
Два комментария, которые я пишу на ревью чаще всего: «зачем здесь стор?» и «почему это не в сторе?». Разбираю границу и три классические грабли.
Composables вместо миксинов: как я раскладываю логику по фичам
Миксины нормально жили ровно до третьего миксина на компонент. Потом начинались вопросы, откуда взялся loading и почему mounted вызывается четыре раза.
Несколько Git-профилей на одной машине
Если у тебя рабочий GitLab и личный GitHub (или наоборот), рано или поздно коммиты начнут улетать не с той почтой. Вот как это решить раз и навсегда.
Настройка удобных алиасов в PowerShell для разработчика
Полноценный гайд по настройке PowerShell-профиля: алиасы для пакетных менеджеров, быстрая навигация по проектам, шорткаты для Git, удобные утилиты и приятные мелочи для повседневной работы.
Привет, мир! Почему я наконец завёл блог
Размышления о том, зачем frontend-разработчику вести публичные заметки и делиться опытом