ANDROID SCHOOL.RU - Android на практике – Telegram
ANDROID SCHOOL.RU - Android на практике
996 subscribers
19 photos
1 video
235 links
Делюсь опытом, пишу статьи по Android. Пошаговые инструкции с примерами, помогут разработать готовое приложение.
📌Курс по System Design https://clck.ru/3MdggN
📌Менторинг https://clck.ru/3HseCY
Download Telegram
​​📌Как отрефакторить код на примере паттерна Шаблонный метод.

Почему-то большинство статей про паттерны демонстрируют какие-то нереальные примеры с квадратиками/кружочками/котиками и т.д. Но мало примеров которые прямо в реальном проекте показывают: вот так было плохо, а вот теперь хорошо и почему. Написал для вас статью с примером из реальной жизни Android-разработчика, которая прямо на примере показывает плохое решение с последующим рефакторингом с применением паттерна Template. Прямо бери и внедряй.

В больших проектах с множеством логики, порой возникает момент, когда логика вобщем то базовая одинаковая, но вот конкретные шаги отличаются, например от типа данных. И тогда в дело вступает конструкция if else. А дальше, все как в тумане и вот у вас уже нечитабельная лапша 🍝 из миллиона if-ов. Признавайтесь, у кого такое было?

В этой статье мы рассмотрим один из паттернов проектирования, который существенно поможет вам сделать код читаемым, облегчая повторное использование кода. В этом нам поможет поведенческий паттерн, который называется Шаблонный метод или Template.

Ссылка на статью c примерами кода

@android_school_ru
Переиспользование логики в тестах через аннотацию Rule

Эта статья будет посвящена одной из аннотаций JUnit, а именно поговорим про аннотацию Rule. Рассмотрим для чего она нужна и на примере тестирования базы данных создадим собственно правило для переиспользования нужной нам логики.
Перейти
#rxjava3 #retrofit
Программирование на RxJava 3.0 для Android

🚀Новый туториал будет интересен тем, кто хотел на практике освоить RxJava3. Библиотека RxJava - уже давно стала стандартом в мире разработки мобильных приложений. В этом мини-курсе вы научитесь использовать основные возможности Rx для повышения эффективности ваших приложений. Мы рассмотрим концепцию реактивного программирования, научимся писать многопоточный код и использовать основные операторы Rx.

В результате вы на базовом уровне освоите RxJava и сможете использовать в своих Android-приложениях эту библиотеку для сетевых запросов, взаимодействия с UI, осуществления запросов к БД и многое другое.

📚Ссылка на туториал
Не забудьте оставить комментарий к туториалу и поставить лайки репозиторию с исходным кодом. P.S. Скоро будет и Flow 😉

Канал @android_school_ru
В ближайшее время 20 мая буду выступать на конференции Merge в Иннополисе, так что если планируете участвовать буду рад встретиться. Описание доклада и тезисы можно посмотреть тут https://innopolis2022.mergeconf.ru/development/mobile/valuysky
📌Паттерн Стратегия - гибкость или излишняя сложность?

Начинающие разработчики часто имеют проблемы с разделением presentation-слоя и domain. Репозитории вроде бы все научились создавать, но часто их создают просто потому что "так принято" и не осознают гибкости при работе с ними. А гибкость как раз достигается за счёт паттерна Стратегия, который скорее всего многие использовали, но не знали что это он. Так что в этой статье рассмотрим плюсы, которые предлагает этот паттерн и применим его на реальном примере.

Пример паттерна стратегия
👍1
#многомодульность #архитектура
Принципы построения многомодульных Android-приложений

Современные Android-приложения уже давно переваливают за несколько сотен экранов. Во всех проектах где я работал, так или иначе приходили к разбиению приложения и переходу от монолитного app-модуля до нескольких feature-модулей. Где-то сразу проектировали модули, где-то при масштабировании проекта. Как раз и на текущем проекте мы в команде активно распиливаем монолитные модули, поэтому последнее время уделяю много внимания теме многомодульности. Совсем недавно Google добавил несколько рекомендаций по этой теме. Решил перевести статью и выложить на хабр, на родном языке читать приятнее, да и давно в рунете не было на эту тему свежих статей. В комментариях к статье уже начался холивар на тему многомодульности, так что накидывайте аргументы.
https://habr.com/ru/post/687882/
👍16🔥1
​​Смешиваем Android-разработку с музыкой и получаем крутой летний Android Meetup.

🤘Друзья, всем привет, у меня есть крутая новость. Напомню, сейчас я работаю лидом платформенной команды в стриминговом сервисе Звук.Наша платформенная команда создаёт инструменты для разработки и улучшает функциональность.

📌 А в следующий четверг 29 июня я приглашаю вас на самый клевый Android Meetup, который будет проходить в музыкальном пространстве Студио.

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

🎸 Ну а в конце много общения, afterparty с Dj, вайбом домашней вечеринки и легкими закусками. Регистрируйтесь и приходите в Москве или онлайн. Буду всех ждать!
PS. А еще мы ищем Android-разработчиков - пишите в личку, расскажу.

Регистрация и подробная программа тут
👍4🔥2
ANDROID SCHOOL.RU - Android на практике pinned «​​Смешиваем Android-разработку с музыкой и получаем крутой летний Android Meetup. 🤘Друзья, всем привет, у меня есть крутая новость. Напомню, сейчас я работаю лидом платформенной команды в стриминговом сервисе Звук.Наша платформенная команда создаёт инструменты…»
🤘В прошлый четверг выступил на Android-митапе в Звуке, где я являюсь лидом Android-платформы.

Рассказал о том какой путь мы прошли от обычной Android-команды из пары человек в отдел мобильной разработки из 25 Android-разработчиков, работающих в 10 продуктовых и платформенной команде. Особое внимание уделил рефакторингу и работе с техдолгом, а также показал пример Roadmap'a платформенной команды.

Вообще Android-митап вышел очень структурным, сначала я рассказал о платформе, а потом ребята из платформы поделились своим опытом: как разрабатывали дизайн-систему в Звуке и как работает музыкальный плеер.

А на afterparty с Dj получилось классно пообщаться с разработчиками из других компаний, и обсудить темы из докладов. Ну а тем, у кого не получилось придти или посмотреть, делюсь записью митапа
🔥7🤩2
​​👨‍💻 Зачем ходить на конференции? Выводы и ссылка на доклады

На прошлой недели посетил в Сколково крупнейшую конференцию для тим и техлидов TeamLead Conf 2023. Напомню, что являюсь тимлидом платформенной команды в стриминговом сервисе Звук, где мы занимаемся архитектурой и оптимизациями проекта.

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

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

📚Ну и в качестве бонуса плейлист на все доклады прошлой конференции, будет полезно не только тимлидам, но и тем, кто хочет ими стать или улучшить софт-скилы.
👍5🤩2🔥1
📚 Реальные задачи на System Design собеседовании для мобильного разработчика

В этом посте расскажу что ожидать от секции System Design мобильному разработчику.
Если погуглить - то первое что вы увидите, это вопросы как спроектировать поиск или известный мессенджер. Однако, собеседование для мобильного разработчика и бэкенд очень сильно отличаются, поэтому цель поста именно сконцентрироваться на задачах для мобильных разработчиков.

Итак, какого типа задачи ожидать на System Design интервью для мобильного разработчика? Это реальные задачи которые я видел:

📌 Спроектировать приложение прогноз погоды.
📌 Спроектировать банковское приложение для отслеживания котировок акций.
📌 Спроектировать приложение для отслеживания заказа.
📌 Спроектировать приложение редактор картинок

Таким образом, на позиции мобильного разработчика от вас никто не ждет что вы сможете спроектировать высоконагруженный бэкенд, однако иметь представление о сетевом слое все-таки необходимо. Вы должны уметь рассказать о плюсах и минусах например REST API vs GraphQL и доказать почему именно REST подойдет вашему приложению которое вы проектируете.

О чем еще неплохо порассуждать и показать что вы знаете о чем говорите:

📌 Реляционные БД vs No-SQL решения
📌 Server-Driven UI
📌 Способы тестирования и плюсы минусы тех или иных подходов
📌 MVP vs MVVM vs MVI.

Сказать что я всегда использую MVVM и поэтому буду использовать его на новом проекте - это красный флаг. Вы должны описать достоинства и недостатки и исходя из вашего опыта предложить оптимальное решение.

Ну и напоследок, самое главное что от вас ожидают на System Design интервью - это способность задать уточняющие вопросы, предложить идеи. Не начинайте рисовать диаграммы пока не спросите 5-10 вопросов. Если молча начать проектировать архитектуру - это красный флаг.

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

- Набор примеров задач для System Design Interview
- System Design. Подготовка к сложному интервью. Автор:Алекс Сюй
- System Design Template
- System Design CheatSheet
👍7🔥1
⚙️ Взламываем System Design интервью для мобильного разработчика.

Как и обещал, написал детальную статью по System Design интервью для мобильных разработчиков. Тут кратко расскажу про этапы и рекомендации, а на хабре более подробно с примерами и диаграммами. https://habr.com/ru/articles/781404/

В зависимости от процессов найма в компании на System Design у вас будет скорее всего около 1 часа. Это супер мало, поэтому четко планируйте время и старайтесь придерживаться следующего тайминга:

1️⃣ Понять условие задачи и собрать требования (5-10 минут). На этом этапе важно собрать как можно больше требований и досконально понять проблему какую вам нужно решить. Иногда вам могут дать уже какую-то заготовку, например скриншот какого-то приложения и спросить как спроектировать функционал показанный на этом скриншоте. На данном этапе приветствуется задавать вопросы. В первую очередь запишите что именно будут делать пользователи, опишите возможные сценарии использования.

2️⃣ Построение общей архитектуры верхнего уровня. (10-15 минут).

На этом этапе вы уже можете брать виртуальный маркер и начать рисовать верхнеуровневую диаграмму. Вам необходимо нарисовать блоки с ключевыми компонентами системы. Если говорить про Android-разработку, то нужно упомянуть принципы Clean Architecture и разделение по слоям. Комментируйте вслух почему вы решили использовать тот или иной компонент, какая у него будет ответственность. Например: DataSource будет отвечать за кэширование данных, потому что мы будем использовать offline-first подход.

3️⃣ Детальное описание каждого компонента вашей архитектуры и выбор решения. (20 минут).

На данном шаге вы согласовали требования и спроектировали примерную архитектуру. Теперь необходимо углубиться в каждый из компонентов и описать как бы вы реализовывали тот или иной компонент. Имея список компонентов (в реальном интервью он у вас на схеме перед глазами) вам необходимо пройтись по каждому и рассказать плюсы минусы альтернативных решений и почему вы выбрали именно это. Например реализация кэширования через Room vs Realm, использование сокетов или Rest API и т.д.

4️⃣ Подведение итогов и ответы на вопросы. (10 минут).

На этом этапе вам могут задать вопросы о каких-то отдельных аспектах или попросить рассказать о проблемных местах и потенциальных улучшениях. Кроме этого будет хорошо, если вы успеете затронуть и эксплуатационные вопросы

Рекомендации

🗣️ Не стесняйтесь задавать вопросы и уточнять требования.Общайтесь с интервьюером как будто это ваш тимлид или коллега с которым вы вместе проектируете решение, но в то же время показывайте что вы автономны и можете быть самостоятельной единицей.

 Следите за временем. Интервьюер может вас отвлекать - ваша задача максимально полно представить решение за короткий срок. Заранее ознакомьтесь со средой в которой будете рисовать. Это может быть Draw.io, Excalidraw.

🤝 Попробуйте мок интервью. Попросите ваших коллег или поищите наставника, которые могут послушать вас и провести тестовое собеседование еще до того как вы упустите оффер своей мечты
👍5🔥1
Друзья, поздравляю с Новым 2024 Годом! Желаю вам исполнения желаний и покорения новых высот!
15👍1
​​🚅 Простое объяснение работы Sequence API в Kotlin.

Представляю вам отличное объяснение работы Sequence в Kotlin. Материал настолько мне понравился, что я решил перевести статью и картинки и поделиться ее с русскоязычным комьюнити android-разработчиков. Буквально сегодня на одном из собеседований я задал вопрос про отличия и кандидат не смог ответить. Если вы смутно представляете в чем разница работы Sequence vs Collection API, то не поленитесь потратить 5 минут и разобраться. Тем более с картинками все проще чем кажется. Прочитать статью
🔥9👍1
⚙️Используем join в SQLite-запросах Room для android

В одной из версий Room была добавлена удобная фича, которая упрощают написание методов DAO и позволяет возвращать данные запросов в формате Map<key,value>. В этом посте мы вспомним про форматы JOIN в SQLite и напишем простой пример, демонстрирующий новую фичу в Room. Если совсем кратко, то теперь необязательно создавать дополнительный класс-холдер для получения результата. Такой результат мы можем получить, используя inner join.

https://habr.com/ru/articles/570400/
👍3
📹 Анонс моего YouTube-канала о мобильной разработке AndroidHeroes

Всем привет! Давно была идея создания обучающего YouTube-канала c видеоуроками, но, как обычно всегда не хватало на это времени. На январских праздниках собрался, написал тексты и обновил демо-проект и записал первый урок. Надеюсь, первый блин не комом.

Идей для будущих видео много: это и обучающие туториалы, интервью с разработчиками на тему разработки, советы и лайфхаки по карьере.

Если считаете полезным такой формат, пишите в комментариях какие темы были бы полезны, ставьте лайки и подписывайтесь.Первая серия уроков будет посвящена кэшированию локальных данных на базе Room. Кстати, как вам название?
🔥123
📹 Как сохранить список объектов в ORM Room?

В моем текущем проекте у нас огромная БД с большим количеством разных таблиц и связей между ними. Ну оно и понятно: офлайн-режим для музыкального плеера является одним из важнейших требований. Ну и чтобы человек мог придти на проект и сразу не испугался работы с БД на собеседованиях есть отдельная секция по такого рода вопросам. И порой разработчики не понимают как работать с базой, как настроить связи и вообще предлагают все сохранять в виде json-строки. Поэтому записал видео для YouTube на тему построения связей в Room, и обновил проект на GitHub по теме relations.

https://youtu.be/CzgdEw2MuUw
🔥7
💬 Как AI Copilot поможет вам быть эффективнее

Недавно, с ребятами из интенсива разбирали карьерные лайфхаки и вопросы. Был интересный вопрос про сопроводительное письмо: насколько подробно его писать и где взять столько времени на это. В РФ на мой взгляд такие письма менее популярны, но в целом если вы его напишите - то покажете свою заинтересованность и мотивацию.

Однако, если вы откликаетесь на зарубежные вакансии, то вы будете удивлены, насколько это трудозатратный процесс. Помимо вопросов про вашу расу, ориентацию и пол, есть поле для сопроводительного письма.

Для написания качественного письма нужно потратить 30-50 минут, особенно если не на родном языке. И тут хочу рассказать вам про использование встроенного генеративного AI, который поможет вам сэкономить время.

Есть такой почтовый клиент Canary Mail. И одна из его фишек - это AI который помогает вам писать письма. Просто составляете запрос как для ChatGPT и вуаля - сопроводительное письмо в компанию мечты готово. Работает бесплатно и без VPN.
🔥2👏2
📚 Диаграмма по System Design для мобильного разработчика

В последнее время даже в РФ в БигТехе, часто вместо однообразных вопросов, типа перечислите все методы класса object, добавляют секцию по System Design. Как его пройти и на чем нужно сконцентрироваться именно мобильному разработчку я писал в блоге

А в этом посте хотел поделиться классной диаграммой, наглядно описывающей каждый шаг.
👍6