Android-разработка: что общего с Lego и как не «натягивать сову на глобус»

Гости и ведущие нового выпуска подкаста «Сушите вёсла» обсуждают особенности разработки, новинки в сфере и пробуют понять, какую архитектуру выбрать. Спойлер: любую!

Артём Кулаков и Рома Чорыев — разработчики Redmadrobot, они записывают подкаст, где обсуждают различные стороны создания ИТ-продуктов. В одиннадцатом выпуске делятся опытом и шутят шутки гости — Дима Суздалев, Android-техлид KODE, и Вася Чирвон, руководитель Android-практики Redmadrobot SPB.

Прикладываем ссылку на свежий выпуск, тайминг и ответы на несколько важных вопросов.

Тайминг

01:58 – Вася Чирвон рассказывает о том, как он попал в Android-разработку.

03:25 – А теперь Дима Суздалев о своем пути.

14:52 – Куда движется платформа Android.

25:05 – Сложно ли разрабатывать приложения под Android.

34:30 – Сложнее ли стать хорошим Android-разработчиком, чем iOS-разработчиком.

58:01 – Немного о Jetpack Compose.

01:02:02 – Чуть-чуть о Hilt.

01:03:15 – Кроссплатформенная разработка: KMM/Flutter – стоит ли игра свеч?

01:20:02 – UI и мультиплатформа.

01:27:14 – Архитектура мобильных приложений.

Каково это – быть Android-разработчиком

Конечно же, есть свои сложности и проблемы, но это как и в любой профессии.

Дима Суздалев подметил, что опыт Android-разработчика – это про то, что ты знаешь «куда ходить не надо». Ну а если ты все-таки пришел не туда, то знаешь, как это «не туда» обойти.

А вот Рома сравнил Android-разработку с хождением в веригах (тяжелые железные цепи): идти можно, но, так сказать, больновато. В пример привел знакомую для любого разработчика ситуацию, когда элемент, от которого ты ждешь обычного поведения, вдруг перестает работать. Или, например, такое случается вообще только на конкретном устройстве («привет» многотысячному парку китайских девайсов).

Или вот как еще бывает: допустим, в Google есть баг в API, который отрабатывает конкретным образом. Ты уже к этому привык, не забываешь делать обходной путь и во всех проектах с этим живешь. Но вдруг в какой-то момент Google исправляет этот баг, и теперь все, что ты делал до этого, ломает приложение. И снова с этим приходится что-то делать.

Разработка похожа на Lego – местами сложно, но прикольно! Ты сидишь и строишь. И тебе это нравится, ведь если не любишь Lego, то не будешь в него играть ;)

Василий Чирвон, руководитель Android-практики Redmadrobot SPB

Про новинки в области Android-разработки

В последнее время чуть ли не каждый год Google представляет разные полезные штуки для разработчиков: Jetpack Compose, Navigation Component, Data Store и прочие Security Identity Credentials.

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

Что касается Navigation Component, то эта библиотека показывает себя хорошо как инструмент для несложных приложений. С ее помощью можно быстро накидать навигацию и неплохо ею управлять. Ребята подметили, что было бы совсем хорошо, если бы Google добавил туда быструю генерацию графа.

Подробное обсуждение Dagger/Hilt и Anvil с 01:02:02.

Не Google единым (можно и Huawei, но по чуть-чуть)

В свободном Android-мире есть не только Google, который в студии поругали. Существует ещё и корпорация Huawei, создавшая интересный прецедент на рынке.

Кто не в курсе: Huawei сделала свои аналоги сервисов Google, кроме того, и интерфейс кодлабов был скопирован практически один в один. Компания хорошо вложилась в маркетинг для освещения всей этой истории. Итог — по продажам своих смартфонов Huawei вышла в топ, обогнав даже «гигантских гигантов» Apple и Samsung. Правда, в основном это случилось из-за китайского рынка, уверен Рома.

Стоит заметить, что эта ситуация открывает определенные возможности: хорошо, когда есть выбор и существует не только Google. Если и другие крупные компании начнут предоставлять альтернативу Google Play Services, то это будет полезно для всех. Но это неминуемо добавит проблем разработчикам. Например, с фрагментацией. Появление вторых, третьих и т.д сервисов заставит знать десять разновидностей одного и того же.

Пара слов о кроссплатформенной разработке

Рядом с Android- и iOS-разработкой развивается отдельный и достаточно большой мир кроссплатформенной разработки.

В нем есть как традиционные подходы, работающие до сих пор, так и пара новинок, которые очень активно обсуждаются внутри комьюнити последние года два. Речь о Flutter и Kotlin Multiplatform.

Насколько же они удобны и применимы? Гости в студии единогласно решили, что «Flutter не хватает Kotlin». А подробнее с 01:15:27.

Строили и построили: архитектура Android-приложений

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

«Конечно же, в голове общие подходы проектирования держать нужно, но "натягивать сову на глобус не стоит"», — говорит Артем. Если бизнес-задачи не ложатся в привычный clean и MVVM, следовательно, не нужно их использовать. Вот и все.

Важно понимать, что архитектура — это не инструкция, а набор решений, которые можно применить в работе. Вася Червон объяснил это так: «Ты знаешь, что плита должна иметь определенный вес, чтобы не раздавить стены, или же стены должны быть настолько прочными, чтобы ее выдержать. И чтобы строить, необходимо держать эти правила в голове».

Это всё вопрос опыта, поэтому, если разработчик не очень понимает, какую архитектуру нужно делать, то стоит проконсультироваться со старшим товарищем. Но, конечно, не с тем, кто скажет: «Делай MVVM, это круто».

Для эффективных архитектурных решений нужно читать много книг по проектированию систем, чтобы понимать, в каких ситуациях какие решения могут меняться и как их применять. Подробнее о книгах поговорили с 01:35:06.

Полезные материалы

Предыдущие выпуски «Сушите вёсла»

Слушайте нас там, где удобно: YouTube, Soundcloud, Apple Podcasts, Google Podcasts

Давайте обсудим выпуск в Telegram-чате.

1919
1 комментарий

Спасибо большое, очень интересно послушать :) По поводу кроссплатформенных приложений: мне еще очень нравится подкаст от разработчиков на Flutter, называется Flutter Dev Podcast