Мы связываем удивительный мир путешествий и открытий с обычными людьми, предоставляя удобные и полезные инструменты для планирования поездок
НЕ ЗАБУДЬ ССЫЛКУ НА СВОЙ ТГ
на кнопке "откликнуться"
Senior Go+PHP Developer
в команду электричек
Кто мы
на мировом рынке онлайн путешествий
900
лет
20
+
штатных сотрудников, увлеченных путешествиями
крупнейших туристических онлайн-ресурсов в мире
путешественников, пользующихся нашими приложениями
топ
30
млн
20
Вы:
И что у вас за команда?
Туту:
Привет! Мы команда Туту. У нас сервис путешествий, мы каждый день отправляем флот самолётов, несколько поездов и много автобусов. Сервис помогает путешественникам с билетами, расписаниями, отелями и всем прочим для поездок. В компании 790 человек, из них около 300 – ИТ.

Среди всего этого есть расписания электричек и покупка билетов на часть этих самых электричек. Там около 600 тысяч пользователей дневной аудитории, и это лидирующий продукт рынка. Это очень точное расписание, которым пользуются сами машинисты поездов, плюс вокруг расписания есть модели расчёта опозданий, которые по изменению движения одного поезда пересчитывают в реальном времени ожидания для всех других с учётом архитектуры железных дорог на участке.

С точки зрения наполнения расписания продукт очень крутой. С технической точки зрения ситуация немного другая. Два года, фактически, продукт копил техдолг, и настало время что-то с этим делать. Сейчас электрички отделены от основого направления ж/д (поездов дальнего следования), что довольно странно для пользователя — два разных приложения, два разных интерфейса и т.п. Мы в перспективе собираемся объединять всё это в единый сервис со всеми видами транспорта. С электричками ситуация особенная, потому что это один из первых сервисов компании, и там большой легаси-монолит, вокруг которого есть более современные, но, увы, тоже уже устаревшие микросервисы.
Вы:
А кого вы ищете?
Туту:
Мы собираем команду заново, и вам предстоит приводить это в порядок, чтобы Make Elektrichka Great Again. Конкретно мы не питаем иллюзий про всеобщий рефакторинг, а пока ставим цели банально разобраться в связке монолита и сервисов, сделать себе рабочее окружение, настроить инструменты и потихоньку начать всё это упорядочивать. Победа над хаосом предполагается через всю новую разработку на Go сразу в правильном ключе. Если всё пойдёт хорошо, рефакторинг возможен позже.
Немного про стек
Монолит: PHP 7.2 монолит, собственный framework (там наши крафтовые библиотеки), MariaDB. Монолит не самое страшное, самое страшное - это взаимодействие монолита и сервисов, там пугающий дебаг.
CУБД: MariaDB, MongoDB, Redis (кэш и хранилки временные), ClickHouse для дата-команды.
Сервисы: SOA (PHP), PHP > 7, Go 1.12, Next.js v13.
Очереди: RabbitMQ, Kafka.
Соотношение языков в работе: Go — 20%, PHP — 80%.
Основные задачи
Разобраться в проекте и кодовой базе. Архитектура — солянка, там несколько исторических слоёв. Основные компоненты — админка для управления контентом (полностью в монолите с использованием части сервисов) и сама часть электричек (70 в сервисах, которые устарели на 30 монолита).
Брать задачи беклога. Ближайшие — интеграции с перевозчиками (продажа новых билетов прямо из приложения в разных городах) и платёжными шлюзами, СБП.
Есть ряд задач от инфраструктурных команд уровня "почините баг с доставкой данных до датасатанистов", есть срочные задачи при изменениях нормативки или законодательства, есть внезапные критикал-баги.
Позже надо будет перебирать весь сценарий покупки, чтобы интегрироваться с едиными компонентами, которые используют другие вертикали.
Покрытие кода тестами (юнит, интеграционные, e2e) в соответствии с внутренними требованиями.
Основная ценность, что можно взять и лидировать лучший сервис электричек в известной части галактики.
От вас нужно
Опыт коммерческой разработки веб-приложений на PHP от 4 лет.
Опыт работы с Go от года.
Опыт работы с монолитными и сервисными архитектурами.
Опыт работы с MongoDB, MySQL.
Опыт проектирования архитектуры приложения, взаимодействия сервисов и описания интерфейсов (REST openapi, grpc protobuf).
Понимание CI/CD, Docker, Kubernetes.
Базовые знания по unit-тестированию.
Про команду и рабочий процесс
Команда собирается заново. Уже есть техлид, продуктовый менеджер, мобильный разработчик, 1 бэкенд и 1 фронтенд разработчик. Техлид и руководитель, который поможет вникнуть в предстоящие задачи, процессы работы в нашей команде и познакомит с рабочими инструментами.
Монолит релизится 2 раза в неделю. Сервисы доставляются на бой регулярно, без использования релизного цикла.
Мы ценим работу в команде, самостоятельность, умение давать обратную связь и получать её.
Ответственность за качество продукта лежит на всей команде. Разработчики пишут новый код и покрывают тестами по пирамиде тестирования. Стараемся писать больше юнит-тестов, чем интеграционных и e2e. QA-инженер обучает команду практикам тестирования, помогает составлять тест-кейсы, подключается к проверке выпускаемых задач, пишет интеграционные- и e2e-тесты в случае необходимости, участвует в развитии подходов обеспечения качества.
Живём по Скраму. Product owner в процессе регулярных планирований спринта рассказывает, чего хочется достичь в продукте. Дальше приоритезация беклога. Потом цель спринта. Задачи трекаем в Jira, документацию ведём в Confluence. Из встреч есть ежедневный утренний стендап ж/д команды (30 минут), Sprint planning (2 часа), PBR — обсуждение/прояснение задач (2–4 часа), Sprint review (1 час), Retro (1 час). Спринты по 2 недели.
Ревью проходит совместно с командой ж/д, между всеми backend-разработчиками. Для слияния кода в мастер-ветку требуется как минимум 2 апрува от backend-разработчиков и 1 от мейнтейнера библиотеки.
Про компанию
Основной офис в Москве недалеко от м. Нагатинская/Коломенская. В офисе горячие завтраки, зоны отдыха c VR, PS, музыкальные инструменты и классная атмосфера путешествий.
Работаем в гибридном формате: в офис приходим 1-2 раза в неделю, но возможна и полная удаленка.
Кандидатам из других регионов поможем с релокацией в Москву.
По результатам работы раз в квартал индексируется зарплата и выплачивается приятная премия.
Tech-преимущества
Современный стек
  • Backend: Go, MariaDB, MongoDB, Kafka, PHP (legacy), RabbitMQ (legacy).
  • Frontend: Typescript, SCSS, React, Redux, Next.js.
  • QA: web - Go, typescript (playwright); mob - AllureTestOPS, AppLive, Kaspresso, XCUITest, GitHub.
  • IOS: RxSwift, SwiftUI, Combine, UIKit, MVVM, UDF, TCA, VIPER.
  • Android: Kotlin, Clean Architecture, MVVM, Kotlin Coroutines, Dagger, Compose.
Платформа
ИТ платформа представляет собой набор сервисов для управления инфраструктурой, доступных через консоль и построенных на принципах ClickOps. Работа в консоли платформы напоминает работу в хорошо продуманной IDE, где создание сервисов и настройка роутов доступны всего за несколько кликов.
Гильдии
Мы обмениваемся опытом далеко за пределами своей команды, что позволяет быстро профессионально расти. Есть внутренние выступления и общие митапы.
Развитие
Есть вертикальное и горизонтальное развитие, например, можно переходить на новый стек или брать новые для себя области работы - всё довольно гибко.
С заботой о сотрудниках
ДМС со стоматологией и страховка на путешествия.
Корпоративная скидка на сервисы по работе с психологом: Альтер и Ясно.
Личный бюджет на профессиональное развитие, а также премии за чтение книг.
Развитая корпоративная культура: собираемся в клубы по интересам, а компания помогает с частичным финансированием.
Этапы собеседований:
1
Финальная встреча

Общение в формате диалога с руководителем, возможность задать все вопросы о тонкостях работы в команде.
2
3
Техническое интервью

Онлайн встреча с парой тех-спецов, чтобы познакомиться с вашим опытом и навыками
Общение с HR менеджером

Телефонное собеседование на 15−20 минут, перед знакомством с командой.