Лето, солнце, onedayoffer в нашу мобильную команду
15-25 июня
Факты о нас

  • Приложение с расписанием транспорта и покупкой билетов
  • Более 8 миллионов установок на обеих платформах
  • Рейтинг приложения в App Store 4.9, в Play Маркет – 4.9
  • Сейчас в iOS-гильдии и в Android-гильдии по 8 разработчиков
Сейчас наша цель – нанять еще по 3 разработчика в каждую из платформ

Что мы делаем
В нашем приложении можно составить маршрут и купить все нужные билеты.
Помогаем людям путешествовать быстро и удобно

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


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

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 — Костя Цховребов работал у нас в незапамятные времена и писал её прямо инлайном.
Ни слова больше! Я в деле!
О развитии

- Перформанс-ревью по результатам работы за полгода
- 1-1 с руководителем полностью посвящены твоей работе
- В гильдии можно обсудить новые технологии или обменяться опытом с коллегами
- Есть возможность посещать внешние тренинги и конференции или самому организовывать внутренние тренинги

Команда и процессы

- Кроссфункциональная команда ~8 человек
- Руководитель — Product Owner
- Agile-процессы
- Кросскомандное ревью + ревью от Core-команды
- Автоматизация за счет CI/CD на GithubActions

Слово команде
«Есть чисто технократические компании, в которых ты 8 часов в день кодишь. В Туту — больше встреч. Но очень быстро понимаешь, что действительно лучше обсудить и разобраться, чем что-то закодить и выкинуть.

День у меня выглядит так: приезжаю к 10:45 к стендапу, за 15 минут, подбиваем, кто и что делает, смотрим расписание спринта, изредка выкидываем фичи, которые не успеем в спринте.

В течение дня пишу код или прохожу ревью. Ревьюим друг друга по кругу в командах, всего в компании 5 команд, которые занимаются мобильной разработкой, в каждой свои андроид-разработчики. Если код некритичный, то обычно ревьюит кто-то из другой команды. Если важный – два человека: из своей и из другой команды.

Встречи бывают разные:


  • по проекту (стендапы и всякие аджайл-ретроспективы, груминги, планирование и прочие вещи по процессу, в общей сложности 1,5 часа в неделю максимум),
  • встречи гильдий (раз в неделю по часу, там можно поделиться решением задачи, опытом с конференции или чем-то интересным прочитанным),
  • встречи с продуктологом, когда он рассказывает про рынок, а ты понимаешь, зачем нужен конкретно твой код.
  • на полугодовых встречах по личному развитию можно обсудить персональные цели и шаги к ним.
В Туту есть и большие общие встречи для синхронизации всех команд, например: большой стендап по утрам в понедельник – сводка новостей за прошлую неделю или раз в месяц двухчасовое демо всех отделов».



Кирилл
Android-разработчик
«От знакомых слышал только хорошие впечатления о Туту, поэтому решил сходить на собеседование. Мне очень понравилось общаться с ребятами во время собеседования. На техническом интервью мне задавали конкретные вопросы и не пытались завалить, на командном ребята просто были открытые и с ними было легко общаться. Первым впечатлением был чай с подстаканником, а потом мне провели экскурсию по офису, в котором на каждом шагу висели всякие тематические штуки, что тоже создало сильное впечатление.

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

Женя
iOS-разработчик
РАБОЧИЕ МАШИНЫ:

APPLE IMAC 27" RETINA 5K CORE I5 3.4 ГГЦ, 8 ГБ, 1 ТБ FUSION DRIVE, RADEON PRO 570 4 ГБ

APPLE MACBOOK PRO 13" CORE I5 2,3 ГГЦ, 8 ГБ, 256 ГБ SSD (+1 МОНИТОР)

APPLE MACBOOK PRO 15" RETINA CORE I7 2,2 ГГЦ, 16 ГБ, 256 ГБ SSD (+1 МОНИТОР)

ПО ЖЕЛАНИЮ — НОУТБУКИ DELL С LINUX/WIN.


Чёрт побери, я в деле!

Да мы тоже! Да еще и предлагаем все собеседования за один день, а точнее за 3 часа!

1. Заполняешь анкету с классными задачками и прикладываешь свое резюме
2. Договариваемся о времени собеседования
3. Удаленно, лежа в шезлонге, проходишь за 3 часа 3 этапа собеседований (техническое, с командой, с Product owner).

В случае успеха получаешь оффер в тот же день!