Android | Михаил Белый
310 subscribers
272 photos
32 videos
127 links
Авторская песочница о карьере в IT в роли Mobile Dev (Android, Kotlin, Multiplatform) и разных вещах, которые мне интересны.

Посты каждый день в 5 вечера.

Автор: @michaelbel

Забустить: t.me/boost/foundout

Задонатить: boosty.to/michaelbel
Download Telegram
Как совмещать 2 дейли

Возможное пересечение созвонов – частая причина отказа от многоработничества. Я несколько лет отработал в двух конторах и в один год у меня наложились 250 звонков. Работодателей об этом не извещал. Расскажу как это выглядело на практике.

Дейли – это созвон команды. Проходит каждый день, что понятно из названия. Помогает синхронизироваться: кто чем занят, какие блокеры, нужна ли помощь. Обычно разработчики трудятся в Agile-командах пять дней в неделю с утра и до вечера. Даже в Новосибирске пляшут по московскому часовому поясу, поэтому дейли проходит утром в интервале 9:00-12:30. Распространенные слоты – 11:00, 11:30 и 12:00. Чем больше команда, тем дольше дейли. Четверо укладываются в пять минут, двадцати может не хватить и получаса. Сократить время дейли – распространённая цель команд.

Итак. Два дейлика проходят в 11:00 по будням. Созвон без камеры. Для звонков используют Zoom, Google Meet, Microsoft Teams, Slack или аналогичные сервисы. Доступно отключение микрофона и источника вывода звука.

Какие форматы встречались
• Классический. Поочередный опрос каждого: «что делал вчера, что будешь делать сегодня». Порядок иногда играет на руку. Если опрашивают по алфавиту, Яковлев отвечает последним. Или опрашивают по расположению имен в Jira. Либо сначала фронтендеров, потом бэкендеров. Постепенно проявляется закономерность – я размьючиваю микрофон в 11:15.
• Проектный. Опрашивают тех, кто участвует в проектах, которые в работе. Молчишь каждый второй созвон.
• Проблемный. Сначала обсуждаются блокеры, потом текущие задачи. В этом случае свои проблемы лучше порешать в течение рабочего дня, чтобы не отвлекаться на звонке.

Подключаться на звонки нужно с двух устройств – два компа, комп + телефон. Чтобы мозг не плавило, лучше не использовать две пары наушников. На первом устройстве выводим звук через динамики, на втором через один наушник. Мозг человека не поддерживает многозадачность, но может быстро переключаться между тасками. Так проще оставаться в контексте каждого дейли.

Когда очередь отвечать на первом дейли – размьючиваем микрофон и говорим. Когда отвечаем на втором дейли – убавляем динамик на первом. Это единственное слабое место процесса. Мы выпадаем из контекста приглушенного звонка. Но на практике значимые детали редко упускаются.

Дергают одновременно на двух дейли
И такое случается. Второй рот в этот момент не отрастет. Выбираем приоритетный звонок, а второй оставляем на мьюте. После спича (лучше краткого) появляемся на втором дейли, если встреча еще идет, и просим повторить вопрос. Жалуемся на медленный интернет, разрядившиеся наушники, клятого курьера.

Дальше проще
Первые пару недель сложно. Как известно, мозг нейропластичен и неизбежно адаптируется к новым обстоятельствам. Сначала следишь за микрофонами, потом скатываешься в полнейший рассос. У меня созвоны сопровождались приготовлением завтрака, просмотром ютуба и разговорами с сожителями.

Награда
В 2 раза больше опыта, денег и стресса. Нарабатывается скилл планирования и приоритизации задач.

Легче проблему предотвратить, чем решать. Пересекающиеся созвоны – не приговор, но как же проще, когда они разнесены по времени.
1129521
Как Android-разработчику использовать ChatGPT

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

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

🐗Анализ ошибок билд-системы
Ошибки Gradle, минификации и процессоров аннотаций (Dagger, Retrofit) возникают постоянно и по миллиону причин. ChatGPT найдет решение: сходит в issues на гитхаб, проанализирует форумы, разберет логи, прочитает релизноуты и документацию. Достаточно скопировать ему логкат.

🐗Рисовать на канвасе, анимировать, делать виджеты
ChatGPT напишет код для отрисовки любой загогулины: от восьмиконечной звезды до лепестковой диаграммы. Добавит пульсацию, волны, скачки, пружины, морфинг и другие эффекты. Подберет цвета, которые сочетаются. Создаст виджет из ограниченного набора компонентов (Glance).

🐗Правила для линтеров
ChatGPT поможет настроить кастомные правила для Detekt и Lint. Пропишет инспекции для нейминга, сложности функций, глубины вложенности, устаревших API и утечек памяти.

🐗Документация и комментарии в коде
ChatGPT опишет сложный участок кода, функциональность класса или метода. Сгенерирует API-документацию. Предложит улучшения, чтобы текст стал понятнее.

🐗Решение алгоритмических задач
Методы решения алгоритмов давно известны: бинарный поиск, с возвратом, в ширину, в глубину, боком и с подскоком. ChatGPT в курсе и выдает оптимальный по памяти и времени код.

🐗Перевод строковых ресурсов
Плохие новости – у DeepL открылся денежный чакр. Хорошие – ChatGPT тоже отлично переводит. Без проблем локализует строки в strings.xml на другие языки.

🐗Автоматическое тестирование
ChatGPT силен в написании юнит и интеграционных тестов. Проверяет бизнес-логику и UI, предлагает шаблоны, использует JUnit, Espresso и Compose UI Test. Помогает протестировать большие участки кода.

🐗Написание SQL-запросов для Room
ChatGPT составляет сложные SQL-запросы, работает с таблицами и отношениями, умеет описывать миграции.

🐗Конвертация кода между Java, Kotlin и Swift
ChatGPT переводит код между языками, сохраняя логику и стиль. Полезно при смене стека или написании кроссплатформенных приложений.

🐗Написание GitHub Actions и GitLab-CI скриптов
ChatGPT напишет скрипты для автоматизации сборки, тестирования и деплоя Android-приложения. Сгенерирует .yml, настроит кэш Gradle, запустит тесты, опубликует сборку в Google Play. Сократит время на рутину и сбережет бесплатные минуты и гигабайты.

🐗Разбор кода, рефакторинг, оптимизация
ChatGPT объяснит, что делает конкретный кусок кода. Упростит его, улучшит читаемость и оптимизирует производительность. Сократит дублирование и адаптирует под бестпрактисы.

🐗Контент в заданном формате
ChatGPT напишет код для подключения артефактов в libs. Сгруппирует их в бандлы и добавит в модули.

Что делать людям

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

Чем больше у человека знаний, тем проще ему использовать нейросети. Опытный барсеточник с большей вероятностью увидит ошибки в сгенерированном коде. Это называется «проклятие эксперта»: ИИ полезен разбирающимся в теме, но запутает тех, кто только учится. Поэтому не прекращай расти над собой, какими бы умными не становились нейронки.
Please open Telegram to view this post
VIEW IN TELEGRAM
14922111
This media is not supported in the widget
VIEW IN TELEGRAM
28661
Android | Михаил Белый
This media is not supported in the widget
VIEW IN TELEGRAM
10531
Android | Михаил Белый
Поздравляю победителей!

Мои любимые опции премиума:

📍10 чатов в закрепах.
⚡️Дополнительные бусты.
📝Длинные посты с обложкой.
🔗Длинное био со ссылками.
ℹ️Расшифровка голосовых.
🤖Кастомные эмодзи и реакции.

Не обошлось без приключений на моем микроблогерском тракте. Как оказалось, после старта гива его сразу репостят в каналы-агрегаторы, которые волшебным образом (telegram api?) умеют узнавать о проводимых розыгрышах в публичных каналах. Каналы объединяют в папки. После этого на тебя подписываются сотни ботов (813 за 4 дня).

Но не на того напали 👊. Так как я считаю гивы кэшбэком за лояльность, боты своевременно получили поджопник и были кикнуты.

В любом случае весело, скоро повторим!
Please open Telegram to view this post
VIEW IN TELEGRAM
93311
🐗 Как стать Senior Android Developer – подробное исследование

Решил потратить свои лимиты на глубокие ресерчи. Тема сегодняшнего исследования: как миддлу стать синьором. Основано на данных из 30 источников.

TLDR 11 слов:
Уволиться из текущей компании и уйти в другую на грейд выше.

6840 слов:

Исследование разбирает путь от миддла до синьора, включая ключевые технические навыки, софты и карьерные возможности. Для роста важно глубоко знать Kotlin, Coroutines, Jetpack Compose. Разбираться в MVVM, MVI и Clean Architecture. Уметь работать с CI/CD и тестированием. Помимо технической экспертизы, сеньора отличает лидерство, коммуникация и понимание бизнеса. Он не просто пишет код, а решает сложные задачи, улучшает процессы и наставляет команду.

После Senior можно развиваться в техническую или управленческую сторону – стать архитектором, Principal Engineer или Team Lead. Чтобы ускорить рост, важно брать ответственность, участвовать в архитектурных решениях и активно помогать команде. Дополнительный рост дают менторство, выступления на конференциях и постоянное обучение. Сильные Android-разработчики остаются востребованными. Эксперты с широким взглядом на продукт особенно ценятся.

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

🐗 ЧИТАТЬ В NOTION

🐗 Слушать:

#deepresearch@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
8421
🐗 Решения 49 задач с CodeRun

В роадмап добавлено еще 49 решений задач с CodeRun – теперь их там 79. Всего в сервисе 571 задача, это в 6 раз меньше, чем на LeetCode. Есть вероятность закрыть их все.

Кафе
НОП с восстановлением ответа
Путь в графе
Путь спелеолога
Пересадки
Конвейер
Значение арифметического выражения
Поврежденный XML
Минимум на отрезке
Коммерческий калькулятор
Машинки
НВП с восстановлением ответа
Количество треугольников
Увлекательная игра
Два коня
Числа
Полиглоты
Пересечение множеств
Количество различных чисел
Треугольник Максима
Сапёр
Наибольшее произведение трех чисел
Наибольшее произведение двух чисел
Больше своих соседей
Ближайшее число
Определить вид последовательности
Возрастает ли список?
Узник замка Иф
Детали
Уравнение с корнем
Телефонные номера
Треугольник
Кондиционер
Клавиатура
Продажи
Банковские счета
Расшифровка письменности Майя
Дополнительная проверка на списывание
Стильная одежда
Сумма номеров
Туризм
Город Че
Красота превыше всего
Счет в гипершаках
Подстрока
Робот
Двоичный поиск
Приближенный двоичный поиск
Дипломы

#coderun@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
8431
🐗🐗 Обновление карьерного роадмапа

• Добавлены новые вопросы с собеседований.
• Отдельная страница для Material3.
• Новая страница HeadHunter.
• Новая страница Deep Research.
• Новая страница WearOS Samples.
• Новая страница XR Samples.

🐗 Getting Started
Добавлен курс по Jetpack Compose.
Добавлены примеры проектов в Android Studio.

🐗 Live Coding
Добавлена 1 новая задача из Сбера.

🐗 HeadHunter
Ответы для тестов по Git, Java, SQL, ООП, OKR, Scrum, Agile и English.

🐗 Computer Science
Добавлен плейлист по основам программирования.

🐗 Algorithms
Добавлены решения 91 задачи с LeetCode.
Добавлены решения 79 задач с CodeRun.

🐗 DevOps
Сервис Buildkite.
Сервис AppMetrica.

🐗 Java
Добавлено описание массивов.

🐗 Kotlin
Экранирование идентификаторов.
Trailing comma.
Описание buildString.
Описание кейворда set.
Collections. Описание Array, MutableIterable, Collection, MutableCollection, buildList, buildSet, buildMap.
Coroutines. Описание suspendCancellableCoroutine и CompletableDeferred, пример кода для Deferred.
Flow. Описание методов distinctUntilChanged, onStart, onCompletion, merge, mapLatest, withIndex, scan, runningReduce, runningFold.
Channels. Описание actor.

🐗 Android
Manifest. Описание всех параметров Application, <meta-data/>, <property/>, <uses-library/>, <uses-feature/>, <uses-permission/>, tools:node.
SDK. Описание аннотации CheckSdkIntAtLeast.
Activity. Описание ComponentActivity, FragmentActivity и AppCompatActivity.
Network. Описание формата JSON.
Build. Описание R8 Missing Rules.
UI. Описание strings.xml, синтаксис форматирования, нумерованные аргументы, экранирование символов.

🐗 Compose
Описание LocalActivity.
Описание модификатора Modifier.composed.
Описание аннотации NonRestartableComposable.

🐗 Gradle
Описание метода exclude для исключения зависимостей.
Описание свойства android.nonFinalResIds.
Описание свойства packaging.
Описание свойства networkTimeout.

🐗 Studio
Обновилось описание хоткеев.

🐗 Samples
Добавлено 5 Android-проектов.
Добавлено 3 WearOS-проекта.
Добавлен 1 XR-проект.
Добавлено 8 KMP-проектов.

🐗 ОТКРЫТЬ В NOTION

#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
125532211
🐗 Обновление эмодзипака

Добавлено 32 новых эмодзи.
Теперь их ровно 800.

🐗 Shazam

🐗 Apache Airflow

🐗 Apache Flink

🐗 Apache Nifi

🐗 Apache Spark

🐗 Jetbrains Junie

🐗 Grok

🐗 Data ai

🐗 Neural Love

🐗 DeepSeek

🐗 League of Legends

🐗 Perl

🐗 Lisp

🐗 Crystal

🐗 PureScript

🐗 MATLAB

🐗 Nim

🐗 Svelte

🐗 DBeaver

🐗 CodeImage

🐗 Autodesk

🐗 VLC

🐗 Bluetooth

🐗 Geekbench

🐗 Snapdragon

🐗 Debezium

🐗 Zebra Technologies

🐗 Beamery

🐗 OpenCV

🐗 OpenXR

🐗 Helm

🐗 Prometheus

Все паки: первыйвторойтретийчетвертыйпятый

Сайт и миниапп с названиями, поиском и фильтрами

#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
9422
🐗 Как Android-разработчику сохранять баланс и не выгорать на работе – подробное исследование

Внутри:
• Как удалёнка усиливает чувство изоляции и перегрузки.
• Как совмещать работу и личные проекты без вреда для кукухи.
• Что делать, если уже выгорел.

Приведены реальные истории инженеров и практические советы по восстановлению продуктивности и баланса. Использованы научные исследования и экспертные мнения.

🐗 ЧИТАТЬ В NOTION

🐗 Слушать:

#deepresearch@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
7511
Как работать час в день и всё успевать

Зачем сокращать рабочий день до минимума? Ведь социальные реформаторы еще сто лет назад придумали удобную схему – 8 часов на работу, 8 часов на отдых, 8 часов на сон. От рассвета до заката с перерывом на обед. Но сколько людей, столько и идей. Самыми распространенными причинами будут следующие:

• Выгорел – нужно время восстановиться.
• Учеба – вуз, переквалификация, изучение нового стека.
• Побочные проекты – блог, стартап, опенсорс, запуск курса.
• Вторая фуллтайм работа.
• Семья и дети – нужно больше личного времени.
• Финансы – увеличить доход в час.
• Здоровье – хронические болезни, падающее зрение, приближающийся тридцатник.
• Осознанный минимализм – сокращение нагрузки, смена образа жизни, перефокусировка.

Причины определены. Пора заканчивать геройствовать и начинать работать эффективно. Углы – срезать. Горы – обходить. Для этого придется перестроить подход к карьере следуя четырем шагам:

1. Выбрать подходящую компанию
Понять, как в компании идут дела можно еще на собесе. Есть две дорожки – высоконагруженная хасл культура или чилловая хакуна матата. Первые – классическое айти с выстроенными процессами, созвонами на каждый чих, необъятной базой знаний в конфлю и репой на тысячу модулей. На перекрас кнопки уйдет два дня, десять уровней согласований, аппрувов, ревью, тестов, автотестов и поэтапных раскаток. Кроме того, нужно не забыть затрекать время и списать трудозатраты. У второго типа компаний рабочая культура отличается кардинально. Дикий запад, удаленка, отсутствие процессов, асинхронная коммуникация и коммиты в мастер. Это будут банки из второй сотни, ритейлы и условные продавцы корма для собак. Компании, для которых мобильное приложение не смысл жизни, а дополнительный источник трафика. Чем меньше людей в компании, включая руководителя, будет понимать специфику твоей работы, тем лучше. Информационная асимметрия и атмосфера, пропитанная чувством свободы. Если в начале карьеры не получится поработать в подобной компании, велик шанс навсегда остаться слоном, прикованным к колышку.

2. Прокачать продуктовый опыт
Насмотренность важна. Новые задачи не роняют в тильт и долгие ресерчи. Чем больше повидал, тем меньше думаешь. Быстрее едешь по рельсам. Для этого нужно менять работу каждый год. Совмещать несколько проектов параллельно. Прыгать с проекта на проект внутри подразделения. Постараться поработать над всеми приложениями компании. Это приведет к тому, что за короткое время освоятся известные архитектуры и подходы в разработке. Работать станет легче.

3. Переиспользовать всё, к чему был доступ
В разработке все по сотому кругу повторяется и переиспользуется. Важно не тратить драгоценное время на написание нового функционала. Рабочие репозитории, к которым был доступ нужно непременно утащить себе на хард и не удалять после увольнения. Решения, которые применялись, должны быть в быстром доступе для имплементации уже на новом месте работы. Роадмапы, генераторы шаблонов и AI-ассистенты – наши лучшие друзья.

4. Правильно выбирать задачи и управлять сроками
Хорошая задача выглядит сложной, но решается легко. Если есть возможность выбирать – забирать таски, с которыми был аналогичный опыт ранее. А также задачи с контролируемой зоной ответственности. Чем больше у задачи связей и исполнителей, тем медленнее и непредсказуемее она двигается по канбан-доске, и наоборот. Сроки задач необходимо завышать кратно – x2 или x3. Коллеги с первого дня должны привыкнуть к твоему размеренному темпу работы. Без воспитания в себе оппортунистического поведения каши не сварить.

Нет ничего невозможного, если очень захотеть. Желаю тебе меньше работать и больше времени уделять своим личным радостям.
11842111
🐗 Решения 49 задач с CodeRun

В роадмап добавлено еще 49 решений задач с CodeRun. Теперь их там 128.

Ход конём - 2
Движение по полосам
Симметричная последовательность
Чемпионат по метанию коровьих лепешек
Метро
Улучшение успеваемости
Пирамида
Треугольники
Космическое поселение
Расстановка ноутбуков
Очень лёгкая задача
Площадь
Провода
Субботник
Медиана объединения
Наблюдение за студентами
Точки и отрезки
Кассы
Высота дерева
Глубина добавляемых элементов
Второй максимум
Обход
Вывод листьев
Вывод развилок
Вывод веток
АВЛ-сбалансированность
Родословная: число потомков
Родословная: подсчёт уровней
Гистограмма
Красивая строка
Коллекционер Диего
Минимальный прямоугольник
Скучная лекция
Стек с защитой от ошибок
Правильная скобочная последовательность
Постфиксная запись
Сортировка вагонов lite
Великое Лайнландское переселение
Очередь с защитой от ошибок
Дек с защитой от ошибок
Хипуй
Пирамидальная сортировка
Три единицы подряд
Кузнечик
Мягкие подстилки
Уникальные элементы
Все дороги ведут в Рим
Прокачай героя
Уникальные пользователи

#coderun@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
43211
Что будет, если не указать активити в манифесте.

Это же касается сервисов и контент провайдеров.

В случае с манифестом последние версии IDE хотя бы предупреждают о пропущенном декларировании. А вот при запуске стороннего приложения через интент лучшая практика - отлавливать возможный ActivityNotFoundException в try-catch.
94221
🐗 Подтверждение навыка API

На hh добавили новый навык, который можно подтвердить. Внутри – про работу с методами, постраничную загрузку, фильтрацию, асинхронность и аутентификацию.

Доступно 3 теста:
• Базовый – 10 вопросов за 10 минут.
• Средний – 12 вопросов за 15 минут.
• Продвинутый – 15 вопросов за 20 минут.

ОТВЕТЫ В РОАДМАПЕ

#hhskills@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
9531