320.48K
AI

Итоги_полугодия

1.

Итоги полугодия и
предложения по развитию
проекта
62
задачи слиты
3
изменения процессов
Андрей Солдаткин · Backend · апрель — октябрь 2026
6
предложений

2.

Коротко: три части рассказа
1
2
3
Что сделал
Как изменился и что
изменил
Что предлагаю
62 задачи за полгода:
дисклеймеры, курсы,
переводы, бухгалтерия,
дашборды, роли и права.
Чему научился, и три
процесса, которые команда
приняла по моим
предложениям.
Шесть шагов, чтобы быстрее
чинить баги, планировать
работу и делать ТЗ точнее.
2

3.

Часть 1
Что сделано за полгода

4.

Чему научился за полгода
В начале пути
✎ допиши: что умел в апреле
Конкурентность
Деньги
Гонки при активации версий,
блокировки и «закрытый по
умолчанию» гейт.
Идемпотентность выплат и дедуп по
журналу операций.
Производительность
Доступы
Агрегация в SQL, eager loading,
ускорение каталога курсов.
Роли, область компании, права команд
и проверка в FormRequest.
Несколько репозиториев
Интеграции
Общая БД с родительской CRM, перенос
347 миграций.
События для бота администрации,
машинный перевод с защитой команд.
✎ допиши: с чем были
трудности
✎ допиши: чего не знал вообще
4

5.

Аналитик: 60+ задач — отличный показатель
62
задачи слиты за 01.04–06.10.2026
447 ч
фактическое время против оценки 542 ч
0,1 дн.
Сообщение аналитика, 06.10.2026. Остальной текст затемнён намеренно.
самый быстрый цикл задачи
5

6.

Рост: от 1–3 задач за полмесяца до 9–13
Слитые задачи по полумесяцам
13
11
9
8
Из разбора аналитика (YouTrack, 01.04–06.10.2026)
5
4
4
3
2
1
0
0
2
62 задачи за период: история
операций, бэк дисклеймера,
«Бухгалтер», переводы
* октябрь — неполный период, данные до 06.10
6

7.

Дисклеймеры: с нуля до работающего раздела
Основа раздела. Таблицы и страница «Дисклеймер» (бэк), 33 ч по разбору
аналитика.
Одна активная версия. Две одновременные активации раньше могли оставить
две. Теперь блокировка строки и транзакция.
Закрыт по умолчанию. Если активная версия пропала, проверка раньше молча
пропускала всех. Теперь отказывает.
Архив. Записи о принятии правил архивируются, когда агента увольняют.
Права. РОП и админ-роли получили доступ, синхронизация прав между
репозиториями.
БЛОК 1
7
влитых PR
#2070 создание · #2368 и #2471 права РОП ·
#2495 синхронизация прав · #2476 архив при
увольнении · #2481 активация · #2943 админроли
7

8.

Курсы: быстрее, безопаснее, богаче
Скорость. Ускорил каталог курсов: 4 ч работы вместо оценки 24 ч.
Новые возможности. Учёт попыток урока, ответ после теста, счётчики блоков и
уроков, перевод названий.
Видимость по ролям. Агент видит только опубликованное, черновики видят
РОП и админы. Нашёл и поправил расхождение счётчиков.
Защита. Защита курсов от нежелательных изменений, пропуск пустых блоков.
Смежное. Заметил баг каскадной публикации блока и вынес его отдельно, чтобы
не раздувать задачу.
БЛОК 2
8
влитых PR
#2494 скорость · #2474 защита курсов · #2591
черновики · #2674 счётчики · #2625 попытки
урока · #2658 ответ после теста · #2488 пустые
блоки · #2549 перевод названий
8

9.

Перевод: чтобы команды не ломались
Защита команд. Машинный перевод не трогает служебные команды в тексте,
например [code] и [speed_check].
Контент без перевода. Основной контент и тексты для копирования больше не
переводятся автоматически.
Язык кандидата. Приглашение и ответ кандидату идут на его языке.
Новые разделы. Переводы уровней, вопросов, оплаты за день и блога.
БЛОК 3
8
влитых PR
#2298 защита команд · #2336 основной
контент · #2218 тексты для копирования ·
#2793 язык кандидата · #2168 уровни · #2170
вопросы · #2179 оплата за день · #2175 блог
9

10.

Бухгалтерия: деньги и регионы
Компания → регион. Убрал ось «компания» из ставки и баланса, заменил на
«регион». Проверена и слита.
Маппинг региона. Таблица за 1,5 дня, 6 ч ровно по оценке.
История операций. Логика записи по воронке «Оператор» для агентов с CPA: 23
ч.
Чистка. Удалил мёртвый код выплат и лишний StartPaymentJob, чтобы не было
двух путей к деньгам.
Уровни. Уровни по умолчанию при регистрации и создании команды.
БЛОК 4
5
влитых PR
#2384 данные для бухгалтерии · #2710 чистка
кода выплат · #2865 удаление
StartPaymentJob · #2885 и #2887 уровни по
умолчанию
10

11.

Дашборды: сложные подсчёты
БЛОК 5
8
Воронка. Аналитика воронки и «входящие по месяцам».
Партнёры. Виджеты партнёров, топ-10, блок кандидатов.
События недели. Детальный блок и события недели для руководителя.
Подход. Агрегация в SQL одним проходом вместо подсчёта в PHP, eager loading
против N+1.
влитых PR
#2163 виджеты партнёров · #2132 топ-10
партнёров · #2134 кандидаты · #2140
аналитика воронки · #2210 виджеты · #2228
детальный блок · #2180 события недели ·
#2146 воронка по месяцам
11

12.

Команды, роли и безопасность
Права. Индивидуальный доступ команды, права тимлида, роль саб-ментора.
Мини-команды. Авто-открепление и создание мини-команды без участников.
События блокировки. Агент заблокирован или разблокирован — событие
уходит в сервис администрации.
Безопасность. Убрал возможность подмены client_ip: цикл задачи 0,1 дня.
Миграции (AAGENT-609). Перенёс 347 миграций в родительскую CRM, проверил
на копиях базы.
БЛОК 6
8
влитых PR
#2328 индивидуальный доступ · #2781 права
тимлида · #2252 роль саб-ментора · #2975
авто-открепление · #2630 события
блокировки · #2771 список агентов · #3006
мини-команда · AGENT-2137
12

13.

Как я подхожу к задаче
1
2
Разобраться
Какую проблему решаем и зачем
Пример: дисклеймеры
В задаче была только активация версии. В коде нашёл, что при
потере активной версии проверка пропускает всех. Решили
иначе: гейт закрывается по умолчанию, активация под
блокировкой.
Уточнить
Сверить ТЗ с кодом и аналитиком
Пример: счётчики курсов
3
Предложить
Счётчики уроков считали черновики для агента. Привёл к той же
ролевой логике, что в списке блоков, и заодно нашёл смежный
баг каскадной публикации.
Другой путь, если он проще
13

14.

Процесс 1: новый формат ТЗ
Было
Стало
Много воды в
тексте
Решение
предлагали без
понимания
проблемы
«Сделать:» —
что нужно
сделать
«Проблема:»
или «Для
чего:» — зачем
это нужно
Исполнитель
видит цель и
может
предложить
лучший путь
15.05.2026: предложил структуру ТЗ. Ответ: «окей, учту».
Приходилось
переспрашиват
ь, что реально
нужно
14

15.

Процесс 2: перекрёстное ревью
Было
Стало
Задачи долго висят на ревью
Разработчики проверяют друг друга по кругу
Непонятно, кто и когда посмотрит
За неделю сдвинули большинство зависших задач
Зависшие задачи тянут за собой связанные
Команда работала вместе, особенно Егор, который
взял на себя много задач
15

16.

Процесс 3: большой модуль — один разработчик
Было
Стало
Эпик разбит между разными разработчиками
Большой модуль делает один разработчик
Разный подход к решению и разная скорость
Он знает все детали и не зависит от других
Все ждут самого медленного, переделки на стыках
Меньше согласований и переписывания на стыках
16

17.

Благодарности коллег
Егор, 07.10.2026: «а твои задачи приятно проверять»
С человеком, который понимает проблему и помогает её
решить, приятно работать. Здоровая кухня команды
ускоряет прогресс.
17

18.

Часть 2
Что я предлагаю внедрить

19.

Предложение 1
Логирование и сбор ошибок: Sentry
Проблема
Предложение
Что получим
Подключить Sentry к бэкенду,
гейтвею и фронтенду
Видно трассу, версию и частоту,
не нужен доступ к прод-данным
Связать ошибку с request_id, он
уже есть в логах
Баг превращается в задачу с
воспроизведением
Скрывать персональные данные
в событиях
Быстрее исправляем и реже
получаем «не воспроизводится»
Алерт на новый тип ошибки,
привязка к релизу
Данные с прода
конфиденциальны, их нам не
дают
Трудно локализовать проблему
Ошибки лежат в общем потоке
логов, нет одного места, где
видно новые и повторяющиеся
19

20.

Предложение 2
Спринты на две недели
Проблема
Предложение
Что получим
Разработчик не знает, чем
займётся завтра
Двухнедельный или месячный
спринт
Разработчик видит план и
распределяет время
Тимлид не видит нагрузку
Руководству трудно понять
сроки по модулям
Планирование в начале,
короткий обзор в конце
Тимлид видит реальную
загрузку
Видимая очередь задач на
спринт в YouTrack
Руководство получает ориентир
по срокам
20

21.

Предложение 3
Прозрачные грейды и правила роста
Проблема
Предложение
Что получим
У всех одинаковая информация
Понятные ожидания и путь
роста
Меньше шума и слухов
Команда и руководство поразному понимают правила
пересмотра зарплаты
Нет описанных уровней: что
должен уметь джун, мидл и
сеньор
Сложно понять, что делать для
роста
Описать грейды: джун, мидл,
сеньор
Для каждого: уровень задач,
стек, проектирование, зона
ответственности
Один документ о правилах и
сроках пересмотра, понятный
всем
21

22.

Предложение 4
Доступ к коду для авторов ТЗ
Проблема
Предложение
Что получим
В ТЗ встречаются таблицы и
поля, которых нет
Точнее ТЗ, меньше уточнений
Описано поведение, которого
нет в системе
Время разработчика, самое
дорогое, тратится на решение
Задачи делаются быстрее
Разработчик тратит время на
анализ и доделывает чужую
работу
Дать постановщикам доступ на
чтение к репозиторию
Короткий чек-лист ТЗ:
проверено по коду
Вопросы к коду можно задавать
разработчику заранее
22

23.

Предложение 5
Предложение 5: зависимости задач в YouTrack
Сейчас
Правила
Бэкенд
→
Фронтенд
→
Релиз
Фронт можно двинуть вперёд бэкенда: на пользователей уйдёт кнопка без ручки, вопросы
в ТП.
Предлагаю
Бэкенд
→
Фронтенд
→
Зависимая задача не берётся в
работу, пока основная не на
ревью или не выложена
Задачу нельзя вернуть на тест,
пока есть связанный баг
Так разработчик не переписывает
код под чужие изменения
Релиз
Фронт нельзя брать в работу, пока бэкенд не на ревью или не выложен. Бэкенд без фронта
для пользователей обычно безопасен.
23

24.

Предложение 6
Предложение 6: как увеличить конверсию заявок
Напоминания кандидату
M
Доработка неявок
M
Проверка скорости как
сигнал
S
Сейчас ни одного автокасания. За 24 ч и 2
ч до собеседования готовить агенту текст
напоминания.
После неявки один пуш. Через 24–48 ч без
новой даты повторить пуш и сообщить
лидеру.
Кандидат не открыл ссылку проверки за 24
ч — агенту подсказка связаться. Данные
уже собираются.
Умный утренний пуш
Воронка и отказы для
руководства
Дубли и телеметрия формы
S
Один сводный пуш вместо десятков, по
часовому поясу города и только по
ожидающим подтверждения.
M
Блок в дашборде: конверсия по этапам,
причины отказа, явка в зависимости от
срока записи.
Идеи по коду, не по данным с прода. S/M/L — трудоёмкость. Проверять по метрикам воронки.
S
Сообщать агенту о повторной заявке до
собеседования и видеть, на каком шаге
формы бросают.
24

25.

Дорожная карта
Первый месяц
Квартал
Полгода
Пилот Sentry на бэкенде
Спринты на всю команду
Прозрачные правила роста
Шаблон ТЗ с проверкой по коду
Sentry на фронте и гейтвее
Метрики конверсии заявок
Правила зависимостей в
YouTrack
Черновик грейдов
Идеи по росту конверсии в
работе
Что нужно от компании
Решение по Sentry и доступу к коду для постановщиков, согласие на спринты, документ о грейдах и правилах
пересмотра зарплаты.
25

26.

Спасибо
Вопросы и обсуждение
English     Русский Rules