Как отвечать на вопросы о проекте (CRM для школы английского)
Ключевые тезисы
- Конспект — это гайд по ответам на вопросы о работе в проекте (компания, процессы, технологии).
- Основной пример — разработка внутренней CRM-системы для школы английского языка.
- CRM (Customer Relationship Management) — это система для управления всеми отношениями с клиентами (учениками, учителями, операторами).
- Ответы должны быть правдоподобными, но не обязательно детальными. Можно использовать общие формулировки («корпоративный булшит»).
- Важно говорить только о том, в чём уверен, чтобы не «закопаться» на дополнительных вопросах.
Основное содержание
Что такое CRM в контексте школы
CRM-система — это «сердце» компании, которое объединяет все разрозненные сервисы (сайт, личный кабинет, портал учителей, лендинги) в единую экосистему. Она автоматизирует бизнес-процессы:
- Управление учениками и преподавателями.
- Назначение скидок, отслеживание посещений.
- Отправка уведомлений.
- Логирование всей истории взаимодействия с клиентом.
Пример бизнес-процесса: Новый потенциальный ученик оставляет заявку на лендинге → в CRM создаётся событие → с ним связывается менеджер по продажам → назначается пробный урок → все шаги фиксируются в системе.
Вопросы о компании и культуре
- Миссия: Предоставление качественного и доступного обучения английскому с использованием современных технологий и индивидуального подхода.
- Услуги: Обучение для разных уровней, подготовка к экзаменам, индивидуальные и групповые занятия.
- Структура команды разработки: Пример: 2 фронтенд-разработчика, 2 бэкенд-разработчика, 1 QA, проджект-менеджер, тимлид.
- Развитие сотрудников: Внутренние митапы (например, еженедельные для фронтенда), бюджет на обучение, индивидуальные планы развития (например, «улучшить знания в React Query»).
- Ценности: Ориентированность на результат, постоянное развитие, работа в команде, инициативность.
- Мотивация: Бонусы по итогам года, опросы 360°, обещание повышения.
- Оценка успехов: Успешное выполнение спринтов, качество код-ревью, предложение улучшений в команде.
- Технологический стек: На фронтенде — React/Next.js, на бэкенде — Node.js/Express или PHP. Также: Docker, GitHub Actions, TypeScript.
Вопросы о процессах и интеграциях
- Код-ревью: Проводилось на каждую задачу. Требовалось 1-2 апрува. Сложные задачи обсуждались всей командой.
- CI/CD: Использовались GitHub Actions. Деплой на прод выполнял тимлид после демо и одобрения заказчиком (часто ночью).
- Тестирование: В основном ручное тестирование QA по тест-кейсам. Автотесты могли быть на бэкенде, но не на фронтенде.
- Работа с багами: Существовал отдельный канал в Slack для инцидентов. Дежурный разработчик (ротация раз в неделю) разбирался и привлекал нужных специалистов.
- Кроссбраузерность: Не была критичным требованием, так как продукт внутренний. Поддерживались последние версии основных браузеров.
- Feature flags: Использовались, чтобы скрыть незаконченный функционал до следующего релиза.
- Взаимодействие с тестировщиками: Через задачи в Jira (статус «In Testing»). При необходимости — созвоны для уточнения.
- Взаимодействие с менеджерами: Продакт-менеджер собирал требования от отделов (продаж, поддержки), формировал проекты. Проджект-менеджер и тимлид декомпозировали их на задачи для команды.
- Взаимодействие с бэкендом: Согласование API на этапе планирования. Фронтенд работал с mock-данными, пока бэкенд реализовывал фичу.
- Работа с дизайнерами: Был общий дизайнер/дизайн-система (например, Material-UI). Макеты предоставлялись в Figma.
- Решение технических конфликтов: Обсуждались на командных митапах. Часто решение принимал более опытный разработчик.
Управление проектами и задачи
- Планирование: Квартальное или ежемесячное — на уровне проектов. Двухнедельные спринты — на уровне задач.
- Оценка задач: В стори-поинтах по последовательности Фибоначчи (1, 3, 5, 8, 13). Оценка проводилась командой на грейминге.
- Распределение задач: Более сложные задачи брал senior-разработчик, более простые — middle. Помощь и обсуждение приветствовались.
- Нехватка времени/ресурсов: Главная стратегия — гибко резать функционал (флексить), чтобы выкатить самое важное в срок. Реже — продление сроков.
- Технический долг: На него выделялось ~10% времени спринта. Задачи приоритизировались по важности и влиянию.
- Ретроспективы: Проводились после каждого спринта для обсуждения проблем и улучшения процессов.
Вопросы о технологиях и архитектуре
- Архитектурные решения: Часто говорят, что пришли на готовый проект, поэтому ключевые решения (модульная архитектура, BFF) были приняты до них.
- Масштабируемость: Достигалась за счёт модульности и постраничной загрузки данных (пагинации).
- Управление состоянием: Использовались стандартные для стека инструменты (React Context, Redux, React Query и т.д.).
- Оптимизация производительности: Использование
React.memo,useCallback, ленивая загрузка компонентов, оптимизация рендеринга тяжелых списков. - Типичные задачи фронтенда: Разработка и расширение карточки ученика, страницы списка пользователей, лента действий оператора, различные формы и фильтры.
Рабочий процесс и продуктивность
- Распорядок дня: Гибкое начало, но daily-митинг в 10:00. Спринты длительностью 2 недели. Регулярные демо, ретро и планировочные митинги.
- Удалённая работа: Полностью удалённый формат. Главное — быть на связи в рабочие часы и присутствовать на ключевых встречах.
- Приоритизация: Фокус на самых важных задачах в начале спринта. Избегание многозадачности.
- Обучение: За счёт личного времени (чтение Хабра, документации). Компания могла предоставлять бюджет на курсы.
Выводы
Для успешных ответов о проекте важно:
- Построить правдоподобную легенду (продукт, компания, ваша роль).
- Понимать общие принципы современных процессов разработки (Agile, CI/CD, код-ревью).
- Говорить конкретно о своём стеке и зоне ответственности (фронтенд).
- Использовать общие формулировки для вопросов о культуре и ценностях.
- Не бояться говорить «я не участвовал в этом» или «это решалось на уровне архитектора/тимлида», если это соответствует действительности в вашей легенде.