Наш челлендж — сделать полноценное приложение «Отели» с нуля. Оно будет встраиваться в наше основное приложение Туту, количество установок которого перешагнуло 5 млн.

Мы хотим делать продукт, который станет частью единого сервиса и позволит сразу предлагать комбинированные варианты проживания и передвижения для клиентов.

Вас ждет
разработка архитектуры обособленного функционала («Отели») внутри приложения Туту.ру и ее реализация, возможность выбора технологического стека, возможность влиять на то, какие фичи будут запилены, предлагать идеи и решения по развитию продукта.
Мы в TutuID разрабатываем сервисы и интерфейсы для идентификации и аутентификации посетителей Туту.ру, а также ведём работу над созданием нового личного кабинета. У нас сложные технические задачи и высокие требования к надежности, производительности и безопасности. Одна из ключевых задач команды — улучшение пользовательского опыта за счёт создания удобных инструментов для упрощения и автоматизации постпродажного обслуживания клиентов.


В нашем приложении можно составить маршрут и купить все нужные билеты. Данные пассажиров заполняются автоматически начиная со второй покупки, приложение напоминает о поездках и хранит билеты.

Задача — сделать так, чтобы там было всё, что нужно для путешествий от начала до конца.
Отели
Tutu.ID
Приложение Туту.ру
Про наши команды
400
15
20
30
штатных сотрудников, увлечённых путешествиями
на мировом рынке
онлайн путешествий
крупнейших туристических онлайн-ресурсов в мире
путешественников, пользующихся нашими мобильными приложениями
Туту.ру это:
удивительный мир путешествий и открытий с обычными людьми, предоставляя удобные и полезные инструменты для планирования поездок
+
лет
топ
млн
iOS
Используем RxSwift, в обозримом будущем – переезд на Combine. Вот зря некоторые из-за него боятся приходить к нам в гости. Сначала вы три дня бьетесь головой об стену, а потом не понимаете, как можно было жить по-другому. Одна из самых важных библиотек – ComposableArchitecture, это реактивная стейт-машина уровня модуля. Нам нравится ее правильная архитектура, рассчитанная на очень быстрые доработки и развитие приложения. В стандартном мобильном приложении источник правды в районе базы данных или in-memory базы. А тут он выше, а база — бекап для состояния.

SwinjectStoryboard на холде, потому что всю новую верстку мы делаем в коде. Кстати, мы уже готовы к SwiftUI, так как довольно давно живем на Data Driven View. Ждем поднятия нижней версии до iOS 13, сейчас мы поддерживаем 12.

Moya — верхнеуровневый фреймворк для работы с сетью. Позволяет структурировать сетевой стек приложения.

Github Actions для CI/CD. Мы посчитали по деньгам и решили, что уйдем в облако, так выгоднее.

Серьезно относимся к качеству нашего кода, фичи без тестов не проходят ревью. Помимо unit-тестов мы используем UI и snapshot тесты, а с Data Driven подходом это делать особенно приятно.

Ещё из инструментов есть SwiftLint - для линта, SwiftGen - генерит ресурсы. Figma понятно, зачем. Закопали Sketch и Zeplin.
Android
Kotlin — все переезжают с Java на него, мы тоже. Кстати, недавно в нашем основном репозитории мы перевалили за 50% кода на Kotlin. Java не бежим выпиливать, но каждый раз, когда сильно меняем модуль, переписываем его на новом стеке. Граница такая: если задача занимает больше 1 часа на исправление, то лучше переписать на Kotlin.

В качестве основного подхода к архитектуре взяли Android Clean Architecture.

Data-driven View — подход отделения слоя view от всего остального. Идея простая, как дрова: единственный метод — render, и это позволяет распараллелиться разработчикам.

Dagger2 — абсолютный дефолт стека.

В легаси есть RxJava1, а используется RxJava2. В новых модулях вовсю пробуем корутины. Захолдировали Realm, Room – наш фаворит.

Пишем Unit и UI-тесты. SnaphotTesting — внедряем, думаем, пробуем.

Для CI/CD используем облачный Github Actions, облака дешевле людей.

Figma (переехали со Sketch, в одном месте редактируешь и смотришь макеты), а Zeplin закопали.

Из прикольных историй, что в самом дальнем углу у нас лежит нулевая версия библиотеки Cicerone — Костя Цховребов работал у нас в незапамятные времена и писал её прямо инлайном.
Tilda Publishing
Что крутого непосредственно по разработке?
Ещё немного о нашем продукте
Серёжа:
Мне понравился Composable. Пилить редьюсеры, системы, а потом покрывать это тестами. Все аккуратно и структурировано. Правда тесты не всегда спасают от каких-то крешей, но это уже другая история...
Макс:
Круто, что у нас есть эволюция технологий. Раньше был RxFeedback, сейчас переходим на Composable. Новый модуль будем писать уже на SwiftUI. Не застой, а реально берем то что нам подходит.

Нравится, что есть Core-тима и есть core-компоненты собственной разработки. Обычно на все используют опенсорсные решения, а у нас еще и свое есть.
Женя:
С точки зрения iOS разработки гильдия есть. Можно раз в неделю собраться, послушать выступления, обсудить какие-то вопросы. То же самое Ревизорро, где ты всем разработчикам показываешь свой PR и вы вместе делаете ревью.
Макс:
У нас прям разные вакансии. Команды и задачи между собой сильно отличаются. Нет такого, что есть 6 фича тим, и они пилят примерно одно и то же. Есть выбор и это здорово.
Tilda Publishing
Какими плюшками пользуетесь?
Серёжа:
Мне нравится, что в Туту идут постоянные изменения. Работаешь, работаешь, а потом тебе внезапно прилетает, что появились завтраки по утрам, или что у нас велосипедная парковка открылась. Каждый понедельник влетает приятная новость, что ты не просто винтик в системе, а что тут большая семья. В предыдущей компании разработчики всегда узнавали все последними, а тут система открытости. Можешь прийти на демо любой команды – задавай свои вопросы. То есть ты знаешь, что происходит в другой части компании.

Нравится, что по пятницам компания вкусняшками кормит.
Макс:
Сказал Серёжа, который на работу со своим контейнером пришел.
Серёжа:
Ну мы в начале покушали, а хинкали это уже было приятное дополнение. Кажется это хитрая замануха, но в офис никто не гонит.
В конце спринта по пятницам собираемся командой на демо.

И в целом приятные штуки: бонусы за чтение книг. Система self-review заставляет задумываться чем ты целый месяц занимался. Ретроспектива себя и своей работы, а в итоге это еще и на квартальную премию влияет.

Еще очень нравится открытость ко всевозможных переходам между командами. Кто захотел – в тимлиды пошел, кто захотел – из тестировщика в разработчика переходит. С точки зрения iOS разработки гильдия есть. Можно раз в неделю собраться, послушать выступления, обсудить какие-то вопросы. То же самое Ревизорро, где ты всем разработчикам показываешь свой PR и вы вместе делаете ревью.
Макс:
Очень нравится обратная связь от директоров на встречах на всю компанию - прикольная штука. Нравится, что задаешь любой вопрос и тебе отвечают.

Чем из плюшек пользуюсь: книгами точно пользуюсь. Вот раньше я не особо читал, а в Туту начал. Не знаю, может тут финансовая мотивация работает. По self-review согласен с Серегой, что помогает рефлексировать. А на 1-1 с тимлидов выравниваешь ожидания себя от себя и тимлида от тебя. Кстати, 1-1 тоже прикольные, нигде такого не видел.