Android | Михаил Белый

Android | Михаил Белый 

Все про Android

43subscribers

46posts

goals1
$15.62 of $1 407 raised
Поплыву на остров Ко Мадсум кормить диких кабанчиков

$1M / year after tax

По интернетам гуляет вакансия андроид-разработчика в команду телеграм с зарплатой миллион долларов в год. В фаанге сопоставимый рейз будет только на позициях L6+ с бонусами и акциями. За что такие бабки? Попробуем выяснить:

1. Пиар

Телеграм исторически нанимает через челленджы. Это проверенный формат вирусного маркетинга. У него высокая эффективность. Сотни разработчиков копаются в исходниках и присылают патчи. Платформа получает бесплатный аудит, свежие идеи и людей в команду. По слухам, количество разработчиков в компании исчисляется десятками, а HR-отдел отсутствует вовсе. Платить сверх-зарплаты не проблема. Это укрепляет лояльность и привлекает новых сотрудников. Сами разработчики – призеры олимпиад и выпускники мат-/физ-факов из СНГ. Не отсвечивают и фанатеют от своего ремесла. Компания поощряет соревновательный дух, жесткую ответственность за результат и умение писать код без багов. Эту философию придется разделять.

2. Дубай

Вакансия подразумевает оффер в Дубайский офис. Хорошо, если кабаныч одобрит удаленку. Иначе придется собирать манатки и переселяться в пустыню. Я был в Дубае дважды. Это в 2 раза больше, чем этот город заслуживает. Там невозможно жить. С апреля по октябрь на улице как в парилке. Застойный залив. Жизнь противоестественна и держится на кондиционировании, опреснении воды и импорте всей еды. Сложно интегрироваться. Виза с жесткой привязкой к работодателю. Для экспатов все заметно дороже: аренда, медицина, школы.

2. Приложение

Код клиента лежит на гитхабе. Можно глянуть, с чем предстоит работать. Все челленджи требуют внедрения новой функциональности в текущую кодовую базу. А она, мягко говоря, специфичная. Никаких тебе чистых архитектур, котлинов и композов.
Есть такое выражение из 1984 года: программный код надо писать так, чтобы его легко читали люди, а только потом исполняли машины. В телеге на эту мудрость положили с прибором. Код не чистый и абстрактный, а тяжеловесный и лапшистый. Написан на Java и C++. Тестов нет. Каментов нет. Минимум внешних зависимостей. ExoPlayer, Zxing, WebRTC и RecyclerView завендорили вручную.
Используется подход Single-Activity. Конфигурация управляется вручную. Экраны – вьюхи, упорядоченные в стек, подобно фрагментам. XML-файлов нет. Компоненты создаются программно в коде. Вместо векторов – наборы png и найнпатчи. Анимации делаются с помощью ValueAnimator и ObjectAnimator. Для стикеров используется движок rlottie от самсунга, написанный на плюсах. Он кэширует битмапы и крутит их на CPU. Никакого OpenGL.
Сетевой слой держит долгоживущее шифрованное TCP-соединение. Шифрование, сокеты и API реализованы на плюсах и управляются через JNI. Файлы качаются чанками по 4 в параллель. Есть проверка CDN-хэшей и дозапись на диск. Используется собственный декларативный язык описания объектов и методов. Из декларации при сборке генерируется огромная схема на 72k строк. Для каждого конструктора получается класс-наследник TLObject, а для метода – такой же класс + обертка для ожидаемого ответа. Когда приложение отправляет запрос, объект сериализуется в буфер байтов нативной памяти, адрес буфера передаётся в ядро, оно шифрует и шлет пакет по TCP. Данные летают мимо куч Java. По сети не передаются даже имена полей. По крайней мере разработчики телеги могут говорить, что не перекладывают на работе джейсон.
Для локальной бд используется SQLite. Таблицы создаются на Java. Вызовы настроены через JNI, минуя распаковку в Java-объекты. Соединение открывается один раз при старте. Схема минималистичная, что упрощает миграции, но усложняет читаемость. База хранит ключи секретных чатов и защищена от бэкапа.
Экран профиля, который предлагается переделать в конкурсе, содержит 14608 строк кода. В рамках проекта это даже немного. Когда будет конкурс, связанный с экраном чата, придется читать 43368 строк. Из-за своих размеров он даже не загружается на гитхабе. Здесь же встречается 139-уровневый if-else.
И все это лишь вершина айсберга. Посмотреть не погружаясь в проект. Подобного «олимпиадного мастерства» там как говна за баней.
Не стыдно и лям просить за такое.
Subscription levels1

Жалкий детский уровень

$1.41 per month
• Бесконечный респект и признательность 
• Ранний доступ к видео и воркшопам
• Отдельный топик в телеграм-чате с записями реальных Android-собеседований
• Отдельный топик с автоматическими новостями про Android-разработку
+ chat
Go up