<aside>
<img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/1230daa6-7b14-4b10-a520-4f6160af6820/5cfd1e3b-5f62-4c92-9b54-7052cd76a76d/Messenger.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/1230daa6-7b14-4b10-a520-4f6160af6820/5cfd1e3b-5f62-4c92-9b54-7052cd76a76d/Messenger.png" width="40px" /> Мессенджер — основной инструмент для коммуникации крупных B2B-клиентов.
Это пульт управления множеством ботов интегрированных в другие сервисы в рамках экосистемы. А еще — это встраиваемый SDK с жесткими требованиями к размеру, потреблению памяти и количеству зависимостей.
Мы хорошо знаем свой продукт и пользуемся им каждый день в рабочих коммуникациях. Это позволяет нам понимать его сильные и слабые стороны, а также оценивать качество новых фичей из первых рук.
</aside>
Про технологические вызовы
- Мессенджер — это сложное "offline-first" приложение, которое не боится плохого соеднинения или даже его отсутствия.
- Мессенджер — это еще и встраиваемый SDK с жесткими требованиями к размеру, потреблению памяти и количеству зависимостей.
- Наша цель — повышать производительность приложения и его надежность.
- Написать хороший, классный мессенджер, которым будут пользоваться миллионы людей — уже хороший вызов, правда? 😉
🛠 Стек
iOS
- Новый код пишем на Swift, есть буквально 5000 строчек легаси на Objective-C
- UIKit
- Swift modern concurrency
- REST, websocket, Protobuf
- интересная key-value DB
- модульная clean архитектура
- генерация проекта на GN
- Cocoapods — управляем зависимостями
- Unit-, UI-тесты
- Готовимся к внедрению SwiftUI
Android
- Весь новый код пишем на Kotlin. Остались еще вкрапления Java (<30%)
- Активно используем Kotlin Coroutines
- Для работы с сетью — OkHttp, WebSocket Protobuf
- Room
- Dagger 2
- UI- и unit-тесты — Espresso, Robolectric, JUnit
- Trunk-based development.
👨🏻💻 Команда и процессы
- В iOS-команде сейчас 5 разрабочиков и тимлид, в Android-команде — 4.
- У нас распределенная команда (есть смежники в Минске), но все-таки большая часть сосредоточена в Москве. Поэтому у нас есть возможность регулярных командировок к другим коллегам (например, в Питер).
- Мы работаем по недельному скраму, в конце спринта релиз, если есть что катить. Есть еженедельные покер, планирование, ретро и кроссплатформенный тех синк
- Каждую фичу на платформе ведет кто-то из команды. Некоторые выполняют роль devpm и ведут фичи от ТЗ до раскатки, проектируют решения на уровне сервиса и приземляют задачи в команду.
- Мы вместе решаем стратегию развития кодовой базы и продукта в целом.
- Мы вместе ходим по барам, катаемся на сноубордах, играем в пинг-понг и шахматы, да и в целом обожаем тимбилдинги :)
Функции мессенджера, которые мы прорабатываем
- Обмен текстовыми, медиафайлами и голосовыми сообщениями