🎯 Подготовка к вопросам о проекте и компании

Ключевые тезисы

  • Конспект посвящён подготовке к ответам на вопросы о проекте (внутренняя CRM-система для школы английского языка) и компании.
  • Основная цель — научиться структурированно рассказывать о своём опыте, используя реалистичный контекст.
  • Ответы должны быть правдоподобными, но не требовать глубоких специфических знаний. Важно уметь обосновать сказанное.
  • Ключевая стратегия: показывать себя как часть команды, где многие решения (архитектурные, технологические) принимались до вас или коллегами.

Контекст проекта: CRM-система для EdTech

Что такое CRM?
CRM (Customer Relationship Management) — это система управления взаимоотношениями с клиентами. В контексте школы английского языка она используется для управления учениками и преподавателями: учёт, звонки, назначение скидок, отслеживание посещаемости, автоматизация коммуникаций.

Как устроена компания (EdTech-школа)?

  • Основная услуга: обучение английскому языку (на собственной платформе, в Skype и т.д.).
  • Участники: тысячи преподавателей (фрилансеры) и ученики (клиенты).
  • Подразделения: отделы маркетинга (привлечение), продаж (конверсия), заботы о клиентах (поддержка), подбора преподавателей, разработки.
  • Технический ландшафт: множество разрозненных сервисов (сайт, личный кабинет, портал для учителей, лендинги). CRM выступает «сердцем», которое объединяет эти сервисы и автоматизирует сквозные бизнес-процессы (от заявки до подбора учителя).

Пример бизнес-процесса в CRM:

  1. Маркетинг размещает лендинг → потенциальный клиент оставляет заявку.
  2. В CRM создаётся событие → с клиентом связывается менеджер по продажам.
  3. Проводится пробный урок → данные фиксируются в CRM.
  4. Запускаются автоматические процессы: подбор преподавателя, отправка предложений, напоминаний.

📋 Вопросы о компании и культуре

Миссия и продукты

  • Миссия: Предоставление качественного и доступного обучения английскому с использованием современных технологий и индивидуального подхода.
  • Продукты: Обучение для разных уровней и возрастов, подготовка к экзаменам, индивидуальные и групповые занятия. Вы работали над внутренней CRM, которая автоматизировала процессы взаимодействия с клиентами.

Структура и развитие

  • Команда разработки CRM: 2 фронтенд-разработчика, 2–3 бэкенд-разработчика, 1 QA, продакт-менеджер/тимлид. Отдельно — архитекторы компании.
  • Развитие сотрудников: внутренние митапы (например, гильдия фронтендеров), обсуждение кода и технологий, бюджет на обучение (которым часто не пользовались).
  • Корпоративные ценности: Ориентированность на результат, постоянное развитие, работа в команде, поощрение инициативы.
  • Мотивация и оценка: Годовые бонусы, опросы 360°, обещание повышения. Успехи оценивались по выполнению спринтов, качеству код-ревью и активности.

Технологии и процессы

  • Технологический стек (фронтенд): React (или Next.js для BFF), TypeScript, React Router, Zustand/React Query. Бэкенд — Node.js/Express или PHP.
  • Инфраструктура: Docker, GitHub (версионирование), GitHub Actions (CI/CD).
  • Управление временем: Двухнедельные спринты, планирование с командой, ежедневные стендапы.

🔧 Вопросы о процессах и интеграциях

Разработка и качество

  • Код-ревью: Обязательно для каждой задачи. Требовалось 1–2 апрува. Обсуждали сложные задачи всей командой.
  • CI/CD: Настроены через GitHub Actions. Деплой на прод выполнял тимлид после демо и одобрения.
  • Тестирование: На фронтенде — преимущественно ручное тестирование QA по тест-кейсам. Автотесты были на бэкенде или в планах.
  • Безопасность и совместимость: Код хранился в приватном репозитории. Кроссбраузерность не была приоритетом (внутренний продукт), поддерживались последние версии браузеров.

Взаимодействие в команде

  • С бэкендом: Договаривались об API-контрактах перед разработкой, использовали моки (Mock Service Worker), затем переходили на реальные эндпоинты.
  • С дизайнерами: Получали макеты в Figma. Использовали корпоративный UI-кит (например, Material-UI) или собственную библиотеку компонентов.
  • С менеджерами: Продакт-менеджер собирал требования от других отделов (продажи, поддержка). Задачи приходили в виде эпиков в Jira, которые команда декомпозировала и оценивала в стори-поинтах (числа Фибоначчи).
  • Распределение задач: Сложные задачи брал более опытный разработчик (сеньор), простые — менее опытный. Помощь и консультации были всегда доступны.
  • Решение конфликтов: Технические споры решали на митапах команды (фронтенд/бэкенд), основываясь на опыте и аргументах.

Документирование и требования

  • Техническая документация: Как таковой не было. Код — самодокументируемый. Бизнес-процессы описывались в Confluence или в самом движке BPMN.
  • Требования (ТЗ): Бизнес-аналитик писал описание в эпиках Jira после общения с продактом. Это и было ТЗ, детали уточнялись по ходу работы.

🚀 Управление проектами и процессы

Планирование и выполнение

  • Появление проектов: Запросы от других отделов → приоритизация продактом → оценка тимлидом и командой → квартальное/месячное планирование.
  • Спринты: Двухнедельные. На планировании оценивали и брали задачи на 15-20 стори-поинтов на фронтенд. Была практика резервирования 10% времени на технический долг.
  • Работа с рисками и сроками: При нехватке времени шли на сокращение функционала первой очереди (гибкость scope), а не на продление дедлайнов. О критичных рисках докладывали тимлид и продакт.

Взаимодействие с пользователями

  • Обратная связь: Собиралась продактом и менеджерами. Для разработчиков это были такие же задачи в Jira.
  • Демо-презентации: Проводились в конце спринта для продакта, который затем транслировал изменения бизнес-пользователям.
  • Срочные запросы и баги: Существовал канал в Slack для инцидентов. Дежурный бэкенд-разработчик разбирался и при необходимости привлекал фронтенд. Горячие фиксы выкатывал тимлид.

⚙️ Технические детали и решения

Архитектура и производительность

  • Архитектура: Монолитное фронтенд-приложение с модульной структурой (по фичам или Atomic Design). BFF (Next.js) для общения с бэкендом.
  • Масштабируемость: Не была острой проблемой благодаря модульности и пагинации.
  • Управление состоянием: Использовался стейт-менеджер (Zustand/Redux) или React Query для server state.
  • Оптимизация: Использование React.memo, useCallback, виртуализация длинных списков, разбиение больших API на более мелкие, ленивая загрузка модулей.
  • Типичные задачи: Разработка и расширение карточки клиента (добавление полей), списков с фильтрами, лента действий оператора.

Внедрение нового

  • Принятие решений: Технологические решения обсуждались на митапах гильдии фронтендеров или внутри команды. Итоговое слово было за сеньором/тимлидом.
  • Внедрение: Новые библиотеки/подходы сначала опробовались на изолированном модуле, затем, при успехе, распространялись.
  • Обновления: На обновление зависимостей выделялось специальное время раз в несколько месяцев.

💼 Организация работы и продуктивность

Рабочий день и баланс

  • График: Удалённая работа с гибким началом дня. Обязательные встречи: стендап в 10:00, демо и ретро раз в две недели, митапы гильдии.
  • Инструменты: Jira (задачи), Slack (коммуникация), Confluence (документация).
  • Баланс: Компания формально не поощряла работу в выходные, но иногда это происходило в срочных случаях. В целом культура поддерживала отдых.
  • Приоритизация: Старались не заниматься многозадачностью. В начале спринта брали самые важные задачи.
  • Обучение: Происходило в свободное время и на рабочих митапах. Компания предоставляла бюджет на курсы.

Выводы

  • Для успешного ответа на вопросы важно построить целостную и непротиворечивую легенду о проекте и своей роли в нём.
  • Следует делать акцент на командной работе и стандартных практиках (Agile, спринты, код-ревью), а не на уникальных или сложных решениях.
  • Нужно быть готовым обосновать любой названный технологический выбор (почему React, почему именно эта библиотека).
  • Стратегия «я пришёл на готовый проект и поддерживал/дорабатывал его» позволяет избежать сложных вопросов о первоначальных архитектурных решениях.
  • Ключевые моменты, которые нужно уметь описать: жизненный цикл задачи, взаимодействие с бэкендом и дизайнерами, решение проблем с производительностью, работа в Agile-цикле.